#include<stdio.h>
int main()
{
int T;
scanf("%d",&T);
char a[T][18];
int sum[T]={0};
int k[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char check[11]={'1','0','X','9','8','7','6','5','4','3','2'};
for(int i=0;i<T;i++)
{
scanf("%s",a[i]);
}
for(int i=0;i<T;i++)
{
for(int j=0;j<17;j++)
{
sum[i]+=(a[i][j]-'0')*k[j];
}
int d;
d=sum[i]%11;
for(int x=0;x<11;x++)
{
if(x==d)
{
if(check[x]==a[i][17])
{
printf("right\n");
}
else
{
printf("wrong\n");
}
}
}
}
return 0;
}
大神方法
#include<stdio.h>
//#define SIZE 101
int main()
{
int t,i,xishu[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2},yushu=0;
char a[18],t1;
scanf("%d",&t);//输一个1进去,输出-38?
//printf("%d\n",t);
while(t)
{
yushu=0;
scanf("%s",a);
//printf("%c\n",a[17]);
/*for(i=0;i<18;i++)
{
scanf("%c",&a[i]);//b[i]=a[i]-48;
printf("%d\n",a[i]);//表示成a[i]-48没错
}*/
//printf("%c",a[17]);
for(i=0;i<17;i++)
{
//printf("%d %d\n",b[i],xishu[i]);
yushu+=(a[i]-'0')*xishu[i];
//printf("%d\n",yushu);
}
yushu=yushu%11;
//printf("%d\n",yushu);//yushu=-2?
switch(yushu){
case 0:t1='1';break;
case 1:t1='0';break;
case 2:t1='X';break;//X要大写??!!,唉
case 3:t1='9';break;
case 4:t1='8';break;
case 5:t1='7';break;
case 6:t1='6';break;
case 7:t1='5';break;
case 8:t1='4';break;
case 9:t1='3';break;
case 10:t1='2';break;
}
//printf("%c %c\n",t1,a[17]);//a[18]有毛病。
if(a[17]==t1)printf("right\n");
else printf("wrong\n");
t--;
}
return 0;
}