다음 C 프로그램의 출력 결과는?
#include <stdio.h>
void func(int *p, int *q) {
if (p > q) return;
printf("%d ", *p + *q);
func(p + 1, q - 1);
}
int main(void) {
int a[] = { 3, 1, 4, 1, 5 };
func(a, a + 4);
return 0;
}정답 3번
func의 두 포인터는 같은 배열의 양 끝에서 시작한다. 첫 호출은 a[0]+a[4]=3+5=8, 다음은 a[1]+a[3]=1+1=2를 출력한다. 세 번째 호출에서는 두 포인터가 a[2]를 가리켜 4+4=8을 출력한다. 종료 조건이 p>=q가 아니라 p>q이므로 가운데 원소의 합도 출력한다. 이후 p는 a+3, q는 a+1이 되어 재귀 호출이 끝난다. 출력 순서는 8 2 8이다.
콘텐츠 정보
- 자료 유형
- 공개 기출
- 검수 상태
- 내용 검수 완료
- 해설 작성·검수
- 정처LAB 편집 기준
- 최종 검수
- 2026-08-09