


不知道是哪里错了,改了很多地方,输出时第一个身份证的情况总是不对,麻烦大家帮忙看看
1、last数组里的小写x换成大写
2、if ((int)sfz[17] == (int)last[yu]) //转换为int型进行比较
#include<stdio.h>
int main()
{
int hang = 0, b = 0, sum = 0, i, j, yu = 0;
int a[] = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 };
char last[] = { '1','0','X','9','8','7','6','5','4','3','2' }; //小写x换成大写
scanf_s("%d", &hang);
getchar();
for (i = 0; i < hang; i++)
{
char sfz[1000];
gets(sfz);
for (j = 0; j < 17; j++)
{
b = ((int)(sfz[j] - '0')) * a[j];
sum = sum + b;
}
yu = sum % 11;
if ((int)sfz[17] == (int)last[yu]) //转换为int型进行比较
printf("right\n");
else
printf("wrong\n");
}
return 0;
}