데이터 구조의 c 언어 -- 신분증 합 법 판단

2150 단어 데이터 구조
신분증 의 합 법 여 부 를 판단 하 다.
#include 
int main()
{
    char a[80];
    char *p;
    int i;
    printf("         :
"
); scanf("%s",a); p=a; if(strlen(a)==18){ for(i=0;i<17;i++) { if(!(4758)) { printf ("비합법적"); exit(0); } } / * 앞의 17 자리 가 숫자 인지 아 닌 지 판단 * / if((4717] & & a [17] < 58) | | (a [17] = = 'x') / * 마지막 으로 x 또는 숫자 인지 판단 * / { if(nian(p+6)==1){ printf ("신분증 합 법 \ t"); exit(0); } } } printf ("비합법적"); return 0; } int nian(char *p1) { int bools=0; int count; int number; int year=0,month,day,sum,leap,i; for (i = 3; i > = 0; i -) / / 문자 배열 을 숫자 로 변환 합 니 다. { number=1; for(count=i;count>=0;count--) { number=number*10; } year+=(*p1-48)*number; p1++; } if((*p1-48)==0) month=(*(++p1)-48); else month=((*p1)-48)*10+(*(++p1)-48); p1++; if((*p1-48)==0) day=(*(++p1)-48); else day=((*p1)-48)*10+(*(++p1)-48); if (year% 4 = = 0 & amp; year% 100! = 0) | (year% 400 = = 0) / / 윤년 판단 leap=1; else leap=0; switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(day<32&&day>0) bools=1; break; case 4: case 6: case 9: case 11:if(day<31&&day>0) bools=1;break; case 2: if(leap==1) { if(day>0&&day<30) bools=1; } else { if(day<29&&day>0) bools=1; } break; default:bools=0; } return bools; }

좋은 웹페이지 즐겨찾기