-
21장. 실력 다지기 연습문제 03 ) 문제 6 [주민등록번호의 유효성 판단]IT/솔루션) 난 정말C... 없다구요 2019. 4. 17. 20:20
<2016. 9. 26. 21:01>
21장. 실력 다지기 연습문제 03 ) 문제 6 [주민등록번호의 유효성 판단]
/* 프로그램 사용자로부터 주민등록번호를 입력 받아서 유효한 주민등록번호인지 확인하여 주는 프로그램을 작성하자. 프로그램 사용자가 젖ㅇ상적인 주민등록번호를 입력할 때까지 입력은 계속되어야 하며, 유효한 주민등록번호의 조건은 다음과 같이 제한된다. - 바(-)를 포함하여 14ㅐ의 문자로 이뤄진다. ( YYMMDD - Sxxxxxx ) - MM은 01이상 12이하이다. - DD는 01이상 31이하이다. 단 MM이 02이면 01이상 29 이하이다. - S는 1 아니면 2가 와야 한다. 보다 복잡한 형식을 취하여 정교한 검사도 가능하지만, 이 정도만 확인을 하도록 하겠다. */ #include<stdio.h> #include<stdlib.h> #pragma warning(disable : 4996) int main(void) { char Ju_num[20]; int year, month, day; int len; char sex; int differ = '4' - 4; while (1) { printf("바(-)를 포함한 주민등로번호 입력 : "); scanf("%s", Ju_num); len = 0; while (Ju_num[len] != '\0') len++; year = (Ju_num[0] - differ) * 10 + (Ju_num[1]-differ); month = (Ju_num[2] - differ) * 10 + (Ju_num[3] - differ); day = (Ju_num[4] - differ) * 10 + (Ju_num[5] - differ); if (Ju_num[7] != '1' && Ju_num[7] != '2') sex = 'X'; else sex = 'O'; if (Ju_num[6] != '-' || len != 14) printf("형식이 올바르지 않습니다.\n"); else if (month > 12 || month < 1) printf("월 정보가 잘못되었습니다.\n"); else if (month == 2) { if (day > 29 || day < 1) { printf("일 정보가 잘못되었습니다.\n"); } } else if (day > 31 || day < 1) printf("일 정보가 잘못되었습니다.\n"); else if (sex == 'X') printf("성별 정보가 잘못되었습니다.\n"); else { printf("정상적인 주민번호 입력에 감사 드립니다.\n"); break; } } system("pause"); return 0; }
'IT > 솔루션) 난 정말C... 없다구요' 카테고리의 다른 글
22장. 포인터의 개념적인 이해) 문제 22-3 [포인터의 기능 이해하기] - 1 (0) 2019.04.17 22장. 포인터의 개념적인 이해) 문제 22-1 [배열이 정말 나란히 메모리 공간에 할당되는 자료인가] (0) 2019.04.17 21장. 실력 다지기 연습문제 03 ) 문제 5 [문자열로 입력된 연산문의 분석] (0) 2019.04.17 21장. 실력 다지기 연습문제 03 ) 문제 4 [회문 판단] (0) 2019.04.17 21장. 실력 다지기 연습문제 03 ) 문제 3 [문자열의 복사] (0) 2019.04.17