c언어 초보가 질문드려요...

조회수 65회

주민등록번호 7번째 숫자를 이용해서 몇년대생인지를 알아내는 프로그램을 만드는 중입니다.

어디가 틀렸는지를 잘 모르겠어요.

주석 단 부분이 틀린건지요.

무슨 숫자를 입력하든 '~ 0년대생 ~' 이라고 출력돼요.

#include <stdio.h>

int main()
{
    char id[15];
    int  year;

    printf("주민등록번호 : ");
    scanf("%s", id);

    switch(id[6]) //이 부분이 틀린건가요? 
{  
    case 0: case 9: year = 1800; break;
    case 1: case 2: case 5: case 6: year = 1900; break;
    case 3: case 4: case 7: case 8: year = 2000; 
}
    printf("당신은 %d년대 생 입니다.\n", year);

    return 0;
}

1 답변

  • 좋아요

    2

    싫어요
    채택 취소하기

    C언어는 자료형을 굉장히 깐깐하게 지켜야 하는 언어입니다.

    id를 입력받으실 때 id의 자료형이 char의 배열이고, 따라서 각각의 값은 char입니다.

    그런데 case에서는 int 형태의 값인지를 확인하고 있습니다.

    한자릿수 숫자로 이루어진 char 'n'은 한자릿수 숫자인 int n과는 다른 값이기 때문에 어떤 case문도 동작하지 않고, 따라서 year를 선언했을 때 자동으로 초기화된 0이 출력되는 것입니다.

    간단하게 문제를 해결하시는 방법은, case의 각 숫자들을 ''로 감싸서 char 형태로 만들어주시면 됩니다.

    • 크.. 짜릿하네요 정말 감사합니다!! alps9090 2020.5.22 11:39

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.