m0_63572190 2022-06-09 16:43 采纳率: 76.9%
浏览 148
已结题

C++查验身份证号码有效性,和过程

给一个18位身份证号码,验证有效性,并输出有问题的号码,如果没问题,就输出all passed

  • 写回答

3条回答 默认 最新

  • CSDN专家-sinJack 2022-06-09 16:47
    关注
    #include <iostream>
    using namespace std;
    int main()
    {
        int n = 0, sum = 0, mod = 0, count = 0;
        int w[17] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
        char m[11] = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
        cin >> n;
        string numbers[n];
        for (int i = 0; i < n; i++)
        {
            cin >> numbers[i];
        }
        for (int j = 0; j < n; j++)
        {
            string str1 = numbers[j];
            for (int k = 0; k < 17; k++)
            {
                if(str1[k]=='X')
                {
                    cout << str1 << endl;
                    count++;
                    break;
                }
                else
                sum = sum + (str1[k] - 48) * w[k];
            }
            mod = sum % 11;
            sum = 0;
            if (m[mod] != str1[17])
            {
                cout << str1 << endl;
                count++;
            }
        }
        if (count == 0)
            cout << "All passed";
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月17日
  • 已采纳回答 6月9日
  • 创建了问题 6月9日

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集