1. 程式人生 > >1031 查驗身份證 (15 分

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;
}