프로그램 사용자로부터 주민등록번호를 입력 받아서 유효한 주민등록번호인지 확인하여 주는 프로그램을 작성하자. 프로그램 사용자가 정상적인 주민등록번호를 입력할때까지 입력은 계속되어야 하며, 유효한 주민등록번호의 조건은 다음과 같다.
- 바(-)를 포함하여 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 }
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 개의 댓글: