다음 C 프로그램에서 포인터를 통한 배열 변경과 포인터 이동을 추적하여 출력 결과를 줄 단위로 쓰시오.
#include <stdio.h>
int main(void) {
char code[] = "PARK";
char *cursor = code + 1;
cursor[1] = 'I';
printf("%c%s\n", *(cursor + 2), code);
while (*cursor != '\0') {
if (*cursor != 'I') {
putchar(*cursor);
}
cursor++;
}
return 0;
}모범답안
KPAIK AK
풀이와 판단 근거
cursor는 code[1]인 A를 가리킨다. 따라서 cursor[1]은 code[2]이고, 이 문자가 R에서 I로 바뀌어 배열은 `PAIK`가 된다. `*(cursor + 2)`는 code[3]의 K이며 뒤이어 `%s`가 PAIK를 출력하므로 첫 줄은 KPAIK다.
while은 A부터 시작해 I만 건너뛰고 A와 K를 출력한다.
자주 틀리는 지점
- cursor[1]을 code[1]과 같은 위치로 계산함
- 문자 배열을 수정해도 `%s` 출력은 원래 PARK라고 봄
- cursor 증가 후에도 첫 문자인 P부터 반복한다고 판단함
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.