身份证号码合法性判断
问题描述:
我国公民的身份证号码特点如下:
1、长度为18位;
2、第1~17位只能为数字;
3、第18位可以是数字或者小写英文字母x。
4、身份证号码的第7~14位表示持有人生日的年、月、日信息。
例如:511002198808080111或51100219880808011x。
请实现身份证号码合法性判断的函数。除满足以上要求外,需要对持有人生日的月日信息进行校验(大小月)。
比如0808表示8月8日月日信息,是合法的;0832表示8月32日,是非法的月日信息;1308表示13月8日,是非法的月日信息。
不需要考虑闰年的情况,2月份统一认为只有28天,测试用例不会输入闰年情况。其他情况的合法性校验,考生不用考虑。
函数返回值:
1) 如果身份证号合法,返回0;
2) 如果身份证号长度不合法,返回1;
3) 如果身份证号第1~17位含有非数字的字符,返回2;
4) 如果身份证号第18位既不是数字也不是英文小写字母x,返回3;
5) 如果身份证号上的日期信息非法,返回4;
[注]
除成功的情况外,以上其他合法性判断的优先级依次降低。也就是说,如果判断出长度不合法,直接返回1即可,不需要再做其他合法性判断。
日期合法性判断不考虑闰年情况,即2月只有28天,出现2月29日情况均认为日期非法。测试用例也不会出现闰年的情况,在此情况下如果考生花时间进行了闰年处理,
并不能带来任何加分,并且由于是自动阅卷,甚至出现扣分。
示例
1) 输入:”511002111222”,函数返回值:1;
2) 输入:”511002abc123456789”,函数返回值:2
3) 输入:”511002198808321234”,函数返回值:4
4) 输入:”511002200102291234”,函数返回值:4
5) 输入:”511002198808081234”,函数返回值:0
题目解析:
本题主要也是涉及字符串的基本操作,以及面向对象的程序设计,因为主要是面向软件开发岗位,所以题目的设置是有一定的层次的,需要测试者熟悉一下基本的C++编程
熟悉基本的对象的设计!同时也要明确解决问题的步骤!下面我的代码,由于没有系统的学习够面向对象的设计和C++,就仅仅是使用类的外壳,外加C++语言,做了一下,希望给位大神,予以设计上的批评与指导!感谢大家不吝赐教!
#include <string>
#include <iostream>
using namespace std;
class CheckID
{
public:
CheckID(string id) { m_ID = id; }
~CheckID() { }
public:
int checkIDLength()
{
return ((int)m_ID.length() != 18 ? 1:0) ;
}
int checkIDNormal()
{
for(size_t i=0;i<m_ID.length()-1;i++)
if(m_ID[i] < '0' || m_ID[i] > '9')
return 2;
return 0;
}
int checkIDFinalChar()
{
if(!(m_ID[17] == 'x' || (m_ID[17] <= '9' && m_ID[17] >= '0')))
return 3;
return 0;
}
int checkIDBirthDay()
{
string birthDay = m_ID.substr(10,4);
int month = 0, day = 0;
month = atoi(birthDay.substr(0,2).c_str());
day = atoi(birthDay.substr(2,2).c_str());
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(day > 31 || day < 1)
return 4;
else
break;
case 4:
case 6:
case 9:
case 11:
if(day > 30 || day < 1)
return 4;
else
break;
case 2:
if(day > 28 || day < 1)
return 4;
else
break;
}
return 0;
}
int checkID()
{
int res = 0;
res += checkIDLength();
if(res != 0)
return res;
res += checkIDNormal();
if(res != 0)
return res;
res += checkIDFinalChar();
if(res != 0)
return res;
res += checkIDBirthDay();
if(res != 0)
return res;
return res;
}
private:
string m_ID;
};
int main()
{
string id;
cin >> id;
CheckID check(id);
int res = check.checkID();
cout << res << endl;
}
分享到:
相关推荐
华为新版测试软件GENEX-Probe-V500R002-setup.exe,新版本带地图, 通信行业 华为测试工具,免加密狗, 版本 GENEX-Probe-V500R002-setup-5.2.T7, License 自己申请
"华为机考-软件测试试题" 一、软件测试的基本概念 软件测试是软件开发过程中的一个重要步骤,它旨在评价软件是否满足既定的需求和规范。软件测试的目的是验证软件是否满足软件开发合同或项目开发计划、系统/子系统...
求职华为经历―软件开发―性格测试-机试-面试-OFFER 本文总结了作者的求职华为经历,从注册简历到获得offer的整个过程。主要包括性格测试、机试、面试几个环节,并对每个环节进行了详细的描述和建议。 一、注册...
华为od机试题-真题(包含答案) 华为od机试题-真题(包含答案) 华为od机试题-真题(包含答案) 华为od机试题-真题(包含答案) 华为od机试题-真题(包含答案) 华为od机试题-真题(包含答案) 华为od机试题-真题...
里面提供了华为2011 校园招聘上机试题 原题6套~ 谢谢下载
这篇2011年的机试题可能包括了多个部分,旨在评估候选人的Java编程技能和对软件开发的理解。虽然具体的题目内容没有提供,但我们可以基于常见的Java面试知识点进行讨论。 首先,源码分析是Java开发者必备的技能。...
在IT行业中,软件开发与测试工程师是至关重要的角色,尤其在华为这样的科技巨头中,对这两类人才的要求更是高标严格。本资料集合了近几年华为针对软件开发工程师和软件测试工程师的面试题目,旨在帮助求职者更好地...
HCIP-VC华为视讯工程师培训教材与过关H11-861题库: HCIP-VC.pdf HCIP-Video V2.0考试试题.pdf HCIP-Video V2.0模拟试题.pdf HCIA-Video Conference V3.0视频会议工程师培训教材
2009年华为软件公司代码鉴定实战考试---JAVA考试模拟试题0510
华为F202-234g华为F202-234g华为F202-234g华为F202-234g华为F202-234g华为F202-234g华为F202-234g华为F202-234g华为F202-234g华为F202-234g华为F202-234g华为F202-234g华为F202-234g华为F202-234g华为F202-234g华为...
此外,华为公司软件测试笔试题还涵盖了其他软件测试知识点,例如软件测试的 importance、软件测试的分类、软件测试的方法、软件测试的工具、软件测试的优点和缺点等。 华为公司软件测试笔试题涵盖了软件测试的基础...
【华为服务器引导光盘镜像-FusionServer Tools-ServiceCD2.0-V131】是华为公司为FusionServer系列服务器提供的一款重要的维护和管理工具集合,它包含了一系列用于安装、配置、诊断和维护华为服务器的软件工具。...
华为S5700-24TP-SI-AC是一款广泛应用的企业级三层交换机,主要设计用于构建高效、稳定的企业网络。这款交换机支持多种高级功能,如虚拟化、QoS(服务质量)、IPv4/IPv6双栈以及安全策略等。在本资源中,我们关注的是...
华为adb手机驱动工具专门用于华为安卓系统智能机,在电脑上安装这个驱动后,才能连接电脑与手机进行各种操作,如手机解锁刷机等操作。软件操作比较简单,运行后按照提示操作就可以了,如果你的手机被锁了,可以使用...
华为交换机固件S5700-P-BAT-LI-V200R011C10SPC600.zip是一款针对华为S5700系列交换机的软件更新包,主要用于提升设备的性能、增强网络安全性、修复已知问题以及提供新的功能特性。在IT领域,固件升级是保持网络设备...
( )A、vlan4094 B、vlan2 C、vlan1 D、vlan1024试题答案:A;B;D试题解析:vlan的取值范围为1-4094,vlan 1 为默认vlan 无法被删除,因此答案选ABD。3.构建以太网交换网络2.注意:有题目有解析下面关于生成树协议中...
这篇资料是关于2013年华为公司针对校园招聘的软件开发实习生进行的机试题目。作为一家全球领先的电信解决方案供应商,华为在选拔人才时,尤其是对于软件开发实习生的考核,通常会注重候选人的编程能力、算法理解以及...
【华为机试题校园招聘大全】 华为作为全球知名的通信与信息技术解决方案提供商,每年都会进行大规模的校园招聘活动,吸引优秀毕业生加入。"华为机试题校园招聘大全"是华为公司在招聘过程中,为评估应聘者的技术能力...
华为认证HCIE-RS3.0-LAB1-OptioneC1 题目 华为认证HCIE-RS3.0-LAB1-OptioneC1 题目
华为交换机CE6851-48s6q-HI是华为企业级网络设备中的一个型号,专门设计用于提供高性能、高密度的以太网接入服务。该设备支持多种网络协议和服务,如IEEE 802.1Q VLAN、802.1p优先级控制、端口安全以及QoS策略,适用...