7-12 查验身份证
一个合法的身份证号码由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()
{char a[20];char m[20] = {'1','0','X','9','8','7','6','5','4','3','2',0};//最后一个为字符串结束符,对此还有点疑惑,是只要字符型数组都要带这个吗,那对于数组a也要后续加入'/0'吗?int b[20] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};int n,i,j,sum,count,flag = 1;scanf("%d",&n);for (i = 0;i<n;i++){sum = 0;count = 0;//对于每一个身份证号码,都重新统计多少个为数字scanf("%s",a);for (j = 0;j <17;j++){ if (a[j]>='0' && a[j] <= '9'){//printf("%d\n",a[j]-'0');sum += (a[j]-'0')*b[j];//注意字符转整型,这一步为加权求和count ++;}else{flag = 0;//如果有不是数字的,就跳出循环,flag为0那么就不会打印all passedbreak;}//printf("%d\n",count);}//printf("%d\n",count);//printf("%c\n",m[sum%11]);//printf("%d\n....",sum%11);//printf("%c\n",a[17]);if (count == 17 && m[sum%11]== a[17])continue;else{printf("%s\n",a);flag = 0;}}if (flag == 1)printf("All passed");}
7-12 查验身份证相关推荐
- 团体程序设计天梯赛-练习集L1-016. 查验身份证
L1-016. 查验身份证 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一个合法的身份证号码由17位地区.日期编号和顺序编号 ...
- C++学习之路 | PTA乙级—— 1031 查验身份证 (15 分)(精简)
1031 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2 ...
- PTA 1031 查验身份证 (c语言)
1031 查验身份证 (15 分) 代码如下: #include<string.h> int main() {int quan[17]={7,9,10,5,8,4,2,1,6,3,7,9, ...
- pta——出生年,查验身份证(c语言)
8月15日程序设计实训个人编程 7-1 出生年 以上是新浪微博中一奇葩贴:"我出生于1988年,直到25岁才遇到4个数字都不相同的年份."也就是说,直到2013年才达到" ...
- 查验身份证(c语言)
7-7 查验身份证(15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1 ...
- PAT乙级1031 查验身份证
1031. 查验身份证(15) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 一个合法的身份证号码由17位地区. ...
- L1-016 查验身份证(2016年天梯赛模拟赛第8题)
7-8 查验身份证(15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1 ...
- PTA第3章-2 查验身份证 (15 分)
第3章-2 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4, ...
- 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 ...
最新文章
- Redis集群的基本配置
- 免费下载|《云原生时代下的App开发》走进阿里云一站式应用研发平台EMAS
- 从集合中选出一些元素组成子集合,使得这些子集合符合某种约束
- 一款社区论坛小程序源码(修复登录图片发布上传问题)
- Leetcode 22. 括号生成(递归+去重)
- 我应关注的AEC算法细分
- 牛客网Java刷题知识点之ArrayList 、LinkedList 、Vector 的底层实现和区别
- 63.magento 后台重置密码
- Debian系统关闭iptables的conntrack跟踪
- CTF常见的php函数
- 马克思主义哲学(认识论)
- python开发网页视频播放器_python实现媒体播放器功能
- python0基础自学英语_0基础怎么自学python,大概要多久?
- 30系列显卡使用tensorflow1版本
- Spark的conf目录下没有slaves文件,spark3.1.2解压以后conf目录下没有slaves,spark找不到slaves怎么办,解决slaves问题
- mysql replication slave_MySQL Replication,主从同步( Master-Slave)
- 服务器hostname命名规范汇总
- ABBYY PDF Transformer+ Pro可以支持189种语言
- 微机原理-汇编语言设计
- CentOS 7安装ELK日志分析系统
热门文章
- C#mqtt库M2Mqtt的使用
- 分页查询_小记录(模糊查询点页数暂未完成,只能上下页)
- public static void main(String[] args) 的介绍
- poj3278-分支限界法
- 精心整理200道最新Java中高级工程师高频面试题
- 关于kswapd0 CPU占用率高的问题,原来是被植入挖矿程序
- 如何修改服务器远程端口
- 【解释】Word2vec 词嵌入
- linux时间老变成市区,Linux(CentOS6.5)修改系统市区被中国标准时间(北京时间)
- html把一条横线放在底部,html怎样把div放在底部