1、原题再现:
输入一个学生的身份证号码,程序检验身份证号码是否合法。并显示省份、年龄、性别等信息。
下面是身份证号码的规则:
身份证号码共18位。前6位是地址码,7–14位是出生年月日,后面4位是生成的代码,第17位用来做性别判定: 偶数 – 女 ; 奇数— 男 。
第十八位数字的计算方法为:
1)、 将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
2)、将这17位数字和系数相乘的结果相加。
3)、用加出来和除以11,看余数是多少?
4)、余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2。
5)、通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。
2、设计思路
功能主要分为两个部分,一是判断是否合法,二是输出身份信息,包括省份,出生日期,性别,年龄。
判断合法:包括判断:①首两位省份信息是否合法,即判断是否有省份的编码是输入的首两位。
②判断出生日期是否合法。首先判断月份数是不是合理,合理的话就判断接下来日期是否合理:先判断是不是二月,不在二月的话就只要判断日期数是否在最大与最小值之间即可;是二月就需要判断是否是闰年了:先判断日期是否>29或者<0,是的话就不合法,不是的话再判断是不是29,是的话,就判断前面年份数是否是闰年,是的话就合法,否则不合法。③判断第十八位是否合法。直接将十七位乘上系数再累加,最后除以11,根据余数判断尾数是否合法。④判断长度是否合法。直接将输入字符串的id[1],即实际输入长度(不包括回车)与18比较即可。
输出身份信息:输出省份信息、出身日期、年龄、性别。
最终界面:
3、具体实现
运行环境:DOSBox,怎么在DOSBox上运行汇编可参考:DOSBox里运行汇编程序