서적: 난 정말 C programming을 공부한 적이 없다구요 프로그램 사용자로부터 주민등록번호를 입력 받아서 유효한 주민등록번호인지 확인하여 주는 프로그램을 작성하자. 프로그램 사용자가 정상적인 주민등록번호를 입력할때까지 입력은 계속되어야 하며...

난 정말 c programming을.. 21장. 6번.

서적: 난 정말 C programming을 공부한 적이 없다구요

프로그램 사용자로부터 주민등록번호를 입력 받아서 유효한 주민등록번호인지 확인하여 주는 프로그램을 작성하자. 프로그램 사용자가 정상적인 주민등록번호를 입력할때까지 입력은 계속되어야 하며, 유효한 주민등록번호의 조건은 다음과 같다.

- 바(-)를 포함하여 14개의 문자로 이뤄진다. : YYMMDD - Sxxxxxx
- MM은 01이상 12이하이다.
- DD는 01이상 31이하이다. 단 MM이 02이면 01이상 29이하다.
- S는 1 아니면 2가 와야 한다.

보다 복잡한 형식을 취하여 정교한 검사도 가능하지만, 이 정도만 확인을 하도록 하겠다




  1 #pragma warning(disable:4996
  2 #include  
  3 int main(void
  4
  5     char str[30] = { 0 };
  6     int i = 0
  7     int len = 0
  8
  9     printf("바(-)를 포함한 주민등록번호 입력 : "); 
 10     scanf("%s", str); 
 11
 12       
 13     while (str[2]<2 | (str[2] = '1' && str[3] < '3')  )
 14     { 
 15         printf("입력 오류 : 월 표기"); 
 16         printf("참고 : 주민등록번호 상에서 월은 01이상 12 이하가 되어야 합니다.\n");                 printf("다시입력 \n");
 17         scanf("%s", str); 
 18     } 
 19     if (str[2] < 2 || (str[2] = 1 && str[3] < 2)) 
 20    // 월의 첫번째 단위가 2 이하, 또는 첫번째단위가 1이며 두번째 단위가 2를 넘을때.12월이하. 
 21     { 
 22         while ((str[4] < 4 && str[4] < 2) | (str[2] == 0 && str[3] == 2)) 
 23          // DD는 31 이하| 월이 02이면 밑의 소스 실행 
 24         { 
 25             printf("입력 오류 : 일 표기 \n"); 
 26             printf("\n"); 
 27             printf("참고 : 주민등록번호 상에서 월이 02이면 일은 \n"); 
 28             printf("01 이상 29이하 가 되어야 합니다. \n"); 
 29              
 30             printf("다시 입력 \n"); 
 31             scanf("%s", str); 
 32             if ((str[4] < 4 && str[4] < 2) | (str[2] == 0 && str[3] == 2))
 33             { 
 34                 while (str[7] < 3)
 35                 { 
 36                     printf("주민등록번호 상의 첫 뒷자리는 1 혹은 2가 되어야 합니다."); 
 37                     scanf("%s", str); 
 38                 } 
 39             }; 
 40         } 
 41     }; 
 42
 43     printf("정상적인 주민번호 입력 감사 드립니다. \n"); 
 44      
 45     return 0
 46
 47


프로그램 자체가 정확하지 않다.
소스 수정이 더 필요하다.

0 개의 댓글: