정보처리기사 실기 - 2024년 2회 C언어 기출 풀이(값에 의한 호출 & switch fall-through 문제)

Alchemist·2025년 10월 3일

정보처리기사

목록 보기
36/114

✨ 문제

다음 코드를 확인하여 알맞는 출력값을 작성하시오.

#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);
}

🎯 출제 의도

  • 함수 호출 방식 – C 언어는 기본적으로 값에 의한 호출(Call by Value)만 지원한다는 점을 확인시키는 문제. → swap 함수는 원본 변수에 영향을 주지 못한다.
  • switch문 fall-throughbreak가 없는 case는 연속 실행된다는 특징을 이해해야 한다.
  • 연산 순서 – a는 그대로 11, b는 switch문 안에서 여러 번 수정되며 최종 결과를 확인하는 문제.

📘 개념 정리

1. 값에 의한 호출(Call by Value)

  • 함수 인자 전달 시 값의 복사본이 전달됨.
  • 따라서 swap(a, b)maina, b에는 영향을 주지 못함.

2. switch문

  • switch(a) 실행 시 a=11case 11:으로 진입.
  • break를 만나기 전까지 아래 구문들을 연속 실행(fall-through).

3. 연산자

  • b += 2b에 2 더함
  • b += 3b에 3 더함

📝 풀이 과정

  1. a=11, b=19

  2. swap(a, b) 실행 → 값 복사만 교환됨 → 원본 a=11, b=19 그대로

3 switch(a)case 11 실행

  • b += 2b = 21
  • 이어서 default 실행 (fall-through)
  • b += 3b = 24
  1. 최종 출력: a - b = 11 - 24 = -13

✅ 최종 출력 결과

-13

💡 정리

이 문제에서 꼭 알아야 할 개념:

  • C 함수 인자는 Call by Value → 원본 값은 변하지 않는다.
  • switchbreak 없으면 연속 실행 → case 11 → default까지 실행됨.
  • 최종 결과: -13
profile
html_programming_language

0개의 댓글