120p의 34번 문제에서 for문의 초기값이 1일 때, 증감식으로 인해 2부터 출력이 되는 것이 아닌가요? printf문 "합은 1 0입니다." 가 왜 출력되는지 이해가 안돼요..
for문(초기식; 조건식; 증감식, 식) 일때 해설에서는 증감식과 식을 순서대로 수행하라고 하셨는데 순서대로 한다면 1은 출력되면 안되지 않나요?
또 128p의 50번 문제에서는 for문 옆에 ;이 없는데 왜 한 줄만 출력되나요?
그리고 i가 100일때 hap += i; 를 수행 후 printf문 "100, 5050입니다." 출력 후 for문의 ++i로 인해 101(출력은 x)이 돼야 되는거 아닌가요?
전체적인 흐름 좀 자세히 알려주세요..
for문(초기식; 조건식; 증감식)
식;
이런 구조일 때 초기식이 조건식에 참일 경우 식;을 수행한 후 증감식을 수행하고 조건식에 비교하고 이렇게 돌아가는 시스템으로 알고 있는데 잘못알고 있는건가요?
안녕하세요 길벗수험서 운영팀입니다.
for문의 작동 순서를 혼동하신 것 같습니다.
for(①; ②; ③) {
④;
}
위의 for문이 ④를 3회 반복한다고 가정했을 때, 순서는
1회 : ①, ②(조건 참), ④
2회 : ③, ②(조건 참), ④
3회 : ③, ②(조건 참), ④
4회 : ③, ②(조건 거짓) <탈출>
입니다.
이것의 위의 반복문에 적용한다고 가정하면,
1회 : i는 1이 되고, i<=5를 판별한 뒤(참), 출력을 수행합니다. "합은1 0입니다."
2회 : i는 2, 합은 2가 되고, i<=5를 판별한 뒤(참), 출력을 수행합니다. "합은2 2입니다."
for문의 작동순서를 다시 한 번 확인해보시고, 코드를 따라가 보세요.
------------------
두번째 질문 50번도 마찬가지 입니다.
for문을 기재할 때, {}가 없다면 한줄만을 반복 수행합니다.
예1) for (i=1; i<=100; i++)
a=a+1;
printf("aaa");
위와 같은 식이 있다면 a=a+1을 100번 수행하게 되겠죠. for문이 끝나고 aaa를 출력합니다.
예2) for (i=1; i<=100; i++);
a=a+1;
printf("aaa");
위와 같은 식이 있다면 a=a+1은 for문이 종료 후 1회만 수행되게 됩니다. aaa도 마찬가지로 종료후 1회 출력됩니다.
(세미콜론의 위치를 잘 파악하세요)
예1) for (i=1; i<=100; i++) {
a=a+1;
}
printf("aaa");
위와 같은 식은 예1과 동일합니다. 중괄호{}로 묶인 모든 식을 100번 수행하게 되겠죠. aaa는 for문이 종료후 출력되게 됩니다.
문제 50번은 예1과 같습니다. hap+=i를 100회 수행된 후 i와 hap을 출력하게 됩니다.
다만 for문이 종료될 때 증가식이 적용된 후에 빠져나온다는 점을 염두에 두세요.
앞에 답변을 드렸던 for문의 순서를 보시면 마지막에 증가식인 ③을 수행하고 빠져나옴을 알 수 있습니다.
때문에 답이 101, 5050이 되는 것입니다.
행복한 하루되세요 :)
-
관리자2019-03-11 16:04:08
안녕하세요 길벗수험서 운영팀입니다.
for문의 작동 순서를 혼동하신 것 같습니다.
for(①; ②; ③) {
④;
}
위의 for문이 ④를 3회 반복한다고 가정했을 때, 순서는
1회 : ①, ②(조건 참), ④
2회 : ③, ②(조건 참), ④
3회 : ③, ②(조건 참), ④
4회 : ③, ②(조건 거짓) <탈출>
입니다.
이것의 위의 반복문에 적용한다고 가정하면,
1회 : i는 1이 되고, i<=5를 판별한 뒤(참), 출력을 수행합니다. "합은1 0입니다."
2회 : i는 2, 합은 2가 되고, i<=5를 판별한 뒤(참), 출력을 수행합니다. "합은2 2입니다."
for문의 작동순서를 다시 한 번 확인해보시고, 코드를 따라가 보세요.
------------------
두번째 질문 50번도 마찬가지 입니다.
for문을 기재할 때, {}가 없다면 한줄만을 반복 수행합니다.
예1) for (i=1; i<=100; i++)
a=a+1;
printf("aaa");
위와 같은 식이 있다면 a=a+1을 100번 수행하게 되겠죠. for문이 끝나고 aaa를 출력합니다.
예2) for (i=1; i<=100; i++);
a=a+1;
printf("aaa");
위와 같은 식이 있다면 a=a+1은 for문이 종료 후 1회만 수행되게 됩니다. aaa도 마찬가지로 종료후 1회 출력됩니다.
(세미콜론의 위치를 잘 파악하세요)
예1) for (i=1; i<=100; i++) {
a=a+1;
}
printf("aaa");
위와 같은 식은 예1과 동일합니다. 중괄호{}로 묶인 모든 식을 100번 수행하게 되겠죠. aaa는 for문이 종료후 출력되게 됩니다.
문제 50번은 예1과 같습니다. hap+=i를 100회 수행된 후 i와 hap을 출력하게 됩니다.
다만 for문이 종료될 때 증가식이 적용된 후에 빠져나온다는 점을 염두에 두세요.
앞에 답변을 드렸던 for문의 순서를 보시면 마지막에 증가식인 ③을 수행하고 빠져나옴을 알 수 있습니다.
때문에 답이 101, 5050이 되는 것입니다.
행복한 하루되세요 :)