모두CBT

다음 C 프로그램의 출력 값은?#include <stdio.h&g… | [9급 지방직 컴퓨터일반] 15년 1회차 기출문제 상세 페이지

1[9급 지방직 컴퓨터일반] 15년 1회차
다음 C 프로그램의 출력 값은?
#include <stdio.h>

int main()
{
int darr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int sum1, sum2;

sum1 = *(*darr + 1) + *(*darr + 2);
sum2 = *darr[1] + *darr[2];
printf("%d, %d", sum1, sum2);
}
1
3, 5
2
5, 5
3
5, 11
4
11, 5
해설

출력 값은 5, 11이다.

*darr는 0행의 시작 주소이므로 *(*darr + 1)은 darr[0][1]인 2, *(*darr + 2)는 darr[0][2]인 3이다. 따라서 sum1 = 2 + 3 = 5이다.

darr[1]과 darr[2]는 각각 1행·2행의 시작 주소이므로 *darr[1]은 darr[1][0]인 4, *darr[2]는 darr[2][0]인 7이다. 따라서 sum2 = 4 + 7 = 11이다.

  • 3, 5와 5, 5는 sum2를 5로 계산한 값으로, darr[1]·darr[2]가 각각 1행·2행의 시작 주소라는 점을 놓친 결과이다.
  • 11, 5는 두 변수의 값을 뒤바꾼 것이다.

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