안녕하세요 길벗수험서 운영팀입니다.
먼저 디버깅에서는 잘못된 점이 보이지 않습니다. 좀 더 정확성을 기하기 위해서는 while(i>1)을 한 시점을 파악할 수 있도록 디버깅 표에 추가하는 것도 괜찮아 보이네요.
코드를 서술로 진행해보면,
먼저 i가 10, hap이 0으로 초기화된 상태에서 while문으로 진입합니다.
while(10 >1) True
1. i는 9가 되고,
2. 9를 3으로 나눈 나머지는 1이 아니므로 hap의 값은 변동이 없습니다.
while(9 >1) True
3. i는 8이 되고
4. 8을 3으로 나눈 나머지는 1이 아니므로 hap의 값은 변동이 없습니다.
while(8 >1) True
5. i는 7이 되고
6. 7을 3으로 나눈 나머지는 1이므로 hap에 7을 누적합니다. (hap=7)
while(7 >1) True
7. i는 6이 되고
8. 6을 3으로 나눈 나머지는 1이 아니므로 hap의 값은 변동이 없습니다.
while(6 >1) True
9. i는 5가 되고
10. 5를 3으로 나눈 나머지는 1이 아니므로 hap의 값은 변동이 없습니다.
while(5 >1) True
11. i는 4가 되고
12. 4는 3으로 나눈 나머지는 1이므로 hap에 4를 누적합니다. (hap=11)
while(4 >1) True
13. i는 3이 되고
14. 3을 3으로 나눈 나머지는 1이 아니므로 hap의 값은 변동이 없습니다.
while(3 >1) True
15. i는 2가 되고
16. 2를 3으로 나눈 나머지는 1이 아니므로 hap의 값은 변동이 없습니다.
while(2 >1) True
17. i는 1이 되고
18. 1을 3으로 나눈 나머지는 1이므로 hap에 1을 누적합니다. (hap=12)
while(1 >1) False
19. i가 i>1을 만족하지 않으므로 while문을 빠져나가 hap을 출력합니다.
답 : 12
위에서 16~19 과정을 살펴보세요. i가 2일 때 while 조건문을 지나 i--를 만나 i는 1이 되고 if문을 만나 hap에 1이 더해집니다. i가 1인 상태에서 while문을 만나 while(1>1) 을 수행하게 되는 시점은 이미 1이 더해진 이후라는 점에 유의하세요.
행복한 하루되세요 :)
-
관리자2019-08-20 10:47:09
안녕하세요 길벗수험서 운영팀입니다.
먼저 디버깅에서는 잘못된 점이 보이지 않습니다. 좀 더 정확성을 기하기 위해서는 while(i>1)을 한 시점을 파악할 수 있도록 디버깅 표에 추가하는 것도 괜찮아 보이네요.
코드를 서술로 진행해보면,
먼저 i가 10, hap이 0으로 초기화된 상태에서 while문으로 진입합니다.
while(10 >1) True
1. i는 9가 되고,
2. 9를 3으로 나눈 나머지는 1이 아니므로 hap의 값은 변동이 없습니다.
while(9 >1) True
3. i는 8이 되고
4. 8을 3으로 나눈 나머지는 1이 아니므로 hap의 값은 변동이 없습니다.
while(8 >1) True
5. i는 7이 되고
6. 7을 3으로 나눈 나머지는 1이므로 hap에 7을 누적합니다. (hap=7)
while(7 >1) True
7. i는 6이 되고
8. 6을 3으로 나눈 나머지는 1이 아니므로 hap의 값은 변동이 없습니다.
while(6 >1) True
9. i는 5가 되고
10. 5를 3으로 나눈 나머지는 1이 아니므로 hap의 값은 변동이 없습니다.
while(5 >1) True
11. i는 4가 되고
12. 4는 3으로 나눈 나머지는 1이므로 hap에 4를 누적합니다. (hap=11)
while(4 >1) True
13. i는 3이 되고
14. 3을 3으로 나눈 나머지는 1이 아니므로 hap의 값은 변동이 없습니다.
while(3 >1) True
15. i는 2가 되고
16. 2를 3으로 나눈 나머지는 1이 아니므로 hap의 값은 변동이 없습니다.
while(2 >1) True
17. i는 1이 되고
18. 1을 3으로 나눈 나머지는 1이므로 hap에 1을 누적합니다. (hap=12)
while(1 >1) False
19. i가 i>1을 만족하지 않으므로 while문을 빠져나가 hap을 출력합니다.
답 : 12
위에서 16~19 과정을 살펴보세요. i가 2일 때 while 조건문을 지나 i--를 만나 i는 1이 되고 if문을 만나 hap에 1이 더해집니다. i가 1인 상태에서 while문을 만나 while(1>1) 을 수행하게 되는 시점은 이미 1이 더해진 이후라는 점에 유의하세요.
행복한 하루되세요 :)