思路:

1.把18位的身份证分成18个字符

2.先判断前17位是否全为数字,若不是,直接输出这些字符;若是,直接计算出他们加权的结果,得出Z,与M比较。

#include<bits/stdc++.h>
using namespace std;
int main()
{char a[20];int n=0,z=0,num=0,judge=0,flag=0;int b[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};cin>>n;for(int i=1;i<=n;i++){int pd=0;for(int j=0;j<18;j++) cin>>a[j];for(int k=0;k<=16;k++){if(a[k]>'9'||a[k]<'0'){pd++;if(flag==1) cout<<endl;for(int j=0;j<18;j++){judge++;pd++;cout<<a[j]; }flag=1;}}num=0;for(int k=0;k<=16;k++) num+=b[k]*(a[k]-'0');z=num%11;if((z==0&&a[17]!='1')||(z==1&&a[17]!='0')||(z==2&&a[17]!='X')||(z==3&&a[17]!='9')||(z==4&&a[17]!='8')||(z==5&&a[17]!='7')||(z==6&&a[17]!='6')||(z==7&&a[17]!='5')||(z==8&&a[17]!='4')||(z==9&&a[17]!='3')||(z==10&&a[17]!='2')){if(pd==0){judge++;if(flag==1) cout<<endl;printf("%s",a);flag=1;}            }   }if(judge==0) cout<<"All passed";
}

错误:num第一次计算完忘记清0了,导致答案一直不对。

感觉最后Z和M的对应可以改进一下,用十一进制来做,有机会发一下。

pta乙级1031查验身份证(AC)相关推荐

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

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

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

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

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

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

  4. PAT乙级1031 查验身份证

    1031. 查验身份证(15) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 一个合法的身份证号码由17位地区. ...

  5. PAT乙级(1031 查验身份证)

    PAT乙级1031题解题: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}:然后将计算的和对11取模得到值Z:最后按照以下关系对应Z ...

  6. pat 乙级 1031 查验身份证(C++)

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

  7. [PAT乙级]1031 查验身份证

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

  8. PAT 乙级 1031. 查验身份证(15) Java版

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

  9. 乙级--1031 查验身份证 (15分)(中等)

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

最新文章

  1. python包pip安装_python包管理之Pip安装及使用
  2. Windows 程序员必备的知识和工具
  3. Mac 勿扰模式周期性开关闭功能实现脚本
  4. 一个IP绑定多个域名(虚拟主机)设置方法
  5. 博为峰JavaEE技术文章 ——MyBatis 简介(2)
  6. 2进制、8进制、10进制、16进制...各种进制间的轻松转换(c#)
  7. rust拆掉墙_rust怎么拆自己的墙
  8. Eclipse JPA Project创建
  9. 数据库中字段为CLOB的属性,在Java实体类中将CLOB转化为String
  10. gis统计百分比_ArcGIS数据统计
  11. C# 生成多张excel 并打包
  12. Horner法则(秦九韶算法 )的程序实现
  13. 环信第三方集成 -- 移动客服
  14. android 动画直播,直播动画实现方案一
  15. 魔方APP项目-04-用户模块API接口、Marshmallow,基本构造器(Schema),Schema数据序列化、Schema数据反序列化、反序列化对数据验证、模型构造器(ModelSchema)
  16. 铿锵玫瑰回来了 男足还是臭脚吗
  17. Python-print 函数之换行
  18. Netty channelRegistered\ChannelActive---源码分析
  19. 【论文笔记】Deep Reinforcement Learning Control of Hand-Eye Coordination with a Software Retina
  20. CAD图库,别墅设计图纸免费资源分享

热门文章

  1. Super Resolve Dynamic Scene from Continuous Spike Streams
  2. 项目众包 开源项目_如何通过开源项目获利并保持活力
  3. 新浪微博 QQ登录 登陆授权 V1.0
  4. 人工智能书籍——《奇点临近》
  5. Linux内核平台设备驱动模型platform_device和platform_driver框架
  6. 电子计算机的字母是什么意思,电脑硬件的型号中的数字和字母都代表什么意思...
  7. 去除字符串中的表情符号以及判断字符串中是否存在表情符号
  8. 抖音上农民伯伯出的题,真的会难倒清华北大的高材生吗?
  9. Failed to launch wechat web devTools, please make sure http port is open【自动化测试】
  10. 共筑数字化未来,金山办公携手华为云完成文档中心和GaussDB适配