团体程序设计天梯赛-练习集 L1-016 查验身份证
时间:2022-07-24
本文章向大家介绍团体程序设计天梯赛-练习集 L1-016 查验身份证,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
L1-016 查验身份证
一个合法的身份证号码由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 T=0;
int fun1(char str[][19],int n);
int fun2(char str[][19],int *arr,int n);
void fun3(int *Z,char *M,char str[][19],char c,int r,int j);
int main()
{
int arr[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
int Z[11]={0,1,2,3,4,5,6,7,8,9,10};
char M[11]={'1','0','X','9','8','7','6','5','4','3','2'};
char str[101][19];
int N;
scanf("%d",&N);
int i;
for(i=0;i<N;i++)
{
scanf("%s",&str[i]);
}
int temp;
for(i=0;i<N;i++)
{
temp=fun1(&str,i);
if(temp==1)
{
int r=fun2(&str,&arr,i);
fun3(&Z,&M,&str,str[i][18-1],r,i);
//printf("%dn",r);
}
else
{
printf("%sn",str[i]);
T++;
}
}
if(T==0) printf("All passedn");
return 0;
}
int fun1(char str[][19],int n)
{
int i;
int temp=1;
for(i=0;i<18-1;i++)
{
if(str[n][i]>='0'&&str[n][i]<='9');
else
{
temp=0;break;
}
}
if(temp==1) return 1;
else return 0;
}
int fun2(char str[][19],int *arr,int n)
{
int i;
int sum=0;
for(i=0;i<18-1;i++)
{
sum+=((str[n][i]-'0')*arr[i]);
}
return sum%11;
}
void fun3(int *Z,char *M,char str[][19],char c,int r,int j)
{
int i;
for(i=0;i<11;i++)
{
if(r==Z[i]) break;
}
if(M[i]==c);
else
{
puts(str[j]);T++;
}
}
- 每天学一点Docker(3)(制作你的第一个容器)
- 1635: [Usaco2007 Jan]Tallest Cow 最高的牛
- 1653: [Usaco2006 Feb]Backward Digit Sums
- 1619: [Usaco2008 Nov]Guarding the Farm 保卫牧场
- 1682: [Usaco2005 Mar]Out of Hay 干草危机
- 1637: [Usaco2007 Mar]Balanced Lineup
- AutoFac在项目中的应用
- 每天学一点Docker(5)——了解Docker架构
- 跨站请求伪造(CSRF/XSRF)
- 我这么玩Web Api(一)
- 1624: [Usaco2008 Open] Clear And Present Danger 寻宝之路
- 点双连通分量与割点
- 1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐
- 1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 详解 Vue 目录及配置文件之 build 目录
- Linux 常见文件管理命令及目录结构(1)
- Java parseInt( ) 方法
- 详解 Vue 目录及配置文件之 node_modules,src,static,test 目录
- 洛谷 P1077 摆花(记忆化搜索 or DP)
- Vue 使用 element-ui
- Codeforces Round #629 (Div. 3) F. Make k Equal (技巧暴力,类前缀和,思维,数学)
- vue 渐变色文字
- Java 水题系列(2)Pi的近似值
- vue 无缝滚动组件 vue-seamless-scroll
- Java 水题系列(3)回文素数
- NDB Cluster 8.0中的自动模式同步:第1部分
- MongoDB助力一个物流订单系统
- NDB Cluster 8.0中的自动模式同步:第2部分
- NetCore配置框架详解