C언어 반복문과 조건문 switch

    2018-02-04 15:52:09 작성

    switch

    switch (수식) {
    case 값1:
    	수식값이 값1 일때 실행할 문장
    	break;
    case 값2:
    	수식값이 값2 일때 실행할 문장
    	break;
    default :
    	위의 수식값이 일치하지 않을때 실행할 문장
    	break;
    }

    if문은 조건에 따라 참과 거짓의 두가지의 경우의 처리를 하는 반면,
    switch문은 수식의 값에 따라 명령을 처리 합니다.
    따라서 if문의 조건과 같이 논리적 값은 사용할 수 없고, 오차가 있는 실수값도 사용하지 않습니다.
    case 값에는 오직 한개의 값만이 사용가능하고, C언어에서는 정수만 값이 올 수 있습니다.
    break문은 아직 배우지 않은 것인데, switch문을 진행하다가 break문을 만나면 switch문을 빠져나가게 됩니다.
    default 는 위의 값들이 수식과 일치 하지 않는경우 실행되며 생략이 가능합니다.
    default가 없고 모든 case가 일치하지 않으면 실행되지 않을 수 있습니다.

    #include <stdio.h>
    
    int main(void) {
        int choice;
        printf("1~5의 정수를 입력 : ");
        scanf("%d", &choice);
    
        switch (choice) {
        case 1 :
            printf("1은 One\n");
            break;
        case 2:
            printf("2는 Two\n");
            break;
        case 3:
            printf("3은 Three\n");
            break;
        case 4:
            printf("4는 Four\n");
            break;
        case 5:
            printf("5는 Five\n");
            break;
        default :
            printf("잘모르겠어요.\n");
            break;
        }
        return 0;
    }



    결과를 보면 명확히 알수 있습니다.
    choice 변수의 값에 따라 해당하는 case문이 실행되고 break문을 만나 빠져 나오는것을 알수 있습니다.
    그런데 break문을 쓰지 않는다면 어떻게 될까요?
    위의 코드에서 break;문을 다 지우고 실행하게 되면 다음과 같이 됩니다. 직접해보세요!


    위와 같이 2를 입력하여 Two를 실행하고 빠져나오는 break문이 없어서 다음 case문들까지 다 실행되는것을 볼수 있습니다.
    아래는 의도적으로 break를 빼고 프로그램한 예입니다.

    #include <stdio.h>
    
    int main(void) {
        char choice;
        printf("M.아침, A.점심, E,저녁 :");
        scanf("%c", &choice);
    
        switch (choice) {
            case 'm' :
            case 'M' :
            printf("Good Morning\n");
            break;
            case 'a' :
            case 'A' :
            printf("Good Afternoon\n");
            break;
            case 'e':
            case 'E' :
            printf("Good Evening\n");
            break;
        }
        return 0;
    }


    사용자에게 입력받을때 소문자를 입력받아도 출력이 되도록 하였습니다.
    이처럼 switch문은 break문이 선택적으로 삽입하여 사용할 수 있습니다.

    연습문제

    1. 위의 ​switch문 ​예제를 if문으로 바꾸어 보세요.

    2. if문 연습문제1번을 switch 문으로 바꾸어보세요.
    사용자로부터 사칙연산 중 하나를 선택하고 두개의 실수를 입력받아 결과를 출력하는 프로그램을 작성하세요.
    단, 나누기의 경우 0이면 0으로 나눌수 없다는 출력을 하고 종료.