一个合法的身份证号码由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>
#include<string.h>
int main(){int n;scanf("%d",&n);//因为输入的身份证号码中有可能有X,所以只能用char类型的数组 //a[n][这里一定要是>18,不然没有地方存最后的\n] char a[n][19];  for(int i=0;i<n;i++){//不要用gets比较好,不太会用 scanf("%s",a[i]);}int isPrime;int sum;int tmp=1;//weight是权重分配 int weight[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; //m是对应的校验码 char m[11]={'1','0','X','9','8','7','6','5','4','3','2'}; for(int i=0;i<n;i++){isPrime=0;sum=0;for(int j=0;j<17;j++){if(a[i][j]>47&&a[i][j]<58){//数字加权求和 sum+=(a[i][j]-'0')*weight[j];}//只要出现X,就说明身份证号码无效,isPrime=1 else{isPrime=1;break;}}if(isPrime==0){//数字加权求和之后对11取模 sum%=11;//取模之后与最后一位作比较 if(m[sum]==(a[i][17])){isPrime=0;}else{isPrime=1;}}if(isPrime){
/*这个地方卡了我很久:如果用printf("%s\n",a[i][19]); 就会报很多错,段错误,千万注意!!
*/printf("%s\n",a[i]);tmp=0;}}if(tmp){printf("All passed");}return 0;
}

7-63 查验身份证(含重难点注释)相关推荐

  1. 前端笔记(Html+CSS+JS+DOM+网页特效+jQuery+HTML5+CSS3+canvas 标签+web开发重难点+面向对象+AJAX)

    第1章Html Html:超级文本标记语言(HyperText Markup Language),在浏览器上运行的一种标记语言. 就是给文本加上含有语义的标签. 接下来应该学习更多具体语义标签: 一. ...

  2. 线性表C语言locate和ETget,线性表(数据结构重难点讲解)

    <线性表(数据结构重难点讲解)>由会员分享,可在线阅读,更多相关<线性表(数据结构重难点讲解)(104页珍藏版)>请在人人文库网上搜索. 1.线性表(数据结构重难点讲解)导读: ...

  3. SpringBoot基础重难点

    来源:SpringBoot基础重难点 - liangxiaolong - 博客园 1.SpringBoot 1.1 概念 Spring Boot是构建所有基于Spring的应用程序的起点.Spring ...

  4. 大一高数下册笔记整理_初中化学期中重难点解读,复习不用愁啦,建议抄笔记...

    第一章  大家都来学化学 第二章  空气.物质的构成  一.空气  二.构成物质的微粒--分子.原子.离子  三.元素.物质的分类 往期精彩回顾01知识归纳总结 初中化学:实验操作步骤+专题训练,细致 ...

  5. php算法求出一个数可以被分解成多少个_小学数学必考的34个数学重难点公式,赶紧给孩子收藏!...

    34个小学数学重难点公式 1.和差倍问题 2.年龄问题的三个基本特征 ①两个人的年龄差是不变的: ②两个人的年龄是同时增加或者同时减少的: ③两个人的年龄的倍数是发生变化的: 3.归一问题的基本特点 ...

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

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

  7. Qt之天气预报——界面优化篇(含源码+注释)

    一.界面优化效果 下方为界面优化完成和优化前的效果对比. 优化前: 优化后: 二.优化内容 添加标题栏 添加图片(图图标素材源自阿里巴巴矢量图标库) 更新UI内容(微调大小.布局比例) 添加鼠标事件函 ...

  8. English--音标重难点

    English|音标重难点 在拥有了,音标的元音与辅音的基础之后,需要对于这些音标进行加以区分,毕竟方言对于口型的影响非常的大. 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点 ...

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

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

最新文章

  1. 计算机信息通信基础知识,计算机基础-(数据通信基础知识)
  2. Android Studio 中的FindBugs插件使用,轻松帮你发现Bug (转)
  3. Struts2拦截器简单示例
  4. Noip 2013 练习
  5. 报错:Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
  6. notepad++ 远程连接阿里云服务器
  7. MySQL 索引优化全攻略
  8. java后端面试笔记-自用
  9. 关于开源分布式事务中间件Fescar,我们总结了开发者关心的13个问题
  10. python爬虫实践目的_Python编写爬虫实践
  11. PyTorch并行与分布式(一)概述
  12. iis提示“另一个程序正在使用此文件,进程无法访问”解决办法
  13. 【HTML简易版“冒险岛”小游戏】(游戏效果展示+全部源代码分享)
  14. Adobe Flash Builder 4 序列号
  15. cpolar内网穿透工具
  16. 【C语言】数组排序法(升序)
  17. 一个计算机网络的物理组成,1.1.2.1 计算机网络物理组成
  18. 网络打印机计算机服务,如何把局域网中的所有计算机及打印机设置共享?
  19. Elasticsearch:Ingest Pipeline 实践
  20. 打印当前python文件出错行

热门文章

  1. JAVA计算机毕业设计甜心驿站饮品信息管理(附源码、数据库)
  2. android studio2.0去除运行按钮旁边闪电标志的方法
  3. android实现打地鼠游戏
  4. Hyperledger Fabric区块链浏览器搭建
  5. java 打包xml脚本_springboot打包不同环境配置与shell脚本部署
  6. 百度智能小程序这只蝴蝶正在掀起新一轮AI风暴
  7. 【科技百咖】博思廷王巍:真正做好“视频监控+AI”这道菜
  8. 爱萌即时通讯使用 - Other linker flags设置
  9. Cisco ASR 9000 Router IOS XR Software - 7.5.1(ED) 下载
  10. Android手机 全面屏(18:9屏幕)适配指南 点击打开链接