运行结果最后不知道为什么多输出了几个繁体字,(数组输出)
程序代码:
#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编辑过]