1031 查验身份证 (15)

一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:

首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:

Z:0 1 2 3 4 5 6 7 8 9 10
M:1 0 X 9 8 7 6 5 4 3 2

现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。

输入格式:

输入第一行给出正整数N(≤100)是输入的身份证号码的个数。随后N行,每行给出1个18位身份证号码。

输出格式:

按照输入的顺序每行输出1个有问题的身份证号码。这里并不检验前17位是否合理,只检查前17位是否全为数字且最后1位校验码计算准确。如果所有号码都正常,则输出All passed

输入样例1:

4
320124198808240056
12010X198901011234
110108196711301866
37070419881216001X

输出样例1:

12010X198901011234
110108196711301866
37070419881216001X

输入样例2:

2
320124198808240056
110108196711301862

输出样例2:

All passed

 在讲解这道题目之前,首先我们来讲一下这题的注意点:
①如果不对,顺序输出不对的号码

②全对的话输出All passed

③加权求和

//完整代码
#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main() {
    int num,sum;                 //定义数量,以及加权和变量
    int quan_zhong[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};   //定义权值数组
    string M="10X98765432";   //定义M可取字符串
    string shen_fen_zhen;     //定义身份证号
    vector<string> cuo_wu;      //定义身份证错误的数组
    int count=0;              //错误数组计数
    cin>>num;
    
    for(int i=0;i<num;i++){
        sum=0;
        bool skip_iteration = false;     //定义跳转判断
        cin>>shen_fen_zhen;
        for(int j=0;j<17;j++){         
            if(shen_fen_zhen[j]=='X'){  //前17位如果有X直接输出
                sum=0;
                skip_iteration = true;
                break;
            }
            else {
                sum+=(shen_fen_zhen[j]-'0')*quan_zhong[j];  //转成数字型
            }
        }

        if(skip_iteration==false){        //这个判断是前面没有X但是校验码不对
            //cout<<sum%11<<endl;
            if(M[sum%11]!=shen_fen_zhen[17]){
                cuo_wu.push_back(shen_fen_zhen);
                count++;
            }
            
        }
        else {                  //这个判断是前面有X
            cuo_wu.push_back(shen_fen_zhen);
            count++;
        }
        
    }
    if(count==0){
        cout<<"All passed"<<endl;
    }
    else {
        for(int i=0;i<count;i++){
            cout<<cuo_wu[i]<<endl;
        }
    }
    
    return 0;
}

 首先我们先定义一些要用到的参数与输入:
 

int num,sum;                 //定义数量,以及加权和变量
int quan_zhong[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};   //定义权值数组
string M="10X98765432";   //定义M可取字符串
string shen_fen_zhen;     //定义身份证号
vector<string> cuo_wu;      //定义身份证错误的数组
int count=0;              //错误数组计数
cin>>num;

    接下来我们利用for循环输入每个身份证号码,每输入一个我们就需要进行判断,第一个判断就是前17位的字符不能有X,如果有的话,那我们就需要将之前的加权和变成0并且将跳转skip_iteration设置为true表示这个号码不需要任何其他的操作,等会直接输出就行啦。如果我们检查好每位不是X那我们就需要进行加权和,得到最后的加权和。

    然后我们就需要判断,我们的错身份证的条件是(1.前17位有X,2.最后的加权和取模不等于对应的第18位的值)然后我们进行条件判断将错的身份证放入cuo_wu数组中。

    最后我们判断cuo_wu数组长度等不等于0,如果等于0代表没有错误的身份证号码,我们需要输出All passed,如果不等于0,那我们遍历cuo_wu数组顺序输出错误的身份证号码就行。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/349918.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

将 Amazon Bedrock 与 Elasticsearch 和 Langchain 结合使用

Amazon Bedrock 是一项完全托管的服务&#xff0c;通过单一 API 提供来自 AI21 Labs、Anthropic、Cohere、Meta、Stability AI 和 Amazon 等领先 AI 公司的高性能基础模型 (FMs) 选择&#xff0c;以及广泛的 构建生成式 AI 应用程序所需的功能&#xff0c;简化开发&#xff0c;…

使用Go语言编写自定义的HTTP代理:探险网络奇幻之旅

你是否曾经想过自己也能编写一个代理服务器&#xff0c;掌握网络冲浪的主动权&#xff1f;现在&#xff0c;有了Go语言&#xff0c;这个梦想不再遥不可及&#xff01;让我们一起踏上这段探险之旅&#xff0c;用Go语言编写一个自定义的HTTP代理&#xff0c;开启网络奇幻之旅&…

Java面试——基础篇

目录 1、java语言有哪些优点和缺点? 2、JVM 、 JDK 和 JRE的关系 3、为什么说 Java 语言“编译与解释并存”&#xff1f; 4、Java和c的区别 5、基本数据类型 5.1、java的8种基本数据类型&#xff1a; 5.2、基本类型和包装类型的区别&#xff1a; 5.3、包装类型的缓存机…

DataKit迁移MySQL到openGauss

前言 本文将分享DataKit迁移MySQL到openGauss的项目实战&#xff0c;供广大openGauss爱好者参考。 1. 下载操作系统 https://www.openeuler.org/zh/download https://support.huawei.com/enterprise/zh/doc/EDOC1100332931/1a643956 https://support.huawei.com/enterprise…

深度学习(5)---自注意力机制

文章目录 一、输入与输出二、Self-attention2.1 介绍2.2 运作过程2.3 矩阵相乘理解运作过程 三、位置编码四、Truncated Self-attention4.1 概述4.2 和CNN对比4.3 和RNN对比 一、输入与输出 1. 一般情况下在简单模型中我们输入一个向量&#xff0c;输出结果可能是一个数值或者一…

