안녕하세요 길벗수험서 운영팀입니다.
[37번]
for(i=1; i<=5; ++i, hap+=i)
System.out.printf("합은%d %4d입니다.\n", i, hap);
위의 코드를 아래로 단순화 시켜 보죠.
for(①; ②; ③)
④;
해당 문제에서 내부의 출력문은 i가 1일 때부터, 5일 때까지 총 5회 수행됩니다.
1회 : ①, ②(조건 참), ④
2회 : ③, ②(조건 참), ④
3회 : ③, ②(조건 참), ④
4회 : ③, ②(조건 참), ④
5회 : ③, ②(조건 참), ④
종료 : ③, ②(조건 거짓) <탈출>
마지막에 종료될 때 ③번(코드에서는 ++i, hap+=i)을 수행하지만 조건이 거짓이 되기때문에, 출력문(④)을 수행하지 않고 for문을 벗어나게 되기 때문에 i가 6인 시점은 출력없이 종료되게 됩니다.
[33번]
이 문제는 함정이 있습니다.
for문의 마지막에 세미콜론(;)이 있음으로써 for문은 내부에 포함하는 코드가 존재하지 않게 됩니다.
39번과 동일하게 만들어보면
for(①; ②; ③);
이게 끝입니다. 그냥 혼자 반복하고 for문이 종료된 후에 i와 hap의 값을 출력하게 되는 것이죠.
때문에 39번에서는 출력문이 for문 내부에 있어 출력하지 못했던 마지막값이 여기 33번에서는 출력되는 것이죠.
행복한 하루되세요 :)
-
관리자2020-04-01 09:42:53
안녕하세요 길벗수험서 운영팀입니다.
[37번]
for(i=1; i<=5; ++i, hap+=i)
System.out.printf("합은%d %4d입니다.\n", i, hap);
위의 코드를 아래로 단순화 시켜 보죠.
for(①; ②; ③)
④;
해당 문제에서 내부의 출력문은 i가 1일 때부터, 5일 때까지 총 5회 수행됩니다.
1회 : ①, ②(조건 참), ④
2회 : ③, ②(조건 참), ④
3회 : ③, ②(조건 참), ④
4회 : ③, ②(조건 참), ④
5회 : ③, ②(조건 참), ④
종료 : ③, ②(조건 거짓) <탈출>
마지막에 종료될 때 ③번(코드에서는 ++i, hap+=i)을 수행하지만 조건이 거짓이 되기때문에, 출력문(④)을 수행하지 않고 for문을 벗어나게 되기 때문에 i가 6인 시점은 출력없이 종료되게 됩니다.
[33번]
이 문제는 함정이 있습니다.
for문의 마지막에 세미콜론(;)이 있음으로써 for문은 내부에 포함하는 코드가 존재하지 않게 됩니다.
39번과 동일하게 만들어보면
for(①; ②; ③);
이게 끝입니다. 그냥 혼자 반복하고 for문이 종료된 후에 i와 hap의 값을 출력하게 되는 것이죠.
때문에 39번에서는 출력문이 for문 내부에 있어 출력하지 못했던 마지막값이 여기 33번에서는 출력되는 것이죠.
행복한 하루되세요 :)