以下是收集到的两套题(没有添加答案),上机测试只有应聘软件研发的才会
碰到。有的写了点自己的解法,如果大家有好的想法欢迎讨论!大家一起学习
嘛!
以下是上机考试的一些注意事项:
(1)考试时长为 2 个小时,总共有 3 个题(去年是 2 个题,难度要比今年大
些),编译环境为 VC 6.0(C 语言)/ Eclipse(Java);
(2)3 个题目中大致第一个题是最简单的,第三个题是最难的;
(3)从服务器上下载题目下来后最好能把工程保存到在电脑重启后不会自动还
原的磁盘分区下面,这样不致由于各种意外因素电脑重启过后编的程序不会消
失;
(4)不要改动所给函数的原型,可以自己添加函数。另外,华为提供的工程是
将 Main 函数隐藏了的,所以自己不用再添加 Main 函数。
试题 1:2011.9.6 转载自:
http://blog.csdn.net/liuqiqi677/article/details/6755498
1、选秀节目打分,分为专家评委和大众评委,score[] 数组里面存储每个评
委打的分数,judge_type[] 里存储与 score[] 数组对应的评委类别,
judge_type[i] == 1,表示专家评委,judge_type[i] == 2,表示大众评委,n 表
示评委总数。打分规则如下:专家评委和大众评委的分数先分别取一个平均分
(平均分取整),然后,总分 = 专家评委平均分 * 0.6 + 大众评委 * 0.4,总分
取整。如果没有大众评委,则 总分 = 专家评委平均分,总分取整。函数最终返
回选手得分。
函数接口 int cal_score(int score[], int judge_type[], int n)
(这个问题很简单,应该只是涉及了下 double/int 转换)
2、给定一个数组 input[] ,如果数组长度 n 为奇数,则将数组中最大的元素
放到 output[] 数组最中间的位置,如果数组长度 n 为偶数,则将数组中最大的
元素放到 output[] 数组中间两个位置偏右的那个位置上,然后再按从大到小的
顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。
例如:input[] = {3, 6, 1, 9, 7} output[] = {3, 7, 9, 6, 1}; input[] = {3,
6, 1, 9, 7, 8} output[] = {1, 6, 8, 9, 7, 3}
函数接口 void sort(int input[[, int n, int output[])
基本的方法:
1) 先进行排序,然后挨个放/也可以以 2 为间隔存放。
第一种方法的时间复杂度根据所选排序算法的不同而不同,空间复杂度为:n;
2) 第一次选出一个最大,放在相应位置;第二次取出剩余最大值,放相应位置;
依次类推。
其中,选最大值可以使用最大堆方法来实现(注意,不是堆排序哦)
选择一种好的排序算法的话(比如快排),两者的时间复杂度是差不多的。
3、操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。
其中,系统任务的优先级 < 50,用户任务的优先级 >= 50 且 <= 255。优先级