博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言——查验身份证
阅读量:3959 次
发布时间:2019-05-24

本文共 2059 字,大约阅读时间需要 6 分钟。

查验身份证

一个合法的身份证号码由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 10M:1 0 X 9 8 7 6 5 4 3 2

现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。

输入格式:

输入第一行给出正整数N(≤100)是输入的身份证号码的个数。随后N行,每行给出1个18位身份证号码。

输出格式:

按照输入的顺序每行输出1个有问题的身份证号码。这里并不检验前17位是否合理,只检查前17位是否全为数字且最后1位校验码计算准确。如果所有号码都正常,则输出All passed

输入样例1:

432012419880824005612010X19890101123411010819671130186637070419881216001X

输出样例1:

12010X19890101123411010819671130186637070419881216001X

输入样例2:

2320124198808240056110108196711301862

输出样例2:

All passed

本人代码如下

#include 
#include
char fun(int n);int res[17]={
7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};int main(){
int n,count,both=0; // n验证次数 count 局部变量,输出错误的身份证号 both 检验是否全部正确,输出ALL passed char result; // 最后一位校验码 scanf("%d",&n); getchar(); char id[n][18]; for(int i=0;i
'9') {
count++; } } if(count>0) {
for(int l=0;l<18;l++) printf("%c",id[i][l]); printf("\n"); both++; } //进行下一步验证 if(count==0) {
int k=0; for(int j=0;j<17;j++) {
k+=(id[i][j]-'0')*res[j]; } k=k%11; result=fun(k); if(id[i][17]!=result) {
for(int l=0;l<18;l++) printf("%c",id[i][l]); printf("\n"); both++; } } } if(both==0) {
printf("All passed"); } return 0;}char fun(int n) //z值与M值对应 当然也可以一维数组,不过为了更好的匹配,于是用switch语句{
switch (n) {
case 0: return '1'; case 1: return '0'; case 2: return 'X'; case 3: return '9'; case 4: return '8'; case 5: return '7'; case 6: return '6'; case 7: return '5'; case 8: return '4'; case 9: return '3'; case 10:return '2'; } return "hello World"; //不会返回这个值的}

转载地址:http://lpmzi.baihongyu.com/

你可能感兴趣的文章
ADO中sqlserver存储过程使用
查看>>
Linux KernelTech版FAQ 1.0
查看>>
ntfs分区iis故障的解决
查看>>
个人创业“六大死穴”
查看>>
最重要的 12个 J2EE 最佳实践
查看>>
通过Java Swing看透MVC设计模式
查看>>
Java 理论与实践: 关于异常的争论
查看>>
编写高效的线程安全类
查看>>
提高Java代码可重用性的三个措施
查看>>
编写跨平台Java程序注意事项
查看>>
富人和穷人的12个经典差异
查看>>
java 注意事项[教学]
查看>>
MetaWeblogAPI测试
查看>>
软件配置管理概念-1,介绍
查看>>
软件配置管理概念-2,用户角色
查看>>
软件配置管理概念-3,CM系统的概念
查看>>
JSP/Servlet应用程序优化八法
查看>>
人生必修的181条佛理
查看>>
The Most Widely Used Java Libraries
查看>>
简单在单机使用apache-james(开源邮件服务器)
查看>>