运行结果最后不知道为什么多输出了几个繁体字,(数组输出)
程序代码:#include<stdio.h>
#include<string.h>
int main()
{
int n,i,len,a,s,y,yan,b;
char id[50][50];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s",id[i]);
}
for(i=0;i<n;i++)
{
len=strlen(id[i]);
if(len==15)
{
id[i][16]=id[i][14];
id[i][15]=id[i][13];
id[i][14]=id[i][12];
id[i][13]=id[i][11];
id[i][12]=id[i][10];
id[i][11]=id[i][9];
id[i][10]=id[i][8];
id[i][9]=id[i][7];
id[i][8]=id[i][6];
a=(id[i][14]-'0')*100+(id[i][15]-'0')*10+id[i][16]-'0';
if(a>965&&a<=999)
{id[i][6]='1';id[i][7]='8';}
else
{id[i][6]='1';id[i][7]='9';}
s=(id[i][0]-'0')*7+(id[i][1]-'0')*9+(id[i][2]-'0')*10+(id[i][3]-'0')*5+(id[i][4]-'0')*8+(id[i][5]-'0')*4+(id[i][6]-'0')*2+(id[i][7]-'0')+(id[i][8]-'0')*6+(id[i][9]-'0')*3+(id[i][10]-'0')*7+(id[i][11]-'0')*9+(id[i][12]-'0')*10+(id[i][13]-'0')*5+(id[i][14]-'0')*8+(id[i][15]-'0')*4+(id[i][16]-'0')*2;
y=s%11;
if(y==0)id[i][17]='1';
if(y==1)id[i][17]='0';
if(y==2)id[i][17]=88;
if(y==3)id[i][17]='9';
if(y==4)id[i][17]='8';
if(y==5)id[i][17]='7';
if(y==6)id[i][17]='6';
if(y==7)id[i][17]='5';
if(y==8)id[i][17]='4';
if(y==9)id[i][17]='3';
if(y==10)id[i][17]='2';
printf("%s\n",id[i]);
}
else
{
s=(id[i][0]-'0')*7+(id[i][1]-'0')*9+(id[i][2]-'0')*10+(id[i][3]-'0')*5+(id[i][4]-'0')*8+(id[i][5]-'0')*4+(id[i][6]-'0')*2+(id[i][7]-'0')+(id[i][8]-'0')*6+(id[i][9]-'0')*3+(id[i][10]-'0')*7+(id[i][11]-'0')*9+(id[i][12]-'0')*10+(id[i][13]-'0')*5+(id[i][14]-'0')*8+(id[i][15]-'0')*4+(id[i][16]-'0')*2;
y=s%11;
if(y==0)b='1';
if(y==1)b='0';
if(y==2)b=88;
if(y==3)b='9';
if(y==4)b='8';
if(y==5)b='7';
if(y==6)b='6';
if(y==7)b='5';
if(y==8)b='4';
if(y==9)b='3';
if(y==10)b='2';
if(id[i][17]==b)printf("Valid\n");
else printf("Invalid\n");
//printf("%c\nb%d\n%dy\n",id[i][17],b,y);
}
}
return 0;
}
上面这张图多了一个b
[此贴子已经被作者于2016-11-15 12:32编辑过]








