PAT 乙级 1031 查验身份证

2023-12-26 19:36
文章标签 pat 身份证 查验 乙级 1031

本文主要是介绍PAT 乙级 1031 查验身份证,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一个合法的身份证号码由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()
{char m[]="10X98765432";int w[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};int count=0;int n;int z;char a[20];scanf("%d",&n);int i;while(n--){z=0;scanf("%s",a);for(i=0;i<17;i++){z+=(a[i]-'0')*w[i]; //求各个位权重和 }z=z%11;if(a[17]!=m[z])    //不符合 {printf("%s\n",a);count++;}	}if(!count)printf("All passed\n");return 0;} 

这篇关于PAT 乙级 1031 查验身份证的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/540588

相关文章

3月份目标——刷完乙级真题

https://www.patest.cn/contests/pat-b-practisePAT (Basic Level) Practice (中文) 标号标题通过提交通过率1001害死人不偿命的(3n+1)猜想 (15)31858792260.41002写出这个数 (20)21702664840.331003我要通过!(20)11071447060.251004成绩排名 (20)159644

PAT-1039 到底买不买(20)(字符串的使用)

题目描述 小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子;如果不是,那么告诉她缺了多少珠子。为方便起见,我们用[0-9]、[a-z]、[A-Z]范围内的字符来表示颜色。例如,YrR8RrY是小红想做的珠串;那么ppRYYGrrYBR2258可以

PAT-1028

题目描述 某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉。 输入描述: 输入在第一行给出正整数N,取值在(0, 105];随后N行,每行给出1个人的姓名(由不超过5个

办理河南建筑工程乙级设计资质的流程与要点

办理河南建筑工程乙级设计资质的流程与要点 办理河南建筑工程乙级设计资质的流程与要点主要包括以下几个方面: 流程: 工商注册与资质规划:确保企业具有独立法人资格,完成工商注册,并明确乙级设计资质的具体要求,包括注册资本、人员配置、技术条件等。 专业技术人员配置: 雇佣或签约符合资质要求的专业技术人员,包括但不限于:一级注册结构工程师2名、一级注册建筑师2名、注册暖通工程师1名、注册供配电工

每日一题——Python代码实现PAT乙级1048 数字加密(举一反三+思想解读+逐步优化)五千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 初次尝试  再次尝试 代码点评 代码结构 时间复杂度 空间复杂度 优化建议 我要更强 优化建议 完整代码及注释 时间复杂度和空间复杂度分析 进一步优化 哲学和编程思想 模块化

C++身份核验接口-守护网络安全从身份证实名认证开始

说起安防,大家想到的都是国家、政府、机构等,其实做这些的最终目的是为了保障国家、个人的安全,如果个人的安全都是未知那凭什么去说更高层面的安防呢。 江歌遇害案最近在各媒体都占据了醒目的位置,目前陈世峰已经承认杀人,但是在日本如果只杀一人是很难判死刑的,再者,即使判了陈世峰死刑江歌也不可能活过来,只能是给个说法。这个案件给人们的教训是:量力而行,想保护他人的同时也要考虑自身的安全,毕竟我们不是超人,

PAT-L1-020 帅到没朋友

L1-020 帅到没朋友 (20 分) 当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友。本题就要求你找出那些帅到没有朋友的人。 输入格式: 输入第一行给出一个正整数N(≤100),是已知朋友圈的个数;随后N行,每行首先给出一个正整数K(≤1000),为朋友圈中的人数,然后列出一个朋友圈内的所有人——为方便起见,每人对应一个ID号,为5位数字(从00000到99999),I

PAT-L1-011. A-B

这个题目很坑,同样的算法思路,C++秒过,java怎么也超时,给跪 L1-011. A-B 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 本题要求你计算A-B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字

PAT-L1-010. 比较大小

L1-010. 比较大小 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 杨起帆(浙江大学城市学院) 本题要求将输入的任意3个整数从小到大输出。 输入格式: 输入在一行中给出3个整数,其间以空格分隔。 输出格式: 在一行中将3个整数从小到大输出,其间以“->”相连。 输入样例

PAT-L1-009. N个数求和

之前用java没跑出来,过了很久重新用python写了一遍跑出来了,原有的java的代码也没有删除,知道问题在哪里了,写在注意点里面 这道题目要考虑到细节 1.掌握求解最大公约数和最小公倍数的方法——辗转相除法 2.考虑最终的结果可能是负数的情况,应该先约分和变为整数和分数的情况后,再添加上符号 L1-009. N个数求和 时间限制 400 ms 内存限制 65536 kB 代码