본문 바로가기
IT/C

C언어 조건문

by -_-* 2021. 1. 10.
반응형

안녕하세요! 이미보라입니다. 

지난 포스트에서 우리는 C언어에서 사용되는 연산자의 기능들을 살펴보았습니다. 

 

 

오늘은 어떠한 기능을 수행할 때 조건에 따라서 수행하는 결과가 달라지는 조건문에 대해서 알아보겠습니다. 

조건문은 크게 if문, if-else문, 다중 if문 switch-case문으로 나뉘며 하나씩 살펴봅시다. 

 

 

 

if문 

if (조건식) 명령1; 

if(조건식) { 명령1; ...; 명령n; }

if문의 형식에서 조건식이 참일 때, 명령을 수행하고, 거짓이라면 수행하지 않습니다. 

이때 만약 조건식이 참일 때, 수행되어야 하는 명령문의 갯수가 복수개라면 {} 중괄호로 묶어 하나의 블록을 만들어주면 면 {} 중괄호 속의 모든 명령문이 수행됩니다. 

 

 

C언어 조건문 if문 실습예제입니다. 

#include <stdio.h>

int main(void) 
{
int number; 

printf("숫자 정수를 입력하세요 : "); 
scanf("%d", &number); 

if (number<0)
	number*= -1;
printf("절대값은 %d입니다. \n", number); 

}

정수를 입력받고 if문을 이용하여 절대값을 구하는 예제입니다. if문 구문을 살펴보면, 입력받은 수 number가 만약 0보다 작은 음수라면 , 다음 문장인 number*=-1; 을 실행합니다. *=는 지난 포스트에서 살펴봤던 복합대입연산자로, number = number*-1; 문장과 같은 기능을 합니다. 따라서 음수일 때 -1을 곱하여 절댓값을 구하는 명령을 수행합니다. 

 

 

위의 예제를 웹컴파일러로 수행하면 다음과 같은 결과를 확인할 수 있습니다. 

 

 

if- else문 

if (조건식
    명령어1 ; 
else 
    명령어2; 

if문의 형식의 조건이 참일 때, 명령문1을 실행하고 , 거짓이라면 else 이후의 명령어2를 수행합니다. 

즉 조건에 따라 명령문1 또는 명령문 2를 수행합니다. 

 

 

 

C언어 조건문 if-else문 실습 예제입니다. 

#include <stdio.h>

int main(void) 
{
	int number; 

	printf("숫자 정수를 입력하세요 : "); 
	scanf("%d", &number); 
	
	if (number<0)
		printf("%d는 음수입니다. \n", number);
	else 
		printf("%d는 양수입니다. \n", number);

}

조건식이 참일때와 거짓일 때 수행되어야 하는 명령이 다르다면 if-else 구문을 사용하면 됩니다. 

위의 예제같은 경우 입력받은 수가 0보다 작으면 음수입니다를 출력하고 입력받은 수가 0보다 작지 않으면 양수입니다라고 출력하는 예제랍니다. 

 

위의 예제를 웹 컴파일러로 수행하면 다음과 같은 결과를 확인할 수 있습니다. 

 

 

다중 if문 

if (조건식1
    명령문1;
else if (조건식2
    명령문2;
else if (조건식3) 
    명령문3; 
...
else 
    명령문n; 

조건식이 1개가 아닌 여러개를 가질 때 다중 if문을 이용하여 처리할 수 있습니다. 

각 조건식 중 조건식과 일치하면, 그 다음에 위치한 명령문을 수행하고, 만약 모든 조건식과 일치하지 않는다면 else 뒤에 위치한 명령문이 실행됩니다. 

다중 if문의 경우 순차적으로 조건식들을 검사합니다. 조건식1이 참이면 명령1을 수행하고 다중 if문 구문을 빠져나갑니다.  만약 조건식1이 거짓이라면 다음 조건식인 조건식2를 검사하여 참과 거짓의 유무를 판별합니다. 이런식으로 모든 조건식을 검사했으나 참을 만족하는 조건식이 없다면 else 키워드 뒤에 위치한 명령문n을 수행하고 다중if문을 종료합니다. 

 

 

다음은 C언어 조건문 다중if문 실습 예제입니다. 

#include <stdio.h>

int main(void) 
{
	int number; 

	printf("숫자 정수를 입력하세요 : "); 
	scanf("%d", &number); 
	
	if (number<0)
		printf("%d는 음수입니다. \n", number);
	else if (number >0)
		printf("%d는 양수입니다. \n", number);
	
	else 
		printf ("입력한 수는 0입니다. \n");
		

}

우리가 위의 if-else문 예제에서는 0일 때의 처리를 하지 않았지만, 다중 if문을 이용하면 조건식을 복수개를 설정할 수 있기 때문에 정수를 음수, 양수, 0 세 가지로 구분이 가능합니다. 

 

위의 예제를 웹 컴파일러로 수행하면 입력한 수에 따라서 출력되는 결과가 달라짐을 확인할 수 있습니다. 

 

 

 

switch-case문

switch(정수식
{
    case 값1 : 명령1; break; 
    case 값2 : 명령2; break; 
    case 값3 : 명령3; break; 

.... case 값n : 명령n; break;
    default : 명령n+1;  
}

정수식을 만족하는 case 값이 있다면 해당되는 명령문을 수행하고 switch-case문을 종료합니다. 

다만, 정수식의 값이 모두 불일치한다면 default 이후 명령문을 수행하고 switch-case문을 종료합니다.

다중 if문과 달리, 정수식 조건에 일치하는 값이 있다면 해당하는 명령을 수행하지만 break; 키워드가 없다면 다음 case값을 다시 비교합니다.

다시 말해서, 정수식의 값이 일치하는 case 값을 찾아 해당하는 명령문을 수행하고 더 이상 switch-case문이 수행되지 않기를 원한다면 반드시 break 키워드를 작성해줘야 합니다. 

 

 

다음은 C언어 조건문 switch-case문 예제입니다. 

 

#include <stdio.h>

int main(void) 
{
	int score; 

	printf("점수를 입력하세요 ( 0 <점수 <6):"); 
	scanf("%d", &score); 
	
	switch(score)
	{
		case 5 : printf("수\n"); break; 
		case 4 : printf("우\n"); break; 
		case 3 : printf("미\n"); break; 
		case 2 : printf("양\n"); break; 
		case 1 : printf("가\n"); break; 
		
        default : printf("잘못입력했습니다. \n");
	}
		
}

입력하는 점수 값에 따라서 출력하는 문자열이 다릅니다. 만약 점수의 값이 1과 5 사이에 없다면 모든 case값과 불일치하여 default 키워드 뒤의 명령문인 '잘못 입력했습니다.'가 출력됩니다. 

 

위의 예제를 웹 컴파일러로 수행하면 입력한 수에 따라서 출력되는 결과가 달라짐을 확인할 수 있습니다. 

 

오늘 우리는 프로그램의 흐름을 제어할 수 있는 첫 번째 C언어의 조건문인 if문, if-else문, 다중 if문, switch-case문을 살펴보았습니다. 다음 포스트에서는 반복문에 대해서 알아보도록 하겠습니다. 감사합니다. 

 

 

반응형

'IT > C' 카테고리의 다른 글

C언어 분기문 break /continue /goto / return  (0) 2021.01.12
C언어 반복문  (0) 2021.01.11
C언어 연산자2  (0) 2021.01.02
C언어 연산자 1  (0) 2021.01.01
C언어 표준입출력  (0) 2020.12.31

댓글