#include <cstdio>
#include <vector>
#include <string.h>
#include <iostream>
using namespace std;
int strtoint(char a){
return a-'0';
}
string shiqi="10X98765432";
int quanzhi[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
int main(){
int n=0,cnt=0, i=0, sum, mark;
//cnt 记录不正确的个数 ,mark标记前十七位有字母的身份证 ,sum 为前十七位权值相乘相加
vector<string>vec; //储存不正确的身份证
string str;
string::iterator it;
vector<string>::iterator vecit;
scanf("%d",&n);
while(n!=0){
cin >> str;
it=str.begin();
for(i=0;i<17;i++){
if(*(it+i)<'0' || *(it+i)>'9'){
mark=0;
break;
}else{
sum+=quanzhi[i]*strtoint(*(it+i));
}
}
if(mark==0 || shiqi[sum%11]!=*(str.end()-1)) {
cnt++;
vec.push_back(str);
}
mark=1;sum=0;str.clear();n--;
}
if(cnt){
for(vecit=vec.begin(); vecit!=vec.end(); vecit++){
cout<<*vecit<<'\n';
}
}else cout <<"All passed";
return 0;
}
如需转载请私信。