7-63 查验身份证(含重难点注释)
一个合法的身份证号码由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 查验身份证(含重难点注释)相关推荐
- 前端笔记(Html+CSS+JS+DOM+网页特效+jQuery+HTML5+CSS3+canvas 标签+web开发重难点+面向对象+AJAX)
第1章Html Html:超级文本标记语言(HyperText Markup Language),在浏览器上运行的一种标记语言. 就是给文本加上含有语义的标签. 接下来应该学习更多具体语义标签: 一. ...
- 线性表C语言locate和ETget,线性表(数据结构重难点讲解)
<线性表(数据结构重难点讲解)>由会员分享,可在线阅读,更多相关<线性表(数据结构重难点讲解)(104页珍藏版)>请在人人文库网上搜索. 1.线性表(数据结构重难点讲解)导读: ...
- SpringBoot基础重难点
来源:SpringBoot基础重难点 - liangxiaolong - 博客园 1.SpringBoot 1.1 概念 Spring Boot是构建所有基于Spring的应用程序的起点.Spring ...
- 大一高数下册笔记整理_初中化学期中重难点解读,复习不用愁啦,建议抄笔记...
第一章 大家都来学化学 第二章 空气.物质的构成 一.空气 二.构成物质的微粒--分子.原子.离子 三.元素.物质的分类 往期精彩回顾01知识归纳总结 初中化学:实验操作步骤+专题训练,细致 ...
- php算法求出一个数可以被分解成多少个_小学数学必考的34个数学重难点公式,赶紧给孩子收藏!...
34个小学数学重难点公式 1.和差倍问题 2.年龄问题的三个基本特征 ①两个人的年龄差是不变的: ②两个人的年龄是同时增加或者同时减少的: ③两个人的年龄的倍数是发生变化的: 3.归一问题的基本特点 ...
- 查验身份证(c语言)
7-7 查验身份证(15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1 ...
- Qt之天气预报——界面优化篇(含源码+注释)
一.界面优化效果 下方为界面优化完成和优化前的效果对比. 优化前: 优化后: 二.优化内容 添加标题栏 添加图片(图图标素材源自阿里巴巴矢量图标库) 更新UI内容(微调大小.布局比例) 添加鼠标事件函 ...
- English--音标重难点
English|音标重难点 在拥有了,音标的元音与辅音的基础之后,需要对于这些音标进行加以区分,毕竟方言对于口型的影响非常的大. 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点 ...
- L1-016 查验身份证(2016年天梯赛模拟赛第8题)
7-8 查验身份证(15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1 ...
最新文章
- 计算机信息通信基础知识,计算机基础-(数据通信基础知识)
- Android Studio 中的FindBugs插件使用,轻松帮你发现Bug (转)
- Struts2拦截器简单示例
- Noip 2013 练习
- 报错:Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
- notepad++ 远程连接阿里云服务器
- MySQL 索引优化全攻略
- java后端面试笔记-自用
- 关于开源分布式事务中间件Fescar,我们总结了开发者关心的13个问题
- python爬虫实践目的_Python编写爬虫实践
- PyTorch并行与分布式(一)概述
- iis提示“另一个程序正在使用此文件,进程无法访问”解决办法
- 【HTML简易版“冒险岛”小游戏】(游戏效果展示+全部源代码分享)
- Adobe Flash Builder 4 序列号
- cpolar内网穿透工具
- 【C语言】数组排序法(升序)
- 一个计算机网络的物理组成,1.1.2.1 计算机网络物理组成
- 网络打印机计算机服务,如何把局域网中的所有计算机及打印机设置共享?
- Elasticsearch:Ingest Pipeline 实践
- 打印当前python文件出错行
热门文章
- JAVA计算机毕业设计甜心驿站饮品信息管理(附源码、数据库)
- android studio2.0去除运行按钮旁边闪电标志的方法
- android实现打地鼠游戏
- Hyperledger Fabric区块链浏览器搭建
- java 打包xml脚本_springboot打包不同环境配置与shell脚本部署
- 百度智能小程序这只蝴蝶正在掀起新一轮AI风暴
- 【科技百咖】博思廷王巍:真正做好“视频监控+AI”这道菜
- 爱萌即时通讯使用 - Other linker flags设置
- Cisco ASR 9000 Router IOS XR Software - 7.5.1(ED) 下载
- Android手机 全面屏(18:9屏幕)适配指南 点击打开链接