提交记录 #216
提交时间:2024-11-14 20:37:24
语言:c
状态:Unaccepted
编译情况:编译成功
固定测试点#1:
额外测试点#16:
38【日期】身份证的奥秘
#include<stdio.h>
#include<string.h>
int main()
{
int n,sum=0,Y;
int W[20]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char str[20],jiaoyan[]={'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'},shengji[20];
scanf("%d",&n);
int length,m,i,j;
for( m = 0;m<n;m++)
{
sum=0;
scanf("%s",str);
getchar();
length=strlen(str);
if(length!=18&&length!=15)
{
printf("Invalid\n");
}
else if(length==18)
{
for( i = 0;i<17;i++)
{
sum+=(str[i]-'0')*W[i];
}
Y=sum%11;
if(str[17]==jiaoyan[Y])
{
printf("Valid\n");
}
else
{
printf("Invalid\n");
}
}
else
{ for( i = 0;i<6;i++ )
{
shengji[i]=str[i];
}
shengji[6]='1';
if(str[12]=='9'&&str[13]=='9'&&(str[14]=='6'||str[14]=='7'||str[14]=='8'||str[14]=='9'))
{
shengji[7]='8';
}
else
{
shengji[7]='9';
}
for( j = 8;j<17;j++)
{
shengji[j]=str[j-2];
}
for( i = 0;i<17;i++)
{
sum+=(shengji[i]-'0')*W[i];
}
Y=sum%11;
shengji[17]=jiaoyan[Y];
shengji[18]='\0';
printf("%s\n",shengji) ;
}
}
}