zoukankan      html  css  js  c++  java
  • 入门模拟——(字符串处理)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;
    } 

  • 相关阅读:
    微信验证代码
    微信内置浏览器的JS API
    伪类和伪元素
    asp.net core mvc 脚手架搭建过程介绍
    C#无锁内存队列
    关于微软OWIN的一篇好文章
    安装了Win10预览版10074,不能设置开发模式的bug解决
    关于Quartz的一些经历
    MEF接口应用初探
    简单的接口框架
  • 原文地址:https://www.cnblogs.com/JasonPeng1/p/12130996.html
Copyright © 2011-2022 走看看