문제
다음 C 코드의 출력 결과로 가장 적절한 것은?
C#include <stdio.h> int main(void) { char str[] = "REPUBLICOFKOREA"; int a = 0; while (str[a] != '\0') ++a; putchar(str[a - 2]); return 0; }
① A ② E ③ R ④ O
정답
2번
해설
정답: 2. 문자열 "REPUBLICOFKOREA"의 길이는 15이고, a는 널 문자를 만날 때 15가 된다. str[a-2]는 str[13]으로 문자 E이다.
오답 풀이
- 1번: 마지막 문자 str[14]이다.
- 2번: 뒤에서 두 번째 문자가 E이므로 정답이다.
- 3번: 첫 문자와 혼동한 값이다.
- 4번: 중간 문자 위치를 잘못 계산한 값이다.
보충 개념 C 문자열은 마지막에 널 문자 '\0'을 가진다. while 문이 종료될 때 인덱스는 문자열 길이와 같다.