조건문
조건문은 조건에 따라서 동작이 달라지는 문장으로, if-else문과 switch-case문이 있습니다. 상황에 따라서 두 조건문을 이용하면 여러가지를 구현할 수 있습니다.
- if-else문
if의 뜻은 만일에,만약에 라는 뜻이잖아요? 그 "만일,만약"이라는 조건에 맞으면 실행하는 조건문입니다. if문은 if절과 else절, else if절로 구성됩니다. else if절은 다른 조건의 if라고 보시면 됩니다. 그리고 if절만 사용할 수 있고, else절과 else if절은 무조건 사용해야만 하는건 아닙니다. if괄호안에 조건이 참일 때 if문을 수행하고, else 절은 조건이 거짓일때 수행합니다.
-------------------------------------------------------------------------------------------
if(조건){
조건이 참일 때 할 동작들
}
else if(if와는 다른 조건){
조건이 참일 때 할 동작들
}
else{
if의 조건도 else if들의 조건이 모두 거짓일 때 할 동작들
}
-------------------------------------------------------------------------------------------
저번에 했던 알파벳 출력을 if-else문을 이용 해 구성해보았습니다. 아래코드는 if문은 대문자를 소문자로 변환, else if문은 소문자를 대문자로 변환, else는 영문이 아닌 문자를 입력했다고 출력해주는 코드입니다.
-------------------------------------------------------------------------------------------
#include <stdio.h>
#pragma warning(disable:4996) // viusal studio에서 scanf 함수를 사용하기위해 사용
int main()
{
char ch; //입력받을 변수선언
printf("영문 대문자는 소문자로, 소문자로는 대문자로 변환합니다.\n문자를 입력하세요 : ");
scanf("%c", &ch); // 입력받는 함수
if (ch >= 65 && ch <= 90) // 대문자를 입력했을 때
{
printf("소문자로 변환 : %c\n", ch + 32);
}
else if (ch >= 97 && ch <= 122) // 소문자를 입력했을 때
{
printf("대문자로 변환 : %c\n", ch - 32);
}
else{ // 대문자도 소문자도 아닌 문자를 입력했을 때
printf("영문이 아닌 기타 문자를 입력하셨습니다. \n");
}
}
-------------------------------------------------------------------------------------------
각각 문자를 입력했을 때, 출력되는 결과는 다음과 같습니다.
![](https://t1.daumcdn.net/cfile/tistory/2702F73F585516572D)
- switch-case문switch문은 다중선택구조라고 불리는 조건문입니다. if-else문으로 여러 조건을 부여할 경우 코드가 복잡해지는데, switch문을 이용하면 보다 쉽게 구현할 수 있습니다. 정수식을 입력받아 동작하며, case문의 숫자에따라 실행이됩니다. default는 case문으로 정한 조건을 모두 벗어나는 경우 실행됩니다.
-------------------------------------------------------------------------------------------
switch(정수식)
{
case <정수값1>:
할일1;
break;
case <정수값2>:
할일2;
break;
…
default:
할일n;
}
-------------------------------------------------------------------------------------------
break를 쓰지않으면 case를 여러개 묶어서 사용할 수 있습니다.
-------------------------------------------------------------------------------------------
switch(정수식)
{
case 1 :
할일1;
case 2 : // case 2까지 실행
할일2;
break;
…
default:
할일n;
}
-------------------------------------------------------------------------------------------
switch문을 활용해 두 수를 계산하는 간단한 계산기를 만들어봤습니다. 소수점 계산을 위해 계산할 두 수를 double형으로 선언하고 소수점 두자리까지만 출력되게 설정하였습니다. 마지막 default절에 main으로 return한 이유는 잘못입력했을 때 다시 처음으로 되돌아가기 위합입니다.
-------------------------------------------------------------------------------------------
#include <stdio.h>
#pragma warning(disable:4996) // viusal studio에서 scanf 함수를 사용하기위해 사용
int main()
{
int num; // switch문에 사용할 정수값 변수선언
double x, y; // 계산에 사용할 dobule형 변수선언
printf("1)'+' 2)'-' 3)'*' 4)'/' \n계산하고싶은 항목의 번호를 입력해주세요 : ");
scanf("%d", &num); // switch문에 사용할 정수값을 입력받음
switch (num)
{
case 1:
printf("계산할 x,y를 입력하세요 : ");
scanf("%lf %lf", &x, &y); //계산할 x,y를 입력받음
printf("%.2lf + %.2lf = %.2lf \n", x, y, x + y); // 입력받은 x,y와 계산된 결과값 출력
break;
case 2:
printf("계산할 x,y를 입력하세요 : ");
scanf("%lf %lf", &x, &y); //계산할 x,y를 입력받음
printf("%.2lf - %.2lf = %.2lf. \n", x, y, x - y); // 입력받은 x,y와 계산된 결과값 출력
break;
case 3:
printf("계산할 x,y를 입력하세요 : ");
scanf("%lf %lf", &x, &y); //계산할 x,y를 입력받음
printf("%.2lf * %.2lf = %.2lf. \n", x, y, x*y); // 입력받은 x,y와 계산된 결과값 출력
break;
case 4:
printf("계산할 x,y를 입력하세요 : ");
scanf("%lf %lf", &x, &y); //계산할 x,y를 입력받음
printf("%.2lf / %.2lf = %.2lf \n", x, y, x / y); // 입력받은 x,y와 계산된 결과값 출력
break;
default:
printf("잘못된 값을 입력하셨습니다. 1~4번 항목을 선택해주세요. \n");
return main(); // main 함수로 return
}
-------------------------------------------------------------------------------------------
아래 그림은 실행결과입니다 처음에 항목의 번호를 입력하면 switch문의 case 4가 실행이됩니다. x,y를 입력받고 계산을 마친뒤에 break에 의해 프로그램이 종료가 됩니다.
![](https://t1.daumcdn.net/cfile/tistory/274C7F375855324302)
아래그림은 1~4가 아닌 다른값을 입력했을 때 default절이 실행이되고, 메인함수를 리턴해서 다시 처음부터 실행되는걸 확인할 수 있습니다.
![](https://t1.daumcdn.net/cfile/tistory/2341D43B5855319810)
* 출처 : 한국기술교육대학교 온라인평생교육원 C 프로그래밍_1
스타일 C프로그래밍 저.김종훈,김종진 출.WellBook