조건문

 조건문은 조건에 따라서 동작이 달라지는 문장으로, 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");

}

}

-------------------------------------------------------------------------------------------

각각 문자를 입력했을 때, 출력되는 결과는 다음과 같습니다.


- 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에 의해 프로그램이 종료가 됩니다.

아래그림은 1~4가 아닌 다른값을 입력했을 때 default절이 실행이되고, 메인함수를 리턴해서 다시 처음부터 실행되는걸 확인할 수 있습니다.


* 출처 : 한국기술교육대학교 온라인평생교육원 C 프로그래밍_1 

          스타일 C프로그래밍 저.김종훈,김종진 출.WellBook




'언어 > C' 카테고리의 다른 글

[C] 기타 제어문  (0) 2016.12.19
[C] 반복문  (0) 2016.12.18
[C] 연산자  (0) 2016.12.16
[C] 입출력함수, 기본자료형, 형변환  (0) 2016.12.15
[C] C 기본개념(2) 라이브러리와 변수  (0) 2016.12.12

+ Recent posts