모두CBT

다음 C 프로그램의 출력 결과는?#include <stdio.h&… | [9급 국가직 컴퓨터일반] 26년 1회차 기출문제 상세 페이지

1[9급 국가직 컴퓨터일반] 26년 1회차
다음 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;
}
1
6 2 8
2
8 2 6
3
8 2 8
4
8 8 2
해설

출력 결과는 8 2 8이다.

func는 배열 양 끝 포인터를 안쪽으로 좁히며 대칭 원소의 합을 출력하고, p가 q보다 뒤로 넘어가면 종료한다.

1회: a[0] + a[4] = 3 + 5 = 8
2회: a[1] + a[3] = 1 + 1 = 2
3회: p와 q가 모두 a[2]이므로 4 + 4 = 8
4회: p가 a[3], q가 a[1]이 되어 p > q로 반환

  • 6 2 8: 첫 출력은 3 + 5 = 8이므로 틀리다.
  • 8 2 6: 가운데 원소 4를 자기 자신과 더한 8이 마지막에 출력되므로 틀리다.
  • 8 8 2: 바깥쪽에서 안쪽으로 진행하므로 두 번째 출력은 1 + 1 = 2이다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.