다음과 같이 정의된 C 언어 함수들을 가정할 때, 아래의 for-반복문… | [법원직 9급 전산·사서 컴퓨터일반] 26년 1회차 기출문제 상세 페이지
1[법원직 9급 전산·사서 컴퓨터일반] 26년 1회차
다음과 같이 정의된 C 언어 함수들을 가정할 때, 아래의 for-반복문이 실행되는 동안 함수 decr()이 호출되는 횟수는 몇 번인가?
| #include <stdio.h> long min(long x, long y) { return x < y ? x : y; } long max(long x, long y) { return x < y ? y : x; } void decr(long *xp, long v) { *xp -= v; } long sq(long x) { return x*x; } void main() { long x = 20, y = 50, t = 0, i; for (i = max(x, y) - 1; i >= min(x, y); decr(&i, 1)) t += sq(i); } |
1
20
2
30
3
40
4
50
해설
decr()은 반복 본문이 끝날 때마다 한 번씩 호출되므로 총 30회 호출된다.
i의 초기값은 max(20, 50) − 1 = 49이고, 반복 조건은 i >= 20이다.
본문 실행 횟수:for 문의 증감식은 조건이 참이어서 본문을 수행한 뒤에만 실행된다. i가 19가 되는 마지막 decr() 호출까지 포함해 호출 수와 본문 실행 수가 같다.
오류나 개정된 내용이 보이면 알려주세요