L1_016查验身份证
一个合法的身份证号码由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
**重点词解释:**取模就是取余。
#include<stdio.h>
int main()
{int n,i,s;int quan[18]={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'};//定义校验码并赋初值int flage=0;char ID[20];scanf("%d",&n);while(n--)//有n组测试数据{s=0;//每组测试数据s要清零scanf("%s",ID);for(i=0;i<17;i++){if(!(ID[i]>='0'&&ID[i]<='9'))break;//判断前17位是否全为数字s=s+(ID[i]-'0')*quan[i];//加权求和}if(i<17){flage++;printf("%s\n",ID);}else{if(M[s%11]!=ID[17])//判断最后一位校验码是否正确{flage++;printf("%s\n",ID);}}}if(flage==0)printf("All passed\n");return 0;
}
L1_016查验身份证相关推荐
- L1-016 查验身份证(2016年天梯赛模拟赛第8题)
7-8 查验身份证(15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1 ...
- 团体程序设计天梯赛-练习集L1-016. 查验身份证
L1-016. 查验身份证 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一个合法的身份证号码由17位地区.日期编号和顺序编号 ...
- PTA第3章-2 查验身份证 (15 分)
第3章-2 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4, ...
- C++学习之路 | PTA乙级—— 1031 查验身份证 (15 分)(精简)
1031 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2 ...
- 7-54 查验身份证 (15 分)
7-54 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2 ...
- PAT乙级 1031 查验身份证 (15 分)
1031 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2 ...
- 【2020模拟考试T1】【PAT乙】1031 查验身份证 (15分)模拟
problem 1031 查验身份证 (15分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10, ...
- 7-21 查验身份证 (15 分)
7-21 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2 ...
- 第3章-2 查验身份证
一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8, ...
最新文章
- R语言boxplot绘制箱线图
- Kernel Driver DmaEgine 子系统 (一)
- Verilog中testbench的设计,文件读取和写入操作
- linux系统怎么建ftp服务器地址,Ubuntu Linux系统建立FTP服务器方法步骤
- 牛客网暑期ACM多校训练营(第二场)J	farm (二维树状数组)
- Linux的目录结构与磁盘分区
- 复旦 | DialogVED:用于对话响应生成的预训练隐变量编码-解码模型
- dbvisulizer 存储过程
- 钉钉主要是用来打卡的,为什么打卡不能放在首页?
- SPSS 协方差分析(图文+数据集)【SPSS 020期】
- PPT超实用的23个快捷键
- 秒建炫酷的开源项目文档,这款神器用起来够优雅
- [转] 安卓巴士总结了近百个Android优秀开源项目,覆盖Android开发的每个领域
- 设计模式之CS和BS结构的区别
- homebrew的安装
- ChatGPT4吊打国内一众所谓山寨科技公司
- Java中的equals()方法
- 同程旅游网开放平台SDK开发完成
- 清华大学 高文 计算机,高文(院士)
- Windows 7下通过anaconda安装tensorflow
热门文章
- u-boot 中 tftp、sf命令使用详解
- 概率密度函数、概率分布函数、常见概率分布
- 软件测试人员经典面试题目汇总
- 100个人围成一圈c语言,C语言 约瑟夫圈问题:N个人围成一圈,从第一个人开始按顺序报数并编号1,2,3,……N,然后开始从第一个人转圈报数,凡是报到3的退出圈子。则剩下的最后一个人编号是多少。...
- 字节码增强:原理与实战
- Cocos Shader入门基础四:Uniform与材质参数控制
- django.core.exceptions.ImproperlyConfigured: Requested setting CACHES报错解决办法
- 腾讯安全反病毒实验室解读“Wannacry”勒索软件
- 2023年全国最新安全员精选真题及答案50
- AndroidStudio jni C++与Java互相调用