문제
다음 C 코드의 출력 결과로 가장 적절한 것은?
C#include <stdio.h> char Data[5] = {'B', 'A', 'D', 'E'}; char c; int main() { int i, temp, temp2; c = 'C'; printf("%d\n", Data[3] - Data[1]); for (i = 0; i < 5; ++i) { if (Data[i] > c) break; } temp = Data[i]; Data[i] = c; i++; for (; i < 5; ++i) { temp2 = Data[i]; Data[i] = temp; temp = temp2; } for (i = 0; i < 5; i++) { printf("%c", Data[i]); } }
① 4 BACDE ② 4 BADEC ③ 3 BACDE ④ 4 ABCDE
정답
1번
해설
정답: 1. 'E' - 'A'는 ASCII 코드 차이로 4이고, 'C'를 첫 번째로 자신보다 큰 문자 D 위치에 삽입하면 배열은 B, A, C, D, E가 된다.
오답 풀이
- 1번: 첫 줄 4와 최종 문자열 BACDE가 맞다.
- 2번: 삽입 후 뒤 원소 이동이 잘못 계산되었다.
- 3번: ASCII 코드 차이를 잘못 계산했다.
- 4번: 기존 배열 순서를 완전 정렬한 것이 아니다.
보충 개념 문자끼리 뺄셈하면 해당 문자의 정수 코드값 차이가 계산된다. C의 전역 char 배열은 명시하지 않은 마지막 원소가 '\0'으로 초기화된다.