Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어 중첩 switch-case 문 완벽 정리: ID·비밀번호 검증 예제

문제 상황

중첩 switch-case(nested switch-case) 문을 활용하여, 사용자가 입력한 ID를 기준으로 해당 비밀번호가 유효한지 확인하는 C 프로그램을 작성해 보겠습니다.

해결 방법

핵심 개념은 다음과 같습니다.

  • C 언어에서는 외부(outer) switch 문 안에 내부(inner) switch 문을 작성할 수 있습니다.
  • 내부 switch와 외부 switch의 case 값은 서로 동일한 값을 가질 수도 있습니다.

switch 문 작성 규칙

중첩 switch 문을 올바르게 작성하려면 아래 규칙을 지켜야 합니다.

  • 조건식(표현식)은 실행되어 하나의 결과값으로 평가됩니다.
  • case 레이블에는 반드시 상수이면서 고유한(unique) 값을 사용해야 합니다.
  • case 레이블은 콜론(:)으로 끝나야 합니다.
  • 각 case 블록에는 break 키워드를 포함해야 합니다.
  • default 레이블은 switch 문당 하나만 존재할 수 있습니다.
  • switch 문은 여러 겹으로 중첩하여 작성할 수 있습니다.

예제 코드

다음은 중첩 switch-case 문을 이용해 사용자의 ID에 따라 입력된 비밀번호가 올바른지 검사하는 C 프로그램입니다. 외부 switch가 사용자 ID를 먼저 확인하고, ID가 일치하면 내부 switch가 비밀번호를 검사하는 구조로 동작합니다.

#include <stdio.h>
int main(){
    int userid;
    int pwd;
    printf("enter userid:\n");
    scanf("%d",&userid);
    switch (userid){
        case 1234:
            printf("enter password:\n ");
            scanf("%d", & pwd);
            switch (pwd){
                case 0000:
                    printf("Tutorials Point\n");
                break;
                default:
                printf("incorrect password");
                    break;
            }
        break;
        default:
        printf("incorrect userid");
           break;
    }
}

실행 결과

프로그램을 실행하면 다음과 같은 출력을 확인할 수 있습니다.

Run 1:
enter userid:
1234
enter password:
0000
Tutorials Point

Run 2:
enter userid:
1234
enter password:
234
incorrect password

동작 원리 요약

첫 번째 실행에서는 ID로 1234를 입력했기 때문에 외부 switch의 해당 case가 실행되고, 이어서 비밀번호 0000이 일치하여 내부 switch의 case가 수행되어 성공 메시지가 출력됩니다. 반면 두 번째 실행에서는 ID는 일치했지만 비밀번호가 틀렸으므로 내부 switch의 default 레이블이 실행되어 'incorrect password'가 출력되는 것을 볼 수 있습니다. 만약 ID 자체가 틀렸다면 외부 switch의 default 레이블이 실행됩니다.