문제
다음 C언어 프로그램의 실행 결과로 알맞은 것은?
C#include <stdio.h> #include <string.h> int main() { char s1[10] = "ABC"; char s2[10] = "DEF"; char *p1 = s1, *p2 = s2; char temp = *(p1 + 1); *(p1 + 1) = *(p2 + 1); *(p2 + 1) = temp; strcat(s1, s2); printf("%s", s1); return 0; }
① DBFAEC ② ABCDEF ③ AECDBF ④ ADCFFB
정답
3번
해설
정답: 3. s1의 두 번째 문자 B와 s2의 두 번째 문자 E를 교환하면 s1은 AEC, s2는 DBF가 되며, strcat으로 이어 붙이면 AECDBF가 된다.
오답 풀이
- 1번: 문자열 결합 전후의 순서를 잘못 추적한 결과이다.
- 2번: 문자 교환이 반영되지 않은 결과이다.
- 3번: 교환 후 s1과 s2를 이어 붙인 결과와 일치한다.
- 4번: s2의 문자 상태를 잘못 계산한 결과이다.
보충 개념 문자 배열과 포인터 문제는 각 문자의 위치 변화를 단계별로 추적하는 것이 좋다.