안녕하세요 길벗수험서 운영팀입니다.
[581쪽 하단 예제]
do~while문의 조건은 a<10, 증가값 역할을 하는 a는 2씩 증가합니다.
마지막 값이 어떻게 산출되는지 디버깅해보세요.
hap이 16, a가 9일 때, 5번 while 조건을 만나면 a<10은 참, 다시 hap+=a, a+=2를 수행하게 되어, hap은 25, a는 11이 됩니다.
[583쪽 2번]
do~while문의 조건은 n<10, 증가값 역할을 하는 n은 1씩 증가합니다.
이 문제는 위의 문제와 달리 출력문이 내부에 존재합니다. 변수 n이 후치연산인 이상 n의 마지막 증가값이 출력문에 반영되지는 않겠네요.
do~while문의 식을 풀어보면 이렇게 됩니다.
t+=n;
출력
n+=1;
이제 마지막 부분을 디버깅해보죠.
n이 8일 때 t에 n이 더해져서 t는 36이 되고, 화면에 출력됩니다.
n=8, t=36
이후 n++로 인해 n은 9가 됩니다.
while(n<10)이 참이므로 다시 위로 돌아가
t에 n이 더해져서 t는 45가 되고, 화면에 출력됩니다.
n=9, t=45
이후 n++로 인해 n은 10이 됩니다.
while(n<10)이 거짓이므로 빠져나가고, 프로그램은 종료됩니다.
행복한 하루되세요 :)
-
관리자2020-05-15 09:56:42
안녕하세요 길벗수험서 운영팀입니다.
[581쪽 하단 예제]
do~while문의 조건은 a<10, 증가값 역할을 하는 a는 2씩 증가합니다.
마지막 값이 어떻게 산출되는지 디버깅해보세요.
hap이 16, a가 9일 때, 5번 while 조건을 만나면 a<10은 참, 다시 hap+=a, a+=2를 수행하게 되어, hap은 25, a는 11이 됩니다.
[583쪽 2번]
do~while문의 조건은 n<10, 증가값 역할을 하는 n은 1씩 증가합니다.
이 문제는 위의 문제와 달리 출력문이 내부에 존재합니다. 변수 n이 후치연산인 이상 n의 마지막 증가값이 출력문에 반영되지는 않겠네요.
do~while문의 식을 풀어보면 이렇게 됩니다.
t+=n;
출력
n+=1;
이제 마지막 부분을 디버깅해보죠.
n이 8일 때 t에 n이 더해져서 t는 36이 되고, 화면에 출력됩니다.
n=8, t=36
이후 n++로 인해 n은 9가 됩니다.
while(n<10)이 참이므로 다시 위로 돌아가
t에 n이 더해져서 t는 45가 되고, 화면에 출력됩니다.
n=9, t=45
이후 n++로 인해 n은 10이 됩니다.
while(n<10)이 거짓이므로 빠져나가고, 프로그램은 종료됩니다.
행복한 하루되세요 :)
-
관리자2020-05-18 11:07:33
안녕하세요 길벗수험서 운영팀입니다.
581쪽에서는
a가 2씩 증가한다는 점,
출력문이 반복문 밖에 있다는 점,
때문에 마지막에 증가한 값이 출력된다는 것
583쪽에서는
n이 1씩 증가한다는 점,
출력문이 반복문 안에 있다는 점(추가로 출력 후 n이 증가한다는 점)
때문에 n의 마지막 증가값이 출력되지 않는다는 점
정도의 차이가 있겠네요.
행복한 하루되세요 :)
-
*2020-05-15 12:40:35
두문제의 차이점은 무엇인가요?
결과를 묻는 질문인데 한문제는 초과되는 값을,
한문제는 미만되는 걊을 정답으로 하였는데..
도대체 그 차이를 모르겠습니다.