모두CBT

다음 C 프로그램의 실행 결과로 옳은 것은?void main(){ in… | [계리직 컴퓨터일반] 12년 1회차 기출문제 상세 페이지

1[계리직 컴퓨터일반] 12년 1회차
다음 C 프로그램의 실행 결과로 옳은 것은?
void main()
{
int a[4]= {10, 20, 30 };
int *p = a;
p++;
*p++ = 100;
*++p = 200;
printf("a[0]=%d a[1]=%d a[2]=%d \n",
a[0], a[1], a[2]);
}
1
a[0]=10 a[1]=20 a[2]=30
2
a[0]=10 a[1]=20 a[2]=200
3
a[0]=10 a[1]=100 a[2]=30
4
a[0]=10 a[1]=100 a[2]=200
해설

출력은 a[0]=10 a[1]=100 a[2]=30이다.

p 는 a[0] 을 가리키다가 p++ 로 a[1] 로 옮긴다. *p++ = 100 은 후위 증가라 현재 위치 a[1] 에 100 을 넣은 뒤 p 가 a[2] 로 간다. *++p = 200 은 전위 증가라 p 를 먼저 a[3] 으로 옮긴 뒤 200 을 넣으므로 a[2] 는 30 그대로이다.

  • a[1]=20 a[2]=30 인 출력: *p++ = 100 으로 a[1] 이 바뀐 것을 반영하지 않았다.
  • a[1]=20 a[2]=200 인 출력: 100 이 a[1] 에 들어간 것을 놓쳤고, 200 은 a[2] 가 아니라 a[3] 에 들어간다.
  • a[1]=100 a[2]=200 인 출력: 전위 증가 ++p 가 대입 전에 포인터를 a[3] 으로 옮긴다는 점을 놓쳤다.

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

이어서 풀어보기

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