값에 따라 수행할 구문을 선택하는 switch case 문[언제나 C언어]

안녕하세요. 언제나 휴일의 언휴예요.

선택문

C언어에서는 특정 표현의 값에 따라 구문을 선택하여 수행하는 switch 선택문을 제공하고 있어요.

switch(표현)

{

case 상수: [수행 구문] [break]

case 상수: [수행 구문] [break]

[default:] [수행구문] [break]

}

switch 선택문에서 중괄호는 반드시 달아야 합니다. 물론 개발할 때 중괄호를 달지 않으면 문법 오류가 발생하기 때문에 개발할 때 실수할 확률은 지극히 낮겠죠.

여러 조건에 따라 수행할 구문을 표현할 때 if 조건문을 사용하면 복잡할 때가 있습니다. 이 때 switch 선택문으로 해결할 수 있는지 고민해 보세요.

학점 부여하기로 조건문과 선택문 비교

예를 들어 점수를 입력받아 학점을 A, B, C, D, F를 부여하는 작업은 if 조건문으로 작성하면 다소 복잡할 수 있어요.

다음 코드는 if 조건문으로 구현한 예제 코드입니다.

점수를 10으로 나눈 몫에 따라 학점을 부여하고 있어요.

#include <stdio.h>
int main()
{
    int score = 0;
    printf("점수(0~100):");
    scanf_s("%d", &score);
    if ((score < 0) || (score > 100))
    {
        printf("범위를 벗어났습니다.\n");
        return;
    }

    printf("입력한 점수는 %d이고 학점은 ", score);
    int level = score / 10;
    if (level == 10 || level == 9)
    {
        printf("A");
    }
    else if (level == 8)
    {
        printf("B");
    }
    else if (level == 7)
    {
        printf("C");
    }
    else if (level == 6)
    {
        printf("D");
    }
    else
    {    
        printf("F");
    }
    printf("입니다.\n");
    return 0;
}

이를 switch 선택문으로 작성하면 다음처럼 작성할 수 있어요.

#include <stdio.h>
int main()
{
    int score = 0;
    printf("점수(0~100):");
    scanf_s("%d", &score);
    if ((score < 0) || (score > 100))
    {
        printf("범위를 벗어났습니다.\n");
        return;
    }

    printf("입력한 점수는 %d이고 학점은 ", score);
    int level = score /10;
    switch (level)
    {
    case 10:
    case 9: printf("A"); break;
    case 8: printf("B"); break;
    case 7: printf("C"); break;
    case 6: printf("D"); break;
    default: printf("F"); break;
    }
    printf("입니다.\n");
    return 0;
}

switch 선택문에서 case 뒤에는 상수 표현이 오며 콜론(:)으로 레이블을 지정합니다.

switch 뒤에 표현 값에 따라 특정 레이블부터 코드를 수행하며 break 문을 만나기 전까지 수행합니다.

위 코드에서 level이 10과 9일 때 학점 A를 부여하기 위해 case 10: 뒤에 아무 코드를 작성하지 않고 case 9: 뒤에 A를 출력하는 구문을 표현하였습니다.

그리고 case 상수 표현에 해당하지 않는 나머지 모든 상황에서 수행할 구문은 defaut: 레이블을 사용하여 표현합니다.

주의할 점은 break를 만나기 전까지 수행한다는 점이예요.

기본 연습


하나의 문자를 입력받아 ‘i’ 혹은 ‘I’일 때는 추가, ‘d’ 혹은 ‘D’일 때는 삭제 , ‘s’ 혹은 ‘S’일 때는 검색, ‘l’, ‘L’일 때는 전체 출력이라고 화면에 출력하는 프로그램을 작성하시오.