코딩일기/자격증

[정보처리기사] [ C ] switch문 실행 흐름 | 2024년 2회 정보처리기사 실기 기출문제

jhy_2023 2025. 4. 11. 16:41
728x90
반응형

2024년 2회 정보처리기사 실기 기출문제

문제

다음 C 프로그램의 실행결과를 쓰시오.

#include <stdio.h>
 
void swap(int a, int b) {
    int t = a;
    a = b;
    b = t;
}
 
int main() {
    
    int a = 11;
    int b = 19;
    swap(a, b);
    
    switch(a) {
        case 1:
            b += 1;
        case 11:
            b += 2;
        default:
            b += 3;
        break;
    }
    
    printf("%d", a-b);
}

정답

-13

반응형

해설

1️⃣ main() 함수 시작

int a = 11;
int b = 19;
  • 변수 a에 11을 저장합니다.
  • 변수 b에 19를 저장합니다.
  • 현재 상태 : a = 11, b = 19

2️⃣ swap(a, b); 함수 호출

void swap(int a, int b) {
    int t = a;
    a = b;
    b = t;
}
  • swap() 함수 안에서만 a와 b의 값이 바뀌고, main() 함수의 a와 b에는 아무 영향이 없습니다.
    • swap() 안에서는 a = 11, b = 19
    • t = a → t = 11
    • a = b → a = 19
    • b = t → b = 11
    • 이렇게 바뀌지만, 이 값들은 swap() 함수가 끝나면서 사라집니다. 다시 말해, main() 함수에서는 여전히
      a = 11, b = 19
728x90

3️⃣ switch(a)문 실행

switch(조건값) {
    case 값1:
        실행문1;
        break;
    case 값2:
        실행문2;
        break;
    ...
    default:
        기본 실행문;
        break;
}
  • switch문은 조건에 따라 여러 분기 중 하나를 선택해서 실행하는 제어문입니다. 주로 if-else if 구문보다 코드가 더 깔끔하고 명확할 때 사용합니다.
  • 조건값: 변수 또는 값입니다. 이 값에 따라 어떤 case가 실행될지 결정됩니다.
  • case 값:: 조건값이 이 값과 같다면 실행됩니다.
  • break: 현재 case 블록을 빠져나갑니다. 만약 break가 없으면 아래의 코드들이 계속 실행됩니다.
  • default:: 위의 case들 중 어떤 것도 일치하지 않을 때 실행됩니다. 선택 사항입니다.
switch(a) {
    case 1:
        b += 1;
    case 11:
        b += 2;
    default:
        b += 3;
    break;
}
  • 문제 코드를 다시 보면, 현재 a = 11이므로 case 11:부터 실행됩니다. break가 없으므로 아래 코드들을 계속 실행합니다.
    • case 11: → b += 2; → b = 19 + 2 = 21
    • default: → b += 3; → b = 21 + 3 = 24 (break가 없기 때문에 아래에 있는 default:도 실행됨)
    • default: →  break를 만나 종료
    • 최종적으로 b = 24

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

728x90
반응형