데이터 구조의 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;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.