다음 C 프로그램의 실행 결과는?#include <stdio.h&… | [9급 지방직 컴퓨터일반] 17년 2회차 기출문제 상세 페이지
1[9급 지방직 컴퓨터일반] 17년 2회차
다음 C 프로그램의 실행 결과는?#include <stdio.h>
int main(void)
{
int i;
char buf[]="1234567890123456789012345";
char *str, ch;
str = buf;
for(i = 0; i <= 20; i += 4)
{
printf("%c ", *str++);
ch = *++str;
}
return 0;
}
1
1 3 5 7 9 1
2
1 5 9 3 7 1
3
2 4 6 8 0 2
4
2 6 0 4 8 2
해설
출력은 1 3 5 7 9 1이다.
반복은 i가 0, 4, 8, 12, 16, 20일 때 6회 수행된다. 매 회 printf의 *str++가 현재 문자를 출력한 뒤 포인터를 한 칸 옮기고, 이어서 *++str가 포인터를 다시 한 칸 옮기므로 한 회에 포인터가 2칸씩 전진한다.
따라서 buf의 인덱스 0, 2, 4, 6, 8, 10 위치 문자인 1, 3, 5, 7, 9, 1이 차례로 출력된다.
- 1 5 9 3 7 1은 포인터가 4칸씩 전진한다고 본 결과로, 반복 변수 i의 증가폭과 포인터 이동을 혼동한 것이다.
- 2 4 6 8 0 2는 출력 전에 포인터가 먼저 증가한다고 본 결과로, 후위 증가의 의미를 잘못 적용한 것이다.
- 2 6 0 4 8 2는 선증가와 4칸 전진을 함께 잘못 적용한 결과이다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.