2011华为上机题回顾:数据结构与MSISDN验证函数

需积分: 10 5 下载量 33 浏览量 更新于2024-07-30 收藏 168KB DOC 举报
2011年的华为上机试题涉及到两个编程题目,分别涉及数据结构和电话号码验证。首先,我们来看第一个数据结构题目,它关注于设计一个实现约瑟夫环(Josephus Problem)的程序。约瑟夫环是一个经典的问题,通常用于算法设计,它描述了一群人在圆桌上按照特定规则进行淘汰的过程。在这个题目中,需要编写`creat`函数来创建一个循环链表,模拟n个人(编号1到n)围绕桌子坐好,然后定义`fun`函数,该函数接收链表指针`L`和一个整数`m`作为参数,模拟报数并逐个淘汰出列的过程。程序通过遍历链表,每当遇到m的倍数时,将当前节点出列,并调整链表结构以继续下一轮报数。 `creat`函数创建一个链表,初始化每个节点的编号,并确保形成一个循环链表,使得最后一个节点的`next`指向第一个节点。`fun`函数通过一个循环和计数器来追踪报数过程,当计数器达到m时,打印当前节点的编号并将节点出列。最后,在`main`函数中,调用这两个函数并设置n(例如9)和m(例如5)的值。 第二个题目是关于电话号码验证的,使用C语言编写,函数名为`verifyMsisdn`。该函数接收一个国际移动用户识别码(MSISDN)字符串`inMsisdn`,目的是检查其是否符合规定的长度和格式。函数首先检查输入是否非空,然后判断字符串长度是否等于预设的固定长度(这里是13)。函数内部使用`strlen`函数获取字符串长度并与规定长度进行比较,同时检查第一个字符是否为8,这是中国手机号码的前缀。 这些题目展示了在2011年华为上机考试中对基础数据结构(如链表)和实际问题求解能力(约瑟夫环问题)的考察,以及对C语言编程基础(字符串处理、内存管理)的检验。考生需要具备扎实的数据结构知识,理解并能够灵活运用链表操作,同时熟悉常见的输入验证算法。这些技能在IT行业中非常重要,尤其是在软件开发和算法设计领域。