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

猜你喜欢

转载自blog.csdn.net/qq_35452997/article/details/86143770