다음 C 프로그램에서 switch 문의 진입 위치와 break 생략에 따른 실행 흐름을 추적하여 출력 결과를 쓰시오.
#include <stdio.h>
int main(void) {
int score[3] = {61, 77, 89};
int sum = 0;
for (int i = 0; i < 3; i++) sum += score[i];
switch (sum / 30) {
case 10:
case 9: printf("A");
case 8: printf("B");
case 7: printf("C");
default: printf("D");
}
return 0;
}모범답안
CD
풀이와 판단 근거
세 점수의 합은 227이고 정수 나눗셈 `227 / 30`의 결과는 7이다. 따라서 case 7에서 실행을 시작해 C를 출력한다.
case 7 뒤에 break가 없으므로 default까지 계속 내려가 D도 출력한다. case 8·9는 진입 지점보다 위에 있어 실행되지 않으며 최종 결과는 `CD`다.
자주 틀리는 지점
- 227/30을 반올림해 8로 계산함
- case 7 실행 뒤 자동으로 switch가 종료된다고 봄
- switch가 위의 case부터 모두 검사하며 A부터 출력한다고 생각함
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.