다음의 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를 초기값 그대로 둔 값으로, 두 변수 모두 호출 결과로 바뀌므로 틀리다.
오류나 개정된 내용이 보이면 알려주세요