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'
은 한자릿수 숫자인 intn
과는 다른 값이기 때문에 어떤 case문도 동작하지 않고, 따라서 year를 선언했을 때 자동으로 초기화된 0이 출력되는 것입니다.간단하게 문제를 해결하시는 방법은, case의 각 숫자들을
''
로 감싸서 char 형태로 만들어주시면 됩니다.
댓글 입력