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

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

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

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

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

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

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

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

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

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

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

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

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

  7. 【2020模拟考试T1】【PAT乙】1031 查验身份证 (15分)模拟

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

  8. 7-21 查验身份证 (15 分)

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

  9. 第3章-2 查验身份证

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

最新文章

  1. R语言boxplot绘制箱线图
  2. Kernel Driver DmaEgine 子系统 (一)
  3. Verilog中testbench的设计,文件读取和写入操作
  4. linux系统怎么建ftp服务器地址,Ubuntu Linux系统建立FTP服务器方法步骤
  5. 牛客网暑期ACM多校训练营(第二场)J farm (二维树状数组)
  6. Linux的目录结构与磁盘分区
  7. 复旦 | DialogVED:用于对话响应生成的预训练隐变量编码-解码模型
  8. dbvisulizer 存储过程
  9. 钉钉主要是用来打卡的,为什么打卡不能放在首页?
  10. SPSS 协方差分析(图文+数据集)【SPSS 020期】
  11. PPT超实用的23个快捷键
  12. 秒建炫酷的开源项目文档,这款神器用起来够优雅
  13. [转] 安卓巴士总结了近百个Android优秀开源项目,覆盖Android开发的每个领域
  14. 设计模式之CS和BS结构的区别
  15. homebrew的安装
  16. ChatGPT4吊打国内一众所谓山寨科技公司
  17. Java中的equals()方法
  18. 同程旅游网开放平台SDK开发完成
  19. 清华大学 高文 计算机,高文(院士)
  20. Windows 7下通过anaconda安装tensorflow

热门文章

  1. u-boot 中 tftp、sf命令使用详解
  2. 概率密度函数、概率分布函数、常见概率分布
  3. 软件测试人员经典面试题目汇总
  4. 100个人围成一圈c语言,C语言 约瑟夫圈问题:N个人围成一圈,从第一个人开始按顺序报数并编号1,2,3,……N,然后开始从第一个人转圈报数,凡是报到3的退出圈子。则剩下的最后一个人编号是多少。...
  5. 字节码增强:原理与实战
  6. Cocos Shader入门基础四:Uniform与材质参数控制
  7. django.core.exceptions.ImproperlyConfigured: Requested setting CACHES报错解决办法
  8. 腾讯安全反病毒实验室解读“Wannacry”勒索软件
  9. 2023年全国最新安全员精选真题及答案50
  10. AndroidStudio jni C++与Java互相调用