博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT L1-016. 查验身份证
阅读量:4156 次
发布时间:2019-05-26

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

PAT L1-016. 查验身份证


#include 
int w[17] = {
7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};intf(char a[]) { // 前17位加权求和 int sum = 0; for( int i = 0; i < 17; i++ ) { sum += ((a[i] - '0') * w[i]); } return sum;}intjudge(char a[]) { // 检查前17位是否全为数字 int flag = 1; for( int i = 0; i < 17; i++ ) { if( !(a[i] >= '0' && a[i] <= '9') ) { flag = 0; } } return flag;}intmain() { char m[11] = {
'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'}; // 注意大写X int n, j, lflag; char num[20]; //数组开大一点,num[18]换行会影响结果? scanf("%d", &n); lflag = 1; for( j = 0; j < n; j++ ) { scanf("%s", num); // 前17位不全为数字 or 校验码无效,输出并标记有身份证不正常 if( (!judge(num)) || num[17] != m[f(num) % 11] ) { printf("%s\n", num); lflag = 0; } } if( lflag == 1 ) { printf("All passed\n"); } return 0;}

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

你可能感兴趣的文章
Linux initial RAM disk (initrd) overview
查看>>
Timestamping Linux kernel printk output in dmesg for fun and profit
查看>>
There's Much More than Intel/AMD Inside
查看>>
CentOS7 安装MySQL 5.6.43
查看>>
使用Java 导入/导出 Excel ----Jakarta POI
查看>>
本地tomcat 服务器内存不足
查看>>
IntelliJ IDAE 2018.2 汉化
查看>>
Openwrt源码下载与编译
查看>>
我和ip_conntrack不得不说的一些事
查看>>
Linux 查看端口使用情况
查看>>
文件隐藏
查看>>
两个linux内核rootkit--之二:adore-ng
查看>>
两个linux内核rootkit--之一:enyelkm
查看>>
关于linux栈的一个深层次的问题
查看>>
rootkit related
查看>>
配置文件的重要性------轻化操作
查看>>
又是缓存惹的祸!!!
查看>>
为什么要实现程序指令和程序数据的分离?
查看>>
我对C++ string和length方法的一个长期误解------从protobuf序列化说起(没处理好会引起数据丢失、反序列化失败哦!)
查看>>
一起来看看protobuf中容易引起bug的一个细节
查看>>