C Language/Programming Course
3장 조건문(3부 switch~case문) 첫번째 시간
행복하면
2009. 7. 6. 01:25
3장 조건문
3부 switch~case문
3부 switch~case문
이번시간에는 또다른 조건문인 switch~case문을 배워 보겠습니다.
switch~case문도 조건을 줘서 조건에 맞는 형태의 값을 출력하기 위한 문법입니다.
if 문과 비슷한데 일단 switch~case문은 같다라는 조건에서만
성립을 합니다.
즉, 예를 들어서 설명을 하면 if문에서는 조건을 if(a > 10)
이런 조건을 쓸수 있지만 switch~case문에서는 a > 10라는 조건을 쓸 수 없고
값을 딱 정해줘서 a == 10이라는 뜻의 조건에서만 사용을 할 수 있습니다.
그럼 왜 if문을 사용하지 switch~case문을 사용하느냐 라는 것의 답변은
switch문이 더 필요할 때가 있을 수가 있습니다.
if문은 전체적으로 표현을 다 할 수 있지만
switch문은 어떤 조건의 같다라는 조건에서만 성립하는 것만을 나타내기 때문에
이 부분에 대해서는 더욱 보기가 쉽게 만들어 진 것이죠
그래서 switch문이 있습니다.
switch~case문의 형태를 보겠습니다.
switch(변수 명)
{
case 변수 값:
필요 행동
break;
case 변수 값:
필요 행동
break;
case 변수 값:
필요 행동
break;
case 변수 값:
필요 행동
break;
default:
필요 행동
break;
}
이런 형태로 사용 할 수 있습니다.
그럼 저번시간에 한 if문과 비교를 하여 switch~case문으로 다시 만들어 보겠습니다.
if문 | switch문 |
if(count == 1) { printf("count == 1"); } else if(count == 2) { printf("count == 2"); } else if(count == 3) { printf("count == 3"); } else { printf("count == 기타"); } |
switch(count) { case 1: { printf("count == 1"); break; } case 2: { printf("count == 2"); break; } case 3: { printf("count == 3"); break; } default: { printf("count == 기타"); break; } } |
이렇게 if문을 switch~case문으로 바꿔 보았습니다.
이것보고 대충 이해가 가실 것이라 생각이 듭니다.
해석을 해 보면 count값에 따라 그 값에 맞는 case 문에 들어가서
행동을하고, 원하는 count값이 없으면, default로 들어가서
행동하고, 그럼 여기에서 break문은 무슨 뜻이냐 하면
case문이나 default문 중에서 어디서 들어가서 그 행동을 하면
switch문을 빠져 나오라는 뜻입니다. 왜냐 하면 break문을 쓰지 않으면,
만약 count에 1이라는 값이 있다고 가정하고, case 1문에는 break가
없다고 가정을 하겠습니다. 그러면 결과는
count == 1 count == 2
이렇게 나오게 됩니다. 즉, case 1의 행동을 하고 case2의 행동도 하고
case2문에는 break문이 있기에 종료 하게 됩니다.
그래서 break문은 꼭 써주셔야 됩니다.
그리고 꼭 순서를
case 1:
case 2:
case 3:
이렇게 안해도 됩니다.
case 3:
case 1:
case 2:
이렇게 하셔도 됩니다. 그 이유는 단지 count의 값을 찾아 가는 것이기 때문에
순서를 신경을 안쓴다는 거죠
그리고 case문 안에 보시면 { }가 되어 있죠?!
이 괄호는 꼭 안해도 된답니다.
그리고 default는 안써도 상관이 없답니다.
if문에서 else문을 안써도 되듯이~
하지만 if문에서도 이야기 했듯이 기본형태이기 때문에
왠만하면 지켜 주면 좋을 것이라 생각이 됩니다.
이정도만 알고 있으면, switch문을 다 쓰실수 볼수 있을 껍니다.
switch~case문 예제
===========================================
#include <stdio.h>
int main()
{
int count = 0;
printf(1~5사이의 숫자를 눌러 주세요 : ");
scanf("%d", &count);
switch(count)
{
case 1:
{
printf("숫자 1를 눌렀습니다.\n")
break;
}
case 2:
{
printf("숫자 2를 눌렀습니다.\n")
break;
}
case 3:
{
printf("숫자 3를 눌렀습니다.\n")
break;
}
case 4:
{
printf("숫자 4를 눌렀습니다.\n")
break;
}
case 5:
{
printf("숫자 5를 눌렀습니다.\n")
break;
}
default:
{
printf("count == 기타");
break;
}
}
return 0;
}
===========================================
문제 : 저번시간에 if문으로 만든 프로그램에서 그 if문을
변수 count에
90점 이상 이면 1
80점 이상 이면 2
70점 이상 이면 3
60점 이상 이면 4
59점 이하 이면 5
를 가지게 바꾸고
그 count값을 switch문으로 만들어
1이면 " 수입니다"
2이면 " 우입니다"
3이면 " 미입니다"
4이면 " 양입니다"
1이면 " 가입니다"
출력하는 문장을 만드시오~
그리고 default는 안써도 상관이 없답니다.
if문에서 else문을 안써도 되듯이~
하지만 if문에서도 이야기 했듯이 기본형태이기 때문에
왠만하면 지켜 주면 좋을 것이라 생각이 됩니다.
이정도만 알고 있으면, switch문을 다 쓰실수 볼수 있을 껍니다.
switch~case문 예제
===========================================
#include <stdio.h>
int main()
{
int count = 0;
printf(1~5사이의 숫자를 눌러 주세요 : ");
scanf("%d", &count);
switch(count)
{
case 1:
{
printf("숫자 1를 눌렀습니다.\n")
break;
}
case 2:
{
printf("숫자 2를 눌렀습니다.\n")
break;
}
case 3:
{
printf("숫자 3를 눌렀습니다.\n")
break;
}
case 4:
{
printf("숫자 4를 눌렀습니다.\n")
break;
}
case 5:
{
printf("숫자 5를 눌렀습니다.\n")
break;
}
default:
{
printf("count == 기타");
break;
}
}
return 0;
}
===========================================
문제 : 저번시간에 if문으로 만든 프로그램에서 그 if문을
변수 count에
90점 이상 이면 1
80점 이상 이면 2
70점 이상 이면 3
60점 이상 이면 4
59점 이하 이면 5
를 가지게 바꾸고
그 count값을 switch문으로 만들어
1이면 " 수입니다"
2이면 " 우입니다"
3이면 " 미입니다"
4이면 " 양입니다"
1이면 " 가입니다"
출력하는 문장을 만드시오~