zoukankan      html  css  js  c++  java
  • PAT-字符串处理-B 1031 查验身份证 (15分)

    题目:

    思路:

      构建校验码的映射表,使用字符串数组存储输入号码。对字符串数组进行遍历,并利用num[i]-'0'进行运算和判断是否符合题目条件(前17位不出现字母),对求和结果进行取模并由映射表进行判断,依据前述的各种判断,输出结果

    注意点:

      利用数组存储输入数字,存储权重;利用映射表存储校验码对应关系

    代码:

      

     1 #include<iostream>
     2 #include<unordered_map>
     3 using namespace std;
     4 
     5 //映射表
     6 int z[11] = { 0,1,2,3,4,5,6,7,8,9,10 };
     7 char m[11] = { '1','0','X','9','8','7','6','5','4','3','2' };
     8 //权重表
     9 int wt[17] = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 };
    10 //号码
    11 char num[110];
    12 
    13 int main()
    14 {
    15     unordered_map<int, char> p;
    16     int n, count;
    17 
    18     //构建映射表
    19     for (int i = 0;i < 11;i++)p[z[i]] = m[i];
    20 
    21     scanf("%d", &n);
    22     //记录正确号码数
    23     count = n;
    24     for (int i = 0;i < n;i++)
    25     {
    26         scanf("%s", num);
    27         int sum = 0;
    28         bool flag = true;
    29 
    30         //进行运算
    31         for (int i = 0;i < 17;i++)
    32         {
    33             //对每位数值进行运算并判断
    34             if ((num[i] - '0') >= 0 && (num[i] - '0') <= 9)
    35             {
    36                 sum += (num[i] - '0')*wt[i];
    37             }
    38             else
    39             {
    40                 flag = false;
    41                 break;
    42             }
    43         }
    44 
    45         //判断是否对应校验码
    46         if (flag)
    47             if (p[sum % 11] != num[17])flag = false;
    48 
    49         //输出不合格号码
    50         if (!flag)
    51         {
    52             printf("%s
    ", num);
    53             count--;
    54         }
    55 
    56     }
    57 
    58     //判断是否全部正确
    59     if (count == n)printf("All passed");
    60 
    61     return 0;
    62 }
    View Code
  • 相关阅读:
    优化算法-BFGS
    Go语言及Web框架Beego环境无脑搭建
    使用WCF扩展记录服务调用时间
    红黑树LLRB
    springmvc国际化 基于请求的国际化配置
    Adapter Pattern
    泡泡屏保
    使用WCF扩展在方法调用前初始化环境
    OAuth的一个.NET开源实现
    Google C++编程风格指南
  • 原文地址:https://www.cnblogs.com/fangzhiyou/p/12445418.html
Copyright © 2011-2022 走看看