一个合法的身份证号码由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 查验身份证相关推荐

  1. 团体程序设计天梯赛-练习集L1-016. 查验身份证

    L1-016. 查验身份证 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一个合法的身份证号码由17位地区.日期编号和顺序编号 ...

  2. C++学习之路 | PTA乙级—— 1031 查验身份证 (15 分)(精简)

    1031 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2 ...

  3. 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, ...

  4. pta——出生年,查验身份证(c语言)

    8月15日程序设计实训个人编程 7-1 出生年 以上是新浪微博中一奇葩贴:"我出生于1988年,直到25岁才遇到4个数字都不相同的年份."也就是说,直到2013年才达到" ...

  5. 查验身份证(c语言)

    7-7 查验身份证(15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1 ...

  6. PAT乙级1031 查验身份证

    1031. 查验身份证(15) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 一个合法的身份证号码由17位地区. ...

  7. L1-016 查验身份证(2016年天梯赛模拟赛第8题)

    7-8 查验身份证(15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1 ...

  8. PTA第3章-2 查验身份证 (15 分)

    第3章-2 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4, ...

  9. 7-54 查验身份证 (15 分)

    7-54 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2 ...

  10. PAT乙级 1031 查验身份证 (15 分)

    1031 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2 ...

最新文章

  1. Redis集群的基本配置
  2. 免费下载|《云原生时代下的App开发》走进阿里云一站式应用研发平台EMAS
  3. 从集合中选出一些元素组成子集合,使得这些子集合符合某种约束
  4. 一款社区论坛小程序源码(修复登录图片发布上传问题)
  5. Leetcode 22. 括号生成(递归+去重)
  6. 我应关注的AEC算法细分
  7. 牛客网Java刷题知识点之ArrayList 、LinkedList 、Vector 的底层实现和区别
  8. 63.magento 后台重置密码
  9. Debian系统关闭iptables的conntrack跟踪
  10. CTF常见的php函数
  11. 马克思主义哲学(认识论)
  12. python开发网页视频播放器_python实现媒体播放器功能
  13. python0基础自学英语_0基础怎么自学python,大概要多久?
  14. 30系列显卡使用tensorflow1版本
  15. Spark的conf目录下没有slaves文件,spark3.1.2解压以后conf目录下没有slaves,spark找不到slaves怎么办,解决slaves问题
  16. mysql replication slave_MySQL Replication,主从同步( Master-Slave)
  17. 服务器hostname命名规范汇总
  18. ABBYY PDF Transformer+ Pro可以支持189种语言
  19. 微机原理-汇编语言设计
  20. CentOS 7安装ELK日志分析系统

热门文章

  1. C#mqtt库M2Mqtt的使用
  2. 分页查询_小记录(模糊查询点页数暂未完成,只能上下页)
  3. public static void main(String[] args) 的介绍
  4. poj3278-分支限界法
  5. 精心整理200道最新Java中高级工程师高频面试题
  6. 关于kswapd0 CPU占用率高的问题,原来是被植入挖矿程序
  7. 如何修改服务器远程端口
  8. 【解释】Word2vec 词嵌入
  9. linux时间老变成市区,Linux(CentOS6.5)修改系统市区被中国标准时间(北京时间)
  10. html把一条横线放在底部,html怎样把div放在底部