모두CBT

다음 C언어 프로그램의 실행 후 출력 결과로 옳은 것은?#include… | [9급 지방직 컴퓨터일반] 12년 1회차 기출문제 상세 페이지

1[9급 지방직 컴퓨터일반] 12년 1회차
다음 C언어 프로그램의 실행 후 출력 결과로 옳은 것은?
#include <stdio.h>
void swap(int a, int b)
{
int temp;

temp = a;
a = b;
b = temp;
}
int main()
{
int k, j;

k = 3;
j = 2;
swap(k, j);
printf(“k = %d, j = %d”, k, j);
return 0;
}
1
k = 3, j = 2
2
k = 2, j = 3
3
k = 2, j = 2
4
k = 3, j = 3
해설

출력은 k = 3, j = 2이다. swap 함수가 값에 의한 호출(call by value)로 인자를 받기 때문이다.

swap(k, j) 호출 시 매개변수 a, b에는 3과 2의 복사본이 들어가 함수 안에서 a=2, b=3으로 바뀌지만, main의 k와 j는 각각 3, 2 그대로 남는다.

  • k = 2, j = 3: 포인터로 주소를 넘겨 교환했을 때(call by reference)의 결과이다.
  • k = 2, j = 2: 교환 과정에서 값이 덮어써진 경우로, main의 변수는 전혀 바뀌지 않으므로 나올 수 없다.
  • k = 3, j = 3: 마찬가지로 main의 j는 변경되지 않으므로 나올 수 없다.

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