用C++编一个身份证15位升18位的程序
来源:百度知道 编辑:UC知道 时间:2024/05/27 17:24:38
已知旧身份证号码为15位,其中第7~12位体现居民的出生日期,由两位年份+两位月份+两位日期组成;新身份证号码为18位,其中第7~14位体现居民的出身日期,由四位年份+两位月份+两位日期组成。试定义一个类ID,根据居民的出身日期校验其身份证号是否正确。具体要求如下:
int fun( ); 根据出生日期校验身份证号是否正确,如果正确,函数返回值为1,否则返回值为0。必须使用如下算法:首先确定身份证号码的位数(15位或18位),再分别取出身份证中的表示年份、月份、日期的子字符串,然后利用val函数分别将它们转换为数值,最后与相应成员数据比较,得到校验结果;
void print( ); 输出所有成员数据。
在主函数中输入两个身份证号(一个18位:321102190002151910,另一个15位:321102490318191),分别用这两个身份证号初始化类ID的两个对象,然后通过成员函数fun校验身份证号是否正确,并输出相应的信息(身份证号、出生日期、校验结果)
int fun( ); 根据出生日期校验身份证号是否正确,如果正确,函数返回值为1,否则返回值为0。必须使用如下算法:首先确定身份证号码的位数(15位或18位),再分别取出身份证中的表示年份、月份、日期的子字符串,然后利用val函数分别将它们转换为数值,最后与相应成员数据比较,得到校验结果;
void print( ); 输出所有成员数据。
在主函数中输入两个身份证号(一个18位:321102190002151910,另一个15位:321102490318191),分别用这两个身份证号初始化类ID的两个对象,然后通过成员函数fun校验身份证号是否正确,并输出相应的信息(身份证号、出生日期、校验结果)
我这只有VB的。
Dim a, w, s ,id
msgbox "本程序用于身份证号码的校验与升位",vbokonly+vbinformation,"身份证校验程序"
id=inputbox("输入15位身份证号码或18位身份证号码的前17位或","ID","11010519491231002")
if vartype(id)<>0 then
'检验号码输入合法性
l=0
do until l=1
l=1
p=""
if len(id) <>17 then
if len(id) <> 15 then
l=0
p="输入位数不正确,请输入15位或17位数字。"
end if
end if
for i = 1 to len(id)
a=mid(id,i,1)
if asc(a)<asc("0") or asc(a)>asc("9") then
l=0
p=p & vbCrLf & vbCrLf & "请输入数字,不要包括字符“" & a & "”。"
exit for
end if
next
if l=0 then
id=inputbox("输入不合法" & vbCrLf & vbCrLf & p,"输入错误",id)
end if
loop
'将15位号码升位到17位号码
if len(id)=15 then
id = left(id,6) & "19" & right(id, 9)