L1-016 查验身份证

≯℡__Kan透↙ 提交于 2019-12-01 22:28:54
#include <iostream>
#include <algorithm>
#include <cmath>
#include <map>
#include <cstdio>
#include <sstream>
#include <cstring>
#include <cctype>

using namespace std;
#define maxn 3000

int main()
{
    string ids[maxn] ;
    int N,count=0;
    cin >>N;
    int weight[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'};
    for (int i = 0; i < N; i++)
        cin >>ids[i];
    for(int i = 0;i < N;i++)
    {
        int sum = 0,flag =1;
        for (int j = 0; j < 17; j++)
        {
            if(!isdigit(ids[i][j])){ cout <<ids[i]<<endl; flag = 0; break; } 
            else sum += (ids[i][j]-48)*weight[j] ;

        }
        if(!flag) continue;
        if(ids[i][17] != check[sum%11])cout <<ids[i]<<endl;
        else  count ++;
    }
    if(count == N)
        cout << "All passed";
    return 0;
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!