결과는 12 라고 했는데요
int i = 10, hap = 0;
while (i > 1) // i = 10 // i = 7 // i = 4
{
i-;
if (i%3 == 1) // 10%3 == 1 // 7%3 ==1 // 4%3 == 1
hap += i; // hap = 0 + 10 // hap = 10 + 7 // hap = 17 + 4
}
...
10 부터 시작해서 더해야 되는거 아닌가요?
왜 i = 10 은 합이 0부터 인거죠?
혹시
10-
9%3
9-
8%3
8-
7%3 == 1 // hap = 0+7
7-
6%3
6-
5%3
5-
4%3 == 1 // hap = 7+4
4-
3%3
3-
2%3
2-
1%3 == 1 // hap = 7+4+1
후자인건가요?
안녕하세요.
i는 10을 hap은 0으로 가지고 시작합니다.
while 문은 i가 1보다 큰 동안 반복합니다. 즉 1과 같으면 종료됩니다.
i-- 에 의해 i는 1 감소합니다. i는 9가 됩니다.
i % 3, 즉 9 % 3의 나머지는 0입니다. 그러므로 조건을 만족하지 않습니다.
다시 while문을 반복합니다.
i-- 에 의해 i는 1 감소합니다. i는 8이 됩니다.
i % 3, 즉 8 % 3의 나머지는 2입니다. 그러므로 조건을 만족하지 않습니다.
다시 while문을 반복합니다.
i-- 에 의해 i는 1 감소합니다. i는 7이 됩니다.
i % 3, 즉 7 % 3의 나머지는 1입니다. 조건을 만족하므로 hap에 i를 누적합니다. hap은 7이 됩니다.
다시 while문을 반복합니다.
i-- 에 의해 i는 1 감소합니다. i는 6이 됩니다.
i % 3, 즉 6 % 3의 나머지는 0입니다. 그러므로 조건을 만족하지 않습니다.
다시 while문을 반복합니다.
i-- 에 의해 i는 1 감소합니다. i는 5가 됩니다.
i % 3, 즉 5 % 3의 나머지는 2입니다. 그러므로 조건을 만족하지 않습니다.
다시 while문을 반복합니다.
i-- 에 의해 i는 1 감소합니다. i는 4가 됩니다.
i % 3, 즉 4 % 3의 나머지는 1입니다. 조건을 만족하므로 hap에 i를 누적합니다. hap은 기존 7에 4를 더해 11이 됩니다.
다시 while문을 반복합니다.
i-- 에 의해 i는 1 감소합니다. i는 3이 됩니다.
i % 3, 즉 3 % 3의 나머지는 0입니다. 그러므로 조건을 만족하지 않습니다.
다시 while문을 반복합니다.
i-- 에 의해 i는 1 감소합니다. i는 2가 됩니다.
i % 3, 즉 2 % 3의 나머지는 2입니다. 나눠지는 값이 나누는 값보다 작으면 몫은 0이 되고 나눠지는 값이 그대로 나머지가 됩니다.
나머지가 2이므로 조건을 만족하지 않습니다.
다시 while문을 반복합니다.
i-- 에 의해 i는 1 감소합니다. i는 1이 됩니다.
i % 3, 즉 1 % 3의 나머지는 1입니다. 조건을 만족하므로 hap에 i를 누적합니다. hap은 기존 11에 1을 더해 12가 됩니다.
i가 1이므로 while문을 빠져나온 후 hap을 출력합니다.
출력되는 값은 12가 됩니다.
오늘도 즐거운 하루 되세요.
-
*2018-08-24 09:50:21
안녕하세요.
i는 10을 hap은 0으로 가지고 시작합니다.
while 문은 i가 1보다 큰 동안 반복합니다. 즉 1과 같으면 종료됩니다.i-- 에 의해 i는 1 감소합니다. i는 9가 됩니다.
i % 3, 즉 9 % 3의 나머지는 0입니다. 그러므로 조건을 만족하지 않습니다.
다시 while문을 반복합니다.
i-- 에 의해 i는 1 감소합니다. i는 8이 됩니다.
i % 3, 즉 8 % 3의 나머지는 2입니다. 그러므로 조건을 만족하지 않습니다.
다시 while문을 반복합니다.
i-- 에 의해 i는 1 감소합니다. i는 7이 됩니다.
i % 3, 즉 7 % 3의 나머지는 1입니다. 조건을 만족하므로 hap에 i를 누적합니다. hap은 7이 됩니다.
다시 while문을 반복합니다.
i-- 에 의해 i는 1 감소합니다. i는 6이 됩니다.
i % 3, 즉 6 % 3의 나머지는 0입니다. 그러므로 조건을 만족하지 않습니다.
다시 while문을 반복합니다.
i-- 에 의해 i는 1 감소합니다. i는 5가 됩니다.
i % 3, 즉 5 % 3의 나머지는 2입니다. 그러므로 조건을 만족하지 않습니다.
다시 while문을 반복합니다.
i-- 에 의해 i는 1 감소합니다. i는 4가 됩니다.
i % 3, 즉 4 % 3의 나머지는 1입니다. 조건을 만족하므로 hap에 i를 누적합니다. hap은 기존 7에 4를 더해 11이 됩니다.
다시 while문을 반복합니다.
i-- 에 의해 i는 1 감소합니다. i는 3이 됩니다.
i % 3, 즉 3 % 3의 나머지는 0입니다. 그러므로 조건을 만족하지 않습니다.
다시 while문을 반복합니다.
i-- 에 의해 i는 1 감소합니다. i는 2가 됩니다.
i % 3, 즉 2 % 3의 나머지는 2입니다. 나눠지는 값이 나누는 값보다 작으면 몫은 0이 되고 나눠지는 값이 그대로 나머지가 됩니다.
나머지가 2이므로 조건을 만족하지 않습니다.
다시 while문을 반복합니다.
i-- 에 의해 i는 1 감소합니다. i는 1이 됩니다.
i % 3, 즉 1 % 3의 나머지는 1입니다. 조건을 만족하므로 hap에 i를 누적합니다. hap은 기존 11에 1을 더해 12가 됩니다.
i가 1이므로 while문을 빠져나온 후 hap을 출력합니다.
출력되는 값은 12가 됩니다.
오늘도 즐거운 하루 되세요.