문제 11 · break가 있는 while 루프
문제 11 [2점]
아래 코드의 num, sum은 어떤 값을 갖는지 쓰시오.
cpp
int num = 20, sum = 0;
while (num > 0) {
if (!((num % 4 == 0) || (num % 6 == 0)))
break;
sum += num;
num--;
}풀이 및 해설
num이 4의 배수 또는 6의 배수인 동안만 누적하고, 그렇지 않은 수를 만나면 break로 즉시 종료합니다.
num | 4의 배수 or 6의 배수? | 동작 |
|---|---|---|
| 20 | 참 (20 = 4×5) | sum = 20, num → 19 |
| 19 | 거짓 | break |
num = 20:(20%4==0) || (20%6==0)= 참 →!참 = false→break안 함.sum = 20,num = 19.num = 19:19%4 = 3,19%6 = 1이므로 둘 다 거짓 →!false = true→break.
루프를 빠져나올 때 num = 19, sum = 20.