css 中 flex 布局最后一行实现左对齐

问题 flex 布局最后一行没有进行左对齐显示&#xff1a; <div classparent><div classchild></div><div classchild></div><div classchild></div><div classchild></div><div classchild></div><div…

Linux中禅道12.5一键部署安装过程笔记

1. Linux中禅道12.5一键部署安装过程笔记 文章目录 1. Linux中禅道12.5一键部署安装过程笔记1. 安装1.将安装包直接解压到/opt目录下2. Apache和Mysql常用命令3. 访问和登录禅道4. 其他 2. 访问数据库1. 网页登录数据库2. 命令行连接数据库 3. 9.2.stable版本起Linux一键安装包…

设计模式_装饰器模式_Decorator

生活案例 咖啡厅 咖啡定制案例 在咖啡厅中&#xff0c;有多种不同类型的咖啡&#xff0c;客户在预定了咖啡之后&#xff0c;还可以选择添加不同的调料来调整咖啡的口味&#xff0c;当客户点了咖啡添加了不同的调料&#xff0c;咖啡的价格需要做出相应的改变。 要求&#xff…

girhub添加 SSH 密钥

1 打开终端 输入 ssh-keygen -t rsa -b 4096 -C "github邮箱地址"如果不需要密码可以一路回车 出现这个页面就是生存成功了 open ~/.ssh // 打开.ssh 找到id_rsa.pub复制出内容新建ssh密钥输入内容,保存即可

jmeter下载及安装配置

前言 本文是在win10环境下安装使用jmeter&#xff0c;jmeter可以运行在多平台上Windows和Linux。 环境准备&#xff1a; java 1.8 jmeter 5.1.1 jmeter环境 jmeter环境依赖JAVA环境&#xff0c;需安装JDK1.8环境&#xff0c;JDK环境安装网上一大堆教程&#xff0c;我这里就…

Socket实现服务器和客户端

Socket 编程是一种用于在网络上进行通信的编程方法&#xff0c;以下代码可以实现在不同主机之间传输数据。 Socket 编程中服务器端和客户端的基本步骤&#xff1a;服务器端步骤&#xff1a; 1.创建 Socket&#xff1a; int serverSocket socket(AF_INET, SOCK_STREAM, 0);…

详讲api网关之kong的基本概念及安装和使用(一)

什么是api网关 前面我们聊过sentinel&#xff0c;用来限流熔断和降级&#xff0c;如果你只有一个服务&#xff0c;用sentinel自然没有问题&#xff0c;但是如果是有多个服务&#xff0c;特别是微服务的兴起&#xff0c;那么每个服务都使用sentinel就给系统维护带来麻烦。那么网…

附1:k8s服务器初始化

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 关联文章&#xff1a; 《RKE快速搭建离线k8s集群并用rancher管理界面》 《附2&#xff1a;rke安装的k8s集群新增主机》 1.创建…

IDEA使用技巧总结(强迫症福音+新手必看)

前言 本文主要整理与分享个人在使用IDEA做Java开发时做的各种配置&#xff0c;算是几年来的总结。 本人使用的 idea 版本比较老了&#xff0c;2019.1 版本&#xff0c;JDK 版本也老&#xff0c;1.8 版本&#xff0c;主打的是情怀不同版本的 idea 影响不大&#xff0c;基本上在设…

【C++】list讲解及模拟

目录 list的基本介绍 list模拟实现 一.创建节点 二.迭代器 1.模版参数 2.迭代器的实现&#xff1a; a. ! b. c. -- d. *指针 e.&引用 整体iterator (与const复用)&#xff1a; 三.功能实现 1.模版参数 2.具体功能实现&#xff1a; 2.1 构造函数 2.2 begi…

【oracle】oracle客户端及oracle连接工具

一、关于oracle客户端 1.1 Oracle Client 完整客户端 包含完整的客户端连接工具。 包很大&#xff0c;需要安装 1.2 instantclient 即时客户端 是 Oracle(R) 发布的轻量级数据库客户端&#xff0c;减少甚至只包含几个文件&#xff0c;您无需安装标准的客户端&#xff0c;就可以…

Element UI样式修改之NavMenu导航菜单箭头样式修改

UI设计稿给的菜单箭头样式可能与我们饿了么组件NavMenu的菜单箭头样式不一致,目前我们侧边导航菜单的上下翻转箭头如下所示: 希望得到如下的结果: 找到饿了么Icon里我们想要向下箭头,F12后复制content内容content: “\e790”; content: "\e790";然后将默认的c…

【Delphi】程序实现Windows电脑关机、重启、注销(源代码)

目录 一、API函数说明 1. GetCurrentProcess 2. OpenProcessToken 3. LookupPrivilegeValue 4. AdjustTokenPrivileges 5. ExitWindowsEx 二、Delphi实现源代码 在日常软件开发中&#xff0c;可能会遇到通过程序自动关闭电脑&#xff0c;在早期Windows 9x下&#xff0c;…

西安石油大学C++上机实验汇总

考试题难度就像第三章第五章课后题的难度 基础知识一定要掌握&#xff01;&#xff01;&#xff01; 上机一&#xff1a;类与对象程序设计&#xff08;2 学时&#xff09; 上机目的 掌握声明类的方法。掌握类和类的成员的概念以及定义对象的方法。掌握构造函数和析构函数的…

家居图册制作方法,快来看看

​随着家居设计的流行&#xff0c;越来越多的人开始关注家居装饰和家居用品。据统计&#xff0c;家居市场每年的销售额逐年增长。而家居图册作为家居装饰的重要组成部分&#xff0c;其制作方法也备受关注。 那要怎么制作呢&#xff1f;准备好这个工具&#xff1a;FLBOOK在线制作…