L1-016 查验身份证 (15 分)
一个合法的身份证号码由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 <stdlib.h>  int charToInt(char c)
{  return (int)(c-'0');  }  int main(int argc, char *argv[]) {  int n,i,j,k=0,s,  a[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};  char cur,b[11]={'1','0','X','9','8','7','6','5','4','3','2'},  c[20];  scanf("%d",&n);  for(i = 0; i < n;i++){  s=0;  scanf("%s",&c);  for(j= 0;j<17;j++){  if(c[j]>='0'&&c[j]<='9'){  s+=charToInt(c[j])*a[j];  }else{  printf("%s",c);  if(i<n-1){  printf("\n");  }  s=-1;  break;  }     }  if(b[s%11]==c[j]&&s!=-1){  k++;  }else if(b[s%11]!=c[j]&&s!=-1){  printf("%s",c);  if(i<n-1){  printf("\n");  }  }  }  if(k==n){  printf("All passed");  }  return 0;
}

L1-016 查验身份证 (15 分) — 团体程序设计天梯赛相关推荐

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

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

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

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

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

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

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

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

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

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

  6. 查验身份证(15分)

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

  7. L1-016 查验身份证 (15 分)[JAVA]

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

  8. 查验身份证 (15 分)一个合法的身份证号码

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

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

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

  10. L1-016 查验身份证 (15 分)

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

最新文章

  1. 苹果布局大数据,两亿美元收购暗数据企业
  2. mysql不停止重启服务器_不停止MySQL服务增加从库的两种方式
  3. DPDK 报文收发流程(二十五)
  4. java多个事件_window.onload绑定多个事件的两种解决方案
  5. 计算机系学生mac,大学生选择苹果电脑之后的经验之谈
  6. 软件连接oracle失败怎么办,【编程开发工具】navicat连接oracle失败怎么办
  7. C语言extern的用法
  8. Linux Shell获取系统资源使用百分比(CentOS)
  9. Java的Stack类
  10. ct扫描方式有哪些_日联科技x-ray:工业CT是怎么进行X射线的断层扫描的
  11. OPENGL中GLAD的代码实现过程
  12. AMiner推荐论文:Flexible artificial Si-In-Zn-O/ion gel synapse and its application to sensory-neuromorphi
  13. ARM Coresight
  14. Respones请求重定向
  15. 面试官:说一下Synchronized底层实现,锁升级的具体过程?
  16. table表格自动滚动
  17. python pandas stack_10分钟上手 Python pandas
  18. 上海迪士尼将建疯狂动物城主题园区
  19. 使用贷款基础利率LPR购房
  20. 电脑蓝屏只有鼠标能动的解决方法

热门文章

  1. c# combobox 绑定枚举方式
  2. NLP技术基石:从N-gram统计语言模型到BERT预训练模型演变史概述
  3. 【激活函数】深度学习领域最常用的10个激活函数,一文详解数学原理及优缺点...
  4. 【NLP笔记】理论与实践详解词向量
  5. ACL2020 | 什么时候值得用BERT上下文嵌入
  6. python创建docx文件
  7. 将list中的数据类型都变成int类型
  8. bert处理英文的词根处理
  9. 写软件的需求分析全方位攻略
  10. 分块存储视图状态数据