C언어 초급 - 6장: 조건문 (6.3 switch-case 문)
2025. 2. 23. 18:58ㆍ프로그래밍 언어/C
6.3 switch-case 문
C 언어에서 switch-case 문은 여러 개의 경우 중 특정 값과 일치하는 코드 블록을 실행하는 조건문입니다.
if-else if-else 문과 유사하지만, 특정 정수 또는 문자 값과 비교할 때 더 간결하게 사용할 수 있습니다.
또한 break 문과 default 문을 활용하여 제어 흐름을 관리할 수 있습니다.
1. switch-case 문의 개념
- switch 문은 변수의 값과 case 문에서 지정한 값이 일치할 때 해당 블록을 실행.
- break 문을 사용하여 각 case 블록 실행 후 탈출.
- default 문을 활용하여 일치하는 값이 없을 때 실행할 기본 코드 지정.
2. switch-case 문의 기본 구조
switch (변수) {
case 값1:
// 값1과 변수가 일치하면 실행할 코드
break;
case 값2:
// 값2와 변수가 일치하면 실행할 코드
break;
default:
// 위의 모든 값과 일치하지 않을 경우 실행할 코드
}
📌 break 문이 없으면 실행이 다음 case로 넘어감 → "fall-through" 현상 발생
📌 default 문은 선택 사항이며, 어떤 case에도 해당하지 않을 때 실행됨
3. switch-case 문 예제
3.1 요일 출력 프로그램
사용자가 1~7 사이의 숫자를 입력하면 요일을 출력하는 프로그램입니다.
#include <stdio.h>
int main() {
int day;
printf("요일을 선택하세요 (1~7): ");
scanf("%d", &day);
switch (day) {
case 1:
printf("월요일\n");
break;
case 2:
printf("화요일\n");
break;
case 3:
printf("수요일\n");
break;
case 4:
printf("목요일\n");
break;
case 5:
printf("금요일\n");
break;
case 6:
printf("토요일\n");
break;
case 7:
printf("일요일\n");
break;
default:
printf("잘못된 입력입니다.\n");
}
return 0;
}
실행 예시
요일을 선택하세요 (1~7): 3
수요일
요일을 선택하세요 (1~7): 8
잘못된 입력입니다.
📌 설명
- case 1: printf("월요일\n"); break; → 입력값이 1이면 "월요일" 출력 후 break로 switch 탈출.
- default: → 1~7이 아닌 값 입력 시 "잘못된 입력입니다." 출력.
4. break 문의 역할
- switch-case 문에서 break 문이 없으면 실행이 다음 case 문으로 넘어가는 "fall-through" 현상 발생.
- 이를 방지하려면 각 case 블록 끝에 break 문을 추가.
4.1 break 문이 없는 경우
#include <stdio.h>
int main() {
int num = 2;
switch (num) {
case 1:
printf("하나\n");
case 2:
printf("둘\n");
case 3:
printf("셋\n");
default:
printf("기타 숫자\n");
}
return 0;
}
출력 결과
둘
셋
기타 숫자
📌 설명
- case 2:에서 "둘"을 출력한 후, break가 없으므로 case 3:과 default:까지 실행됨.
- 의도치 않은 결과를 방지하려면 break 문을 사용해야 함.
5. default 문의 역할
- default 문은 어떤 case에도 해당하지 않을 경우 실행되는 블록입니다.
- default 문을 사용하면 잘못된 입력을 처리할 수 있음.
5.1 default 문을 활용한 예제
#include <stdio.h>
int main() {
int choice;
printf("메뉴를 선택하세요 (1~3): ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("아메리카노를 선택하셨습니다.\n");
break;
case 2:
printf("카페라떼를 선택하셨습니다.\n");
break;
case 3:
printf("카푸치노를 선택하셨습니다.\n");
break;
default:
printf("잘못된 선택입니다.\n");
}
return 0;
}
실행 예시
메뉴를 선택하세요 (1~3): 4
잘못된 선택입니다.
📌 설명
- default 문이 없으면 case 1~3에 없는 값이 입력될 때 아무 출력도 되지 않음.
- default 문이 있으므로 "잘못된 선택입니다."가 출력됨.
6. switch-case vs if-else
비교 항목 | switch-case 문 | if-else 문 |
비교 대상 | 정수(int, char) 값과 일치하는 경우 사용 | 범위, 복합 조건(`&&`, `||`)을 처리 가능 |
가독성 | 여러 개의 case를 나열하여 가독성이 높음 | 복잡한 조건일수록 코드가 길어질 수 있음 |
속도 | 비교적 빠름 (switch는 점프 테이블 방식) | 조건이 많아지면 비교 연산이 많아질 수 있음 |
유연성 | case 값은 상수(const), 정수(int), 문자(char)만 가능 | 변수 및 논리 연산 (`&&`, `||`, `>=`, `<=`) 사용 가능 |
📌 switch-case 문 사용 예시
- 메뉴 선택 (1~5 숫자로 선택)
- 특정 문자 ('A', 'B', 'C' 등) 처리
- 키보드 입력 값 ('w', 'a', 's', 'd' 등)
📌 if-else 문이 더 적절한 경우
- 범위를 비교하는 경우 (x >= 10)
- 두 개 이상의 조건을 함께 비교할 경우 (&&, ||)
- 변수 값을 비교하는 경우 (if (num == a))
7. switch-case 활용 예제
7.1 학점 판별 프로그램 (switch 사용)
점수를 입력받아 A, B, C, D, F 학점을 판별하는 프로그램입니다.
#include <stdio.h>
int main() {
int score;
printf("점수를 입력하세요: ");
scanf("%d", &score);
switch (score / 10) {
case 10:
case 9:
printf("학점: A\n");
break;
case 8:
printf("학점: B\n");
break;
case 7:
printf("학점: C\n");
break;
case 6:
printf("학점: D\n");
break;
default:
printf("학점: F\n");
}
return 0;
}
실행 예시
점수를 입력하세요: 85
학점: B
📌 설명
- score / 10을 사용하여 점수를 10, 9, 8, 7, 6으로 변환.
- 90~100 → case 10, case 9 → "A" 출력.
- 60 미만이면 default로 "F" 출력.
8. 정리
- switch-case 문은 특정 값과 비교할 때 유용.
- break 문을 사용하여 각 case 실행 후 탈출.
- default 문을 사용하여 모든 case에 해당하지 않을 때 실행.
- if-else 문은 범위 비교 및 복합 조건이 필요할 때 사용.
'프로그래밍 언어 > C' 카테고리의 다른 글
C언어 초급 - 7장: 반복문 (7.2 do-while 문) (0) | 2025.02.23 |
---|---|
C언어 초급 - 7장: 반복문 (7.1 while 문) (0) | 2025.02.23 |
C언어 초급 - 6장: 조건문 (6.2 else if 문 – 여러 가지 조건 분기) (0) | 2025.02.23 |
C언어 초급 - 6장: 조건문 (6.1 if, if-else 문) (0) | 2025.02.23 |
C언어 초급 - 5장: 연산자와 표현식 (5.5 증감 연산자 (++, --)) (0) | 2025.02.23 |