乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范。从小白开始逐步掌握用编程解决问题。
PAT乙级BasicLevelPractice 1031
问题分析
我们看到题目详细地描述了计算过程/操作步骤, 所以需要做的是将题目给定步骤翻译为代码即可。
计算规则
- 给定一个18位的身份证, 一组权重(17个值)
- 用身份证前17位分别乘以对应的权重, 并且求和
- 将求得的和, 对11取模得到值Z
- 根据给定的Z值到M值的映射表, 将取模得到的Z值映射为对应的M值
- 检查M值是否等于身份证号第18位
完整描述步骤
- 获取输入的身份证个数
- 依次获取身份证号 ID_number
- 按照计算规则计算出M值并且进行对比
- 如果M值不等于身份证号第18位, 则输出该错误的身份号
- 如果所有号码都正常(设置计数器统计), 则输出"All passed"
伪代码描述
- get input case_amount;
- set weights = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
set mapping = [1 0 X 9 8 7 6 5 4 3 2]
s