jokj624   4년 전

#include //안되는 코드
#include
int cal(char num[]);
int main() {
char num[1000] = { 0 };
int sum;
scanf("%s", num);
while (num[0]!=0) {
sum=cal(num);
printf("%d\n", sum);
num[0] = '\0';
scanf("%s", num);
}
return 0;
}

int cal(char num[]) {
int sum=0;
int i = 0;
for (i = 0; i < strlen(num); i++) {
sum += (num[i]-'0');
}
if (sum>=10) {
sprintf(num, "%d", sum);
cal(num);
}
return sum;
}

둘의 차이가 마지막 함수 리턴에 else 쓰고 안쓰고 인데 왜 다른 걸까요?,, 

else를 안쓰면 sum이 10보다 커도 그냥 return 해버려요 ..

cmychs   4년 전

저도 자세히는 모르지만 아마 이거 떄문인거 같네요

수정해야할 부분

char num[1000] = { 0 };

// 1000자리가 최대라 했으므로 마지막에 '\0'이 들어가기 위하여 num[1001]로 설정해주셔야 합니다.

while (num[0]!=0) {

// 종료문을 위해서 while(num[0] == '0')로 해주셔야할 것 같아여

25번째 줄 cal(num);

// sum이 10을 넘을 경우 다시 sum 값을 구하는 것이니

sum = cal(num); 로 바꿔주시면 else 없애셔도 값이 나올것 같아여!

댓글을 작성하려면 로그인해야 합니다.