본문 바로가기

프로그래밍/C언어

[C언어] 조건문(if,switch)에 대해 알아보자.

안녕하세요 ! 초보개발자 입니다. 

이 블로그는 개인 공부 정리용 블로그 입니다. 

혹 잘못된 내용이 있다면 지적 부탁드리겠습니다.

그리고 질문주신다면 최대한 아는선에서 답변드리도록 하겠습니다.

그럼 시작하도록 하겠습니다.




조건문


프로그램의 흐름을 바꾸는 역활을 하는 문장을 제어문이라고 하는데 이 제어문에는 조건문과 반복문이 있습니다. 조건문에는 if, switch 가 있는데 먼저 if문에 대해서 알아 보겠습니다.


1) if문 

 먼저 if문이 어떻게 생겼는지 살펴 보겠습니다.


 if(조건식) {


조건식이 참일 경우 실행 되어야 할 코드

 }


말로 설명 하자면 조건식이 참일 경우 { } 괄호안에 있는 코드들이 사용 됩니다.  예제를 통해 살펴 보겠습니다.


1
2
3
4
5
6
7
8
9
10
11
#include<stdio.h>
 
int main(void) {
    int score;
    printf("당신의 점수를 입력해 주세요\n");
    scanf_s("%d"&score);
    if (score > 90printf("합격 입니다\n.");
    if (score < 90printf("불합격 입니다.\n");
    return 0;
}
 

cs


어떤가요 답이 예상 되시나요 ?  점수를 입력 받고 90점 이상이면 합격 90점 이하면 불합격이라고 결과가 나올 것입니다. if문 어렵지 않죠 ? 


다음은 if-else 문에 대해서 알아 보겠습니다. 

어떻게 생겼는지 한번 볼까요 ? 


if(조건식) {


조건식이 참일 경우 실행 되어야 할 코드

 } else{

조건식이 거짓일 경우 실행되는 코드

 }


그렇다면 위의 코드를 if-else 문으로 바꿔 보겠습니다.


1
2
3
4
5
6
7
8
9
10
11
#include<stdio.h>
 
int main(void) {
    int score;
    printf("당신의 점수를 입력해 주세요\n");
    scanf_s("%d"&score);
    if (score > 90printf("합격 입니다\n.");
    else printf("불합격 입니다.\n");
    return 0;
}
 

cs


블럭내의 문장이 하나 뿐이라면 {} 괄호를 생략할 수 있습니다.


다음은 if-else if문에 대해서 알아보겠습니다. if-else if문은 하나의 조건문에 여러개의 조건식을 쓸 수 있습니다. 


위의 예제를 if-else if 문으로 조금 변경 해보겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<stdio.h>
 
int main(void) {
    int score;
    printf("당신의 점수를 입력해 주세요\n");
    scanf_s("%d"&score);
    if (score > 90) {
        printf("A학점 입니다\n.");
    }
    else if (score > 80) {
        printf("B학점 입니다.\n");
 
    }
    else if (score > 70) {
        printf("C학점 입니다.\n");
    }
    else {
        printf("F학점 입니다.\n");
    }
    return 0;
}
 

cs

 

점수를 75 점이라고 입력하였을 경우 첫 번쨰 조건식부터 순서대로 평가한 후 조건에 맞는 식을 만나면 해당 블럭(C학점 입니다)을 수행하고 if-else if 문 전체를 벗어나게 됩니다. 마지막에 else 문은 생략이 가능하나 생략이 되었을 때  점수가 50 점이라면 어떤 블럭도 수행 되지 않을 것입니다.


다음은 중첩 if문에 대해서 알아 보겠습니다.


if(조건식1) {

     조건식이 참일 경우 실행 되어야 할 코드

if(조건식 2){

조건식1과 조건식2가 모두 참일 때 실행되는 코드

}else {

조건식1이 참이고 조건식2가 거짓일 때 실행되는 코드

}

 } else{

조건식1이 거짓일 경우 실행되는 코드

 }


이런 형태로 생겼습니다.


예제를 통해서 알아 보겠습니다. 위의 예제를 변형해 보겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include<stdio.h>
 
int main(void) {
    int score;
    printf("당신의 점수를 입력해 주세요\n");
    scanf_s("%d"&score);
    if (score > 90) {
        if(score>95){
        printf("A+학점 입니다\n.");
        }else {
        printf("A-학점 입니다\n.");
        }
    }
    else if (score > 80) {
        if(score>95){        
            printf("B+학점 입니다\n.");
        }
        else {
        printf("B-학점 입니다\n.");
        }
    }
    else if (score > 70) {
        printf("C학점 입니다.\n");
    }
    else {
        printf("F학점 입니다.\n");
    }
    return 0;
}
 
cs

직접 실행하여 결과를 보시면 이해가 쉽게 가실 것입니다.


2)switch

이번에는 두번째 조건문인 switch문에 대해서 알아 보겠습니다. if문의 경우에는 조건식의 결과가 참,거짓으로만 되어있기 때문에 경우가 많아질 수록 else if를 추가 해야 합니다. 하지만 switch문은 하나의 조건식으로 많은 경우의 수를 처리 할 수 있습니다.


먼저, switch문은 어떻게 생겼는지 알아 보겠습니다.


switch(조건식){

case 값1:

조건식의 결과가 값1과 같을경우 실행되는 코드

break;

case 값2:

조건식의 결과가 값2와 같을경우 실행되는 코드

break;

case 값3:

조건식의 결과가 값3과 같을경우 실행되는 코드

break;

default:

일치하는 결과가 없을 경우 실행되는 코드

}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include<stdio.h>
 
int main(void) {
    int month;
 
    printf("현재의 월을 입력하시오");
    scanf_s("%d"&month);
 
    switch (month) {
 
    case 3case 4case 5:
        printf("봄입니다.");
        break;
    case 6case 7case 8:
        printf("여름입니다.");
        break;
    case 9case 10case 11:
        printf("가을 입니다.");
        break;
    case 12case 1case 2:
        printf("겨울입니다.");
        break;
 
 
    }
 
    return 0;
}
 
cs

switch문은 조건식을 먼저 계산한 다음 그 결과와 일치하는 case 문으로 이동 합니다. case 문아래에 있는 코드를 실행하고 break; 문을 만나면 switch문을 벗어 나게 됩니다.


직접 소스를 실행하여 결과를 알아보세요.


여기까지 제어문을 알아 보았습니다. 다음시간에는 반복문에 대해서 공부해보도록 하겠습니다.


수고하셨습니다.


'프로그래밍 > C언어' 카테고리의 다른 글

[C언어] 배열(1)에 대해 알아보자.  (0) 2017.04.11
[C언어] 반복문에 대해 알아보자.  (2) 2017.04.10
[C언어] 연산자  (2) 2017.04.05
[C언어] 진법  (0) 2017.04.04
[C언어] printf 함수와 scanf 함수  (1) 2017.04.03