1031 查驗身份證 (15 分
本題用了判斷是否是數字的函式,isdigit(char) 函式,其餘沒有什麼難點;
ps:昨天在寫本題時,無論怎麼寫都有錯,所以當自己遇到困難時,應該暫時放下,等到自己心情平靜下來了,才繼續往下面寫。
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
int n,flag=0;
//freopen("1031.txt","r",stdin);
cin>>n;
char a[20];
char b[11]={'1','0','X','9','8','7','6','5','4','3','2'};
int c[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
for(int i=0;i<n;i++)
{
int sum=0,j;
scanf("%s",a);
for(j=0;j<17;j++)
{
if(isdigit(a[j]))
sum+=(a[j]-'0')*c[j];
else
break;
}
//cout<<j<<" "<<b[sum%11]<<endl;
if(j!=17||(b[sum%11]!=a[17]))
{
flag=1;
cout<<a<<endl;
}
}
if(flag==0)
cout<<"All passed"<<endl;
return 0;
}