[4.2] switch문
◎ 정수값(또는 문자값)이 여러 개가 있고, 각 값에 따라 연산이 달라질 때,
else if ...를 연속해서 사용하는 것 보다
switch문을 사용하면 표현이 훨씬 간결해진다.
◎ 문법;
switch (수식) {
case 정수값1: { 실행문1 }
case 정수값2: { 실행문2 }
...................
case 정수값N: { 실행문N }
default: { 실행문X }
}
◎ 의미; (수식)의 값이 정수값1과 같으면 {실행문1}을 실행하고
(수식)의 값이 정수값2와 같으면 {실행문2}를 실행하고
...............................
(수식)의 값이 정수값N과 같으면 {실행문N}을 실행하고
(수식)의 값이 위의 어느 값과 같지 않다면 {실행문X}를 실행한다.
◎ 실행문1, 실행문2, ...은 한 개 이상의 실행문(들)이 올 수 있다.
◎ (수식)은 계산 결과가 정수값또는 문자이어야 한다.
그렇지 않으면 실행 오류가 발생한다.
◎ 정수값은 문자값도 포함한다.
◎ default: (수식)의 값이 위의 어느 값과 같지 않다면, default에서 지정한 문장을 실행한다.
지금까지의 어느 조건에도 맞지 않는 경우인데,
주로 오류처리를 위해 사용한다.
default 뒤에는 콜론(:)을 붙인다. 세미콜론(;)이 아님에 주의하자.
◎ break; { 실행문 } 끝에 break;를 포함하면 그 이하의 case은 실행하지 않고
즉시 switch문을 빠져나온다.
break가 없으면 그 아래 문장도 실행한다.
◎ 예; 두 수의 연산에서 연산의 종류(또는 연산자)를 '+ - * /' 중에서 하나를 선택하고
선택한 연산자를 사용하여 연산을 한다.
예문 (04-if-02a.cpp);
#include <stdio.h>
#include <conio.h> // getch()
main() {
char op;
int a=0, b=0;
float x=0.0;
printf("\n 두 수의 연산; 연산의 종류를 하나 입력 하시오. (+, -, *, /) >> ");
scanf("%c", &op);
printf("\n 연산할 두 정수를 입력하시오. (예; 22 33) >> ");
scanf("%d %d", &a,&b);
switch(op) {
case '+': x = (float)a + (float)b;
break;
case '-': x = (float)a - (float)b;
break;
case '*': x = (float)a * (float)b;
break;
case '/': x = (float)a / (float)b;
break;
default: printf("\n 연산자 오류; op=%c",op);
}
printf(" %f",x);
printf("\nEND OF PROGRAM\n"); getch();
}
출력;
입력 연산 +이고 두 정수가 22 33이면 55.0이 출력된다.
[실습문제] 호텔방을 예약하고 방값을 계산하는 프로그램을 작성하시오.
퀸 사이즈 침대 둘; 500 (달러)
킹 사이즈 침대 하나와 퀸 사이즈 침대 하나; 550
킹 사이즈 침대 하나; 350
퀸 사이즈 침대 하나; 300
입력; 킹 사이즈 침대 하나 출력; 350
(실행file=
switch-호텔방.exe )
//