【2017年整理】华为编程大赛试题2

上传人:爱****1 文档编号:949455 上传时间:2017-05-23 格式:DOC 页数:5 大小:74.50KB
返回 下载 相关 举报
【2017年整理】华为编程大赛试题2_第1页
第1页 / 共5页
【2017年整理】华为编程大赛试题2_第2页
第2页 / 共5页
【2017年整理】华为编程大赛试题2_第3页
第3页 / 共5页
【2017年整理】华为编程大赛试题2_第4页
第4页 / 共5页
【2017年整理】华为编程大赛试题2_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《【2017年整理】华为编程大赛试题2》由会员分享,可在线阅读,更多相关《【2017年整理】华为编程大赛试题2(5页珍藏版)》请在金锄头文库上搜索。

1、客观题部分,共 30 分,建议这部分答题用 40 分钟。一、 单选题 (每题 1 分,共 10 题)1、以下叙述中不正确的是_。A) 在不同的函数中可以使用相同名字的变量B) 函数中的形式参数是局部变量C) 在一个函数内定义的变量只在本函数范围内有效D).在一个函数内的复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)2、下列全局变量定义中,正确的是:_。A) char abc ;B) char abc NUM;C) char abc NUM ;D) char abc 0;3、关于断言,错误的说法是:_。A) 我们可以使用断言来发现软件问题。B) 在正式发布的软件版

2、本中也要保留断言,以便于定位问题。C) 断言不能用于对外部输入数据的判断,只能用于程序内部逻辑的判断。D) 不能用断言来代替错误处理。4、关于函数参数,正确的说法是_。A) 防止将函数的参数作为工作变量。B) 应该为函数功能的扩展预留尽可能多的参数接口。C) 通常函数内部会对函数参数进行合法性检查,为了提高效率,函数调用者不需要再次进行参数合法性检查。D) 不要输入指针变量。5、关于函数实现,下面不正确的说法是_。A) 为简单功能编写函数。B) 函数的功能应该是可以预测的,也就是只要输入数据相同就应产生同样的输出。C) 防止把没有关联的语句放到一个函数中。D) 为了增强函数的可用性,应尽量设计

3、多用途面面俱到的函数。6、关于函数,不正确的说法是_。A) 如果多段代码重复做同一件事情,那么在函数的划分上可能存在问题。B) 功能不明确较小的函数,特别是仅有一个上级函数调用它时,应考虑把它合并到上级函数中,而不必单独存在。C) 对所调用函数的错误返回码可以根据需要决定是否处理。D) 对于提供了返回值的函数,在引用时最好使用其返回值。7、编程中下面说法错误的是_。A) 编程时,要防止差 1 错误。如:把“=”误写成“”。B) 系统运行之初,要初始化有关变量及运行环境,防止未经初始化的变量被引用,但可以使用操作系统的默认初始化值。C) 有可能的话,if 语句尽量加上 else 分支,对没有 e

4、lse 分支的语句要小心对待;switch 语句必须有 default 分支。D) 要时刻注意易混淆的操作符,如 C/C+中的“=”与“=”、“|”与“|”、“&”与“&”等。当编完程序后,应从头至尾检查一遍这些操作符,以防止拼写错误。 8、如果有下列定义:char acX = abcdefg;char acY = a,b,c,d,e,f,g;下面四个说法中正确的是:_。A) 数组 acX 和数组 acY 等价B) 数组 acX 和数组 acY 的长度相同C) 数组 acX 的长度大于数组 acY 的长度D) 数组 acX 的长度小于数组 Y 的长度9、假设执行语句 S 的时间为 O(1) ,

5、则执行下列程序短的时间为 _。 (乘法表的计算可以采用这种模式)for(i=1;i=n;i+) for(j=i;j=n;j+) S; A) O(n) B) O(n2) C) O(n*i) D) O(n+1) 10、设有 98 个已排序列元素,采用二分法查找时,最大比较次数是_。 A) 49 B) 15 C) 20 D) 7 二、 多选题 (每题 2 分,共 10 题,少选可以得 1 分)11、 关于全局变量的注释,哪些描述是正确的?_。 A) 全局变量要有较详细的注释B) 注释包括功能、取值范围等C) 如果全局变量的命名是充分自注释的,则可以不加注释D) 注释可以包括使用方法12、 关于变量,

6、正确的说法是:_。A) 在对变量声明的同时,应对其含义、作用及取值范围进行注释说明,同时若有必要还应说明与其它变量的关系;B) 对公共变量赋值时,若有必要应进行合法性检查,以提高代码的可靠性、稳定性;C) 构造仅有一个函数可以修改,而其余函数只读的全局变量,可防止函数的不可重入性;D) 不同的编译器对变量的默认初始化是不同的。为了避免不同编译器引起的差别,对变量,尤其是指针变量,强烈推荐在使用前将其初始化。13、 下面关于资源分配的说法正确的是:_。A) 只引用属于自己的存贮空间。B) 防止引用已经释放的内存空间。C) 过程/函数中分配的内存,在过程/函数退出之前要释放。D) 过程/函数中申请

