모두CBT

다음의 C 프로그램 실행 결과로 출력되는 a, b, c 값으로 옳은 것… | [국회직 9급 컴퓨터일반] 18년 1회차 기출문제 상세 페이지

1[국회직 9급 컴퓨터일반] 18년 1회차
다음의 C 프로그램 실행 결과로 출력되는 a, b, c 값으로 옳은 것은?
#include <stdio.h>
int foo(int a, int *b)
{
        int c;
        *b = a + 1;
        c = a - 1;
        return c;
}
void main()
{
    int a = 5;
    int b = 3;
    int c = 0;
    b = foo(a, &c);
    c = foo(b, &a);
    printf("a=%d b=%d c=%d\n", a, b, c);
}
1
5, 4, 3
2
4, 3, 2
3
6, 3, 4
4
4, 3, 5
5
5, 3, 0
해설

출력되는 값은 a=5, b=4, c=3이다.

foo는 포인터가 가리키는 변수에 a+1을 넣고 a-1을 반환한다. 초기값은 a=5, b=3, c=0이다.

첫 호출 b = foo(a, &c): 인자 5이므로 c = 6, 반환값 4가 b에 대입되어 b = 4이다.
둘째 호출 c = foo(b, &a): 인자 4이므로 a = 5, 반환값 3이 c에 대입되어 c = 3이다.

  • 4, 3, 2: a는 둘째 호출에서 5가 되고 b는 첫 호출의 반환값 4이므로 틀리다.
  • 6, 3, 4: 6은 첫 호출에서 c에 들어간 값이고 둘째 호출의 반환값 3으로 덮어써지며, b도 3이 아니므로 틀리다.
  • 4, 3, 5: 둘째 호출에서 a가 5, c가 3이 되므로 틀리다.
  • 5, 3, 0: b와 c를 초기값 그대로 둔 값으로, 두 변수 모두 호출 결과로 바뀌므로 틀리다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[국회직 9급 컴퓨터일반] 18년 1회차 20문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요국회직 9급 컴퓨터일반 기출문제 암기장 전체 보기