Coding & Programming/C언어 기초(A-Z)

[C언어 기초코딩: 예제로 간단 정리] 4. 조건문(Conditions) : if, if else, switch, break, continue, goto

mainCodes 2021. 3. 8. 20:00

JollyTree의 C언어 기초코딩: 예제로 간단 정리 - 4. 조건문(Conditions) : if, if else, if if, switch, break, continue, goto

안녕하세요 JollyTree(•̀ᴗ•́)و입니다.

지난 시간에는 자료형과 변수에 대해 정리하였습니다. 이번에는 조건문에 대해 정리하려고 합니다.

 

조건문이라 함은 C언어로 만들어진 코드가 순차적으로 실행되고 조건에 따라 분기하면서 프로그램의 흐름을 제어하거나 실행 순서를 변경하기 위한 구문입니다. 예를 들어 여러 갈래의 길이 있을 때 선택을 하는 것 처럼 말입니다.

C언어는 다음과 같은 조건문을 제공합니다. 

- if 문 
- if, else 문 
- 중첩 if 문 
- switch 문
- break 문
- continue 문
- goto 문

각 구문의 조건식이 참(True)이면 문장을 실행하게 됩니다. 조건이 참인 경우 실행할 문장이 여러 줄의 코드로 구성되어 있다면 중괄호 '{' '}'를 이용하여 묶어줍니다. 문장이 한 줄의 코드로 되어 있다면 중괄호를 사용하지 않아도 괜찮습니다.

 

- if 문 사용법

예시1)

if(조건식)

{            // 중괄호 시작 

  문장;

  문장;

}            //중괄호 끝
 

예시2)

if(조건식)

{

    if(조건식)
        문장;

}
 

예시3)

if(조건식)
   문장;
e lse if(조건식)
    문장;
else
    문장;

- switch, break 문 사용법:

예시1)

switch(조건식)

{

    case xxx1:  //xxx1은 경우의 값입니다.

        break;

    case xxx2:

        break;

    case xxx3:

        break;

    default:

        break;

}

예시2)

switch(조건식)

{

    case xxx1:  //xxx1은 경우의 값입니다.

        break;

    case xxx2: //xxx2, xxx3인 경우

    case xxx3:

        break;

    default:

        break;

}

break 문은 switch 문 뿐만 아니라 반복문을 중단할 경우에도 사용됩니다. 반복문 관련 자료 포스팅할 때 continue문과 함께 다시 한번 예제로 정리해 보겠습니다.

 

- goto 문 사용법:

label_xxxx:

    문장;

    ...

    ...

goto label_xxxx;


아래 예제는 위 조건문들을 최소한 한번씩 사용한 예제로 컴퓨터가 생각(?)한 1~9 사이의 숫자를 사람이 맞추는 게임을 간단히 작성해 보았습니다. 위 사용법과 아래 예제를 비교하면서 보면 도움이 될 것 같습니다. 아래 예제는 조건문 설명을 목적으로 만든 자료이다 보니 게임 구성에서 조금은 앞뒤가 맞지 않는 부분이 있습니다. 이해해 주셔용 ^^

UP&DOWN 게임 예제(Example):

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
 
#define ANSWER_YES  'y'
#define MAX_COUNT   5
 
int main(void)
{
    int input_number;
    int i = 0;
    int random_number;
    char again;
    int try_count=1;
 
start: //goto문 레이블 선언
    srand(time(NULL));
        
    random_number = (rand() % 9+ 1;
    printf("%d\n", random_number);
 
    printf(">> -------------------------------------------------------------\n");
    printf(">> 컴퓨터가 1~9 중 숫자 하나를 정했습니다.숫자를 맞춰 보세요\n");
    printf(">> -------------------------------------------------------------\n");
    for (i = 0; i < MAX_COUNT; i++//답을 맞출 기회 동안 총 5회(0~4) 반복합니다.
    {
        printf(">> 숫자를 입력하세요 :");
        scanf("%d"&input_number);
 
        if (input_number == random_number)
        {
            printf("\n>> 훌륭합니다. 정답입니다!!\n");
            break;          //정답을 맞췄으니, 반복할 필요가 없어 반복을 중단합니다.
        }
 
        printf(">> 혹시 잘 못입력 했으면 다시 입력할까요 ?(y/n)\n");
        scanf(" %c"&again);
        if (again == ANSWER_YES)
        {
            i = i - 1;
            continue;       //프로그램의 흐름이 for(;;)으로 이동되며, 
                            //이하 if()문과 true_count = try_count +1; 부분은 실행이 되지 않습니다.
        }
 
        if (input_number > random_number)
            printf(">> UP: 입력한 숫자는 컴퓨터가 생각한 숫자보다 큽니다.\n");   
        else
            printf(">> DOWN: 입력한 숫자는 컴퓨터가 생각한 숫자보다 작습니다.\n");
 
        try_count = try_count + 1;
    }
 
    switch (try_count)
    {
        case 1:
            printf(">> %d 번째에 답을 맞췄으니 \"노트북\"을 드립니다.\n", try_count);
            break;
        case 2:
            printf(">> %d 번째에 답을 맞췄으니 \"피자\"를 드립니다.\n", try_count);
            break;
        case 3:
            printf(">> %d 번째에 답을 맞췄으니 \"아이스크림\"을 드립니다.\n", try_count);
            break;
        case 4:
            printf(">> %d 번째에 답을 맞췄으니 \"사탕\"을 드립니다.\n", try_count);
            break;
        case 5:
            printf(">> %d 번째에 답을 맞췄으니 \"음료수\"를 드립니다.\n", try_count);
            break;
        default:
            break;
    }
 
    printf("\n>> 게임을 다시 할까요 ? (y/n)");
    scanf(" %c"&again);
    if (again == ANSWER_YES)
        goto start;
 
    printf("\n\n>> 종료전 설문조사 - 답을 맞추기 위한 적당한 횟수는 무엇이라고 생각합니까?(숫자 입력): ");
    scanf("%d"&try_count);
    if (try_count > 0 && try_count <= 5)
        printf(">> 입력한 값이 1~5 범위에 해당됩니다.\n");
    else if (try_count > 5 && try_count <= 10)
        printf(">> 입력한 값이 6~10 범위에 해당됩니다.\n");
    else if (try_count > 10 && try_count <= 15)
        printf(">> 입력한 값이 10~15 범위에 해당됩니다.\n");
    else
        printf(">> 입력한 값의 범위가 허용 범위를 초과합니다.\n");
 
    printf(">> 설문에 응해주셔서 감사합니다.\n");
    printf(">> UP&DOWN 게임을종료합니다.\n");
 
    return 0;
}
        cs

실행결과(Output):

 

 


각 조건문들을 글보다는 예제 코드로 정리해 보았습니다.  이상 JollyTree였습니다 (•̀ᴗ•́)و