代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,i,count=0,k=0;
int a[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'};
cin>>n;
string s,ss[1000];/ss是先存放错误身份证信息,最后一块输出
int pass=n;//用pass变量先记录一下输入的总数
while(n--){
cin>>s;
int sum=0;
for(i=0;i<17;i++){
int temp=s[i]-'0';
if(temp>=0&&temp<=9){
sum+=(s[i]-'0')*a[i];//按题目意思求出总和然后取余
}
else{
break;//如果不是数字,直接跳出循环,跳出循环sum肯定不等了,所以也会输出
}
}
if(s[i]!=check[sum%11]){
//cout<<s<<endl;
ss[k++]=s;//把有问题的身份证信息用ss先存起来,后面再输出
}
else{
count++;//这里是没问题身份证的数量,若与pass相等,则输出pass
}
}
if(count==pass){
printf("All passed");
}
for(int j=0;j<k;j++){
cout<<ss[j]<<endl;
}
return 0;
}