入门模拟——(字符串处理)B1031查验身份证

#include <bits/stdc++.h>
#include<math.h>
using namespace std;
const int MAX_LEN = 100005;
//const int MAX_D = 31;
struct ID{
    char tem[20];
};
int main(){
    int n;
    cin>>n;
    ID temp[n];
    int flag[n];
    for(int i =0;i<n;++i){
        flag[i] = 1;
    }
    for(int i =0;i<n;++i){
        cin>>temp[i].tem; 
    }
    int result[n];
    for(int i = 0;i<n;++i){
        for(int j =0;j<17;++j){
            if(!((temp[i].tem[j]-'0')>=0 &&(temp[i].tem[j]-'0')<=9)){
                flag[i] = false;
                break;
            }
        }
    }
    for(int i =0;i<n;++i){
        if(flag[i] == true){
            result[i] = ((temp[i].tem[0]-'0')*7 + (temp[i].tem[1]-'0')*9 + (temp[i].tem[2]-'0')*10 + (temp[i].tem[3]-'0')*5 +
            (temp[i].tem[4]-'0')*8 + (temp[i].tem[5]-'0')*4 + (temp[i].tem[6]-'0')*2 + (temp[i].tem[7]-'0')*1 + (temp[i].tem[8]-'0')*6
            + (temp[i].tem[9]-'0')*3 + (temp[i].tem[10]-'0')*7 + (temp[i].tem[11]-'0')*9 + (temp[i].tem[12]-'0')*10 + (temp[i].tem[13]-'0')*5
            + (temp[i].tem[14]-'0')*8 + (temp[i].tem[15]-'0')*4 + (temp[i].tem[16]-'0')*2) % 11;
        }
    }
    int s[11] = {1,0,10,9,8,7,6,5,4,3,2};
    for(int i=0;i<n;++i){
        int fas = result[i];
        int sdf = s[fas];
        if(sdf == 10){
            result[i] = 10;
        }else{
            result[i] = sdf;
        }
    }
    for(int i=0;i<n;++i){
        char c;
        if(result[i] != 10){
            c = ('0' +(result[i]-0));
        }
        else{
            c = 'X';
        }
        if(c != temp[i].tem[17]){
            flag[i] = false; 
        }
    }
    int count = 0;
    for(int i = 0;i<n;++i){
        if(flag[i]==true){
            count++;
        }else{
            for(int j=0;j<18;++j){
                if(j!=17){
                    cout<<temp[i].tem[j];
                }else{
                    cout<<temp[i].tem[j]<<endl;
                }
            }
        }
    }
    if(count == n){
        cout<<"All passed"<<endl;
    }
    system("pause");
    return 0;
} 

原文地址:https://www.cnblogs.com/JasonPeng1/p/12130996.html