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

조회수 575회

주민등록번호 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 답변

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

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

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

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

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

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

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)