15.5 심사문제를 풀어보았는데, 조금 이상한 생각이 들었습니다.
, 이 창훈님이 작성15.5 심사문제를 풀어보았는데, 조금 이상한 생각이 들었습니다
우선 답안은 아래와 같이 작성했습니다.
------------------------------------------------
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int n,n1,n2,n3,n4,n5;
scanf("%d", &n);
n1=n%10;
n2=((n%100)-n1)/10;
n3=((n%1000)-n2)/100;
n4=((n%10000)-n3)/1000;
n5=((n%100000)-n4)/10000;
printf("%d %d %d %d %d\n", n1, n2, n3, n4, n5);
return 0;
}
-----------------------------------------------------------
심사도 통과하긴 하는데,,
예시인 43561을 넣어 천천히 생각해보면
n1=43561%10 =1(n1은 1이 됩니다.)
n2=((43561%100)-n1(1))/10=6(n2는 6이 됩니다.)
여기서부터 이상합니다
n3=((43561%1000)-n2(6))/10=???
n2가 60이여야 하는데 실제로는 6이잖아요?
그러면 6을 넣어 계산하면 엉뚱한 답이 나올겁니다.
그런데 막상 코드를 작성해보면 n3가 5로 올바르게 나오는 것으로 보아 n2자리에 60이 들어가는게 맞는 것 같은데..
n2을 60으로 봐야 할까요? 6으로 봐야할까요?
회신: 15.5 심사문제를 풀어보았는데, 조금 이상한 생각이 들었습니다.
, 도장_ 관리자님이 작성Unit 6 디버거를 사용해서 한 단계씩 실행해보거나
계산하는 각 줄과 printf에 중단점을 걸어서 확인해보세요.
직접 값이 변하는 것을 따라가면서 이해해보세요.
디버거에서 n2 = 6으로 나옵니다.