PTA乙级题 1031. 查验身份证(15)
感谢The_Chosen_1指出问题
#include <iostream>
#include <ctype.h>
using namespace std;
int w[17] = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 };
int p[11] = { '1','0','X','9','8','7','6','5','4','3','2' };
int main()
{
int n, ans = 0, flag = 0;
char a[20];
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%s", a);
int q = 0, f = 0;
for (int i = 0; i < 17; i++)
{
if (!isdigit(a[i]))
{
flag = 1;
puts(a);
ans++;
f = 1;
break;
}
}
if (f == 1)
continue;
for (int i = 0; i < 17; i++)
q = (q + (a[i] - '0')*w[i]) % 11;
if (a[17] != p[q])
{
flag = 1;
puts(a);
ans++;
}
}
if (flag == 0)
{
puts("All passed");
return 0;
}
}