7、的(为打开文件而使用的)文件句柄,在过程/函数退出之前要关闭。 14、 如果不使用常量,直接在程序中填写数字或字符串,将会有什么麻烦?_。A) 程序的可读性(可理解性)变差。程序员自己会忘记那些数字或字符串是什么意思,用户则更加不知它们从何处来、表示什么。B) 如果要修改数字或字符串,则会在很多地方改动,既麻烦又容易出错。C) 在程序的很多地方输入同样的数字或字符串,难保不发生书写错误。D) 程序无法编译。15、 关于宏 define SQUARE(a)(a)*(a)正确的用法是_。A) b = SQUARE( a+ );B) b = SQUARE( a ) ; a+ ;C) b = SQUA

8、RE( a -) ; a- ;D) b = SQUARE( a) ; a- ;16、 以下对结构(struct)和联合(union)的说法正确的有:_ 。A) 结构和联合都是由多个不同的数据类型成员组成;B) 在任何同一时刻, 联合中只存放了一个被选中的成员;C) 在任何同一时刻,都可以访问结构和联合的所有成员; D) 对于结构和联合的不同成员赋值是互不影响的。 17、 关于编译预处理程序的功能包括但不限于:_。A) 宏定义;B) 条件编译;C) 在源代码中插入预定义的环境变量;D) 打开或关闭某个编译选项。18、 下列 extern C 的用法,哪些是正确的:_。A) 在 C+中引用 C 语

9、言中的函数和变量;B) 引用其它文件定义的函数和变量;C) C+实现的 DLL,导出动态连接符号给 C 语言代码使用;(直接使用 extern 即可)D) 引用其它 C 程序定义的函数和变量。19、 下面哪些是 sprintf 函数正常使用出现情况:_。 A) 输出缓冲区太短,出现溢出;B) 参数多于格式符的数目;C) 多线程同时用不同缓冲区调用 sprintf;D) %s 格式符对应了空指针。20、 关于关于数组和指针描述正确的是:_。A) 数组可以在静态存储去或者栈上创建;B) 指针可以随意指向任意类型的内存单元;C) 用 sizeof 运算符可以计算出数组的容量(字节数),而不能用 si

10、zeof()计算出指针 p 所指向的内存容量;D) 当指针 p 指向常量字符串时,也可以向字符串数组那样修改其中的某个字符。三、 编程题(共 2 题,第 1 题 40 分,第 2 题 30 分。请上机编写程序,按题目要求提交文件。本试题采用自动测试用例进行评分,测试用例不对考生公开,凡不满足提交要求导致不能编译或用例不通过,不予评分;)。1. 电路板布线问题 问题描述: o 对于一个有 N 个引脚的电路板,我们需要在这些引脚之间连线。现在对于给定的连接引脚的方法,需要程序判断,这组方法是否会产生线段之间的交叉。 输入: o N 电路板的引脚数量; (1,2), (3,4) , . 连线的方式。

11、(1,2)表示 1、2 号引脚存在连线。 o 要求实现函数: unsigned int Lay_line(int n, unsigned int *p)不产生交叉返回 0 ; 产生交叉返回 1输入参数:n:电路板引脚个数;p:指向一个数组(长度固定为 64),表示电路板引脚连接方式;输入:1 4 2 3 0 (0 表示布线结束) 表示该连接方案有两个连接 1 号 4 号管脚连接 2 号 3 号管角连接 示例 o N = 4; (a1,a4), (a2,a3) 程序输出0N = 4; (a3,a1), (a4,a2) 程序输出1N = 4; (a2,a1), (a2,a3) 程序输出0注:没有布

12、线(输入数据为 0) 意味着没有连线 可认为没有交叉 2. 括号匹配判断 (用栈实现) 问题描述: o 检查字符串表达式中的括号是否匹配; o 左括号数目同有括号数目不相等即为不匹配; o 去除多余的左括号或者右括号,优先保留先出现的括号; o 匹配后去除无效的括号:如:(表达式) 应为(表达式); o 只考虑小括号,不考虑先出现右括号的情况; 要求实现函数: (字符串最长长度为 60;表达式正确性不需要考虑) void Bracket(char* src, char* dst);如果匹配则通过 dst 输出原串;如果不匹配则根据要求去处多于括号后通过 dst 输出匹配后的串 示例 输入:12+(345*25-34) 输出:12+(345*25-34)输入:12+(345*(25-34) 输出: 12+(345*25-34)输入:(12+345)*25)-34 输出: (12+345)*25-34输入:(543+(256-43)*203)+24输出:(543+(256-43)*203)+24输入:(1+2)*(34-2)+(2*8-1)输出:(1+2)*(34-2)+2*8-1)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 实验/测试

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号