编程题(共3题,第一题20分,第二题30分,第三题50分,共100分)
注意:
1、请上机编写程序,按题目要求提交文件。
2、本试题采用自动执行测试用例进行评分,测试用例不对考生公开
3、评卷通过在给定用例输入下,严格按照试题要求比较考生实现函数的输出与预设输出。两者相同则得分,不同则不得分。
4、评卷人保证测试用例输入参数的合法性,考生不用考虑输入参数非法或异常的情况
5、评卷人保证测试用例输入在被测函数正常合法情况下使用不会导致程序错误
6、被要求实现的函数如果包含返回参数,该返回参数涉及的空间分配和释放均在函数外完成,在被要求实现函数内部可以直接使用返回参数
7、如果考生函数异常导致程序崩溃或死循环,则自动评卷可能会被人为终止,剩余用例不被执行,无法得分
8、基于上述阅卷规则,请考生严格按照题目要求功能实现程序,尽量保证实现函数的稳健性,同时建议完成一道题并调试保证正确性后,再考虑并实现下一题目
1.评委打分(20分)
在评委打分的比赛中,通常采取去掉一个最高分和最低分,再求平均分的做法,主要是为了公平,公正和公开的原则,防止有人买通评委,有特别的高分出现,另外,也可以防止因为评委个人原因,对选手有“低见”给特别低的分。去掉最高分最低分能够求出较为准确的平均分。请编写程序实现上述计分过程
intscore_calc(int n, int score[])
【输入】 int n,评委人数n(n>=3)
int score[],每个评委的打分(百分制)
【输出】 无
【返回】 选手最终得分(取整)
注:
取整和四舍五入不同,取整只保留数值的整数部分,小数部分丢弃。比如7.3和7.6,取整后都为7
输入:int n = 5;int score[] = {75, 80, 75, 70, 80}
输出:无
返回:76
2.按要求排序(30分)
请编程实现将输入自然数组中的数字按要求处理并放入到输出数组中
1、 偶数按从大到小排序
2、 奇数按从小到大排序
3、 将奇数和偶数按顺序间插后放入输出数组,奇数在前,偶数在后。奇数和偶数数目不等,奇数和偶数数目不等时,多出的数字无法间插的就按顺序放置
比如: 输入数组input[]={1,12,32,15,2,67,8,9,12,3,3,5}
奇数排序:1,3,3,5,9,15,67
偶数排序:32,12,12,8,2
输出数组output[]={1,32,3,12,3,12,5,8,9,2,15,67}
void my_sort(int n, int input[], int output[])
【输入】 int n,输入自然数个数
int input[],输入自然数
【输出】 int output[],按要求排列好的输出数据
【返回】 无
输入:int n = 12; int input[]={1,12,32,15,2,67,8,9,12,3,3,5}
输出:output[]={1,32,3,12,3,12,5,8,9,2,15,67}
3.哈希求值
请按照下述规则计算得到输入整数数组中每个正整数的对应输出值
1、 对于第i(i<=17)个输入的正整数,求得该正整数与17相除的余数。如果该余数与任意第j个输入正整数(j
2、 否则,将第1步得到的余数+1后,再与17相除求得余数,如果该余数与任意第j个输入正整数(j
3、 否则,将第2步得到的余数+2后,再与17相除求得余数,如果该余数与任意第j个输入正整数(j
。
。
。
N、直到求得第i个输入正整数的输出值为止
比如:
输入数组input[]={18,2,19,36,53}
对于第1个输入数字18,18 mod 17 = 1,1没有出现过,则18的输出为1
对于第2个输入数字2,2 mod 17 = 2,2没有出现过,则2的输出为2
对于第3个输入数字19,19 mod 17 = 2,2已经出现,则(2+1) mod 17 = 3,3没有出现过,则19的输出为3
对于第4个输入数字36,36 mod 17 = 2,2已经出现过,则(2+1) mod 17 = 3,3也已经出现过,则(3+2) mod 17 = 5,5没有出现过,则36的输出是5
对于第5个输入数字53,53 mod 17 = 2,2已经出现过,则(2+1) mod 17 = 3,3已经出现过,则(3+2) mod 17 = 5,5已经出现过,则(5+3) mod 17 = 8,8没有出现过,则53的输出为8
最后输出为output[]={1,2,3,5,8}
void hash_17(int n, int input[], int output[])
【输入】 int n,输入数组个数,n<=17
input[],输入正整数
【输出】 intoutput[],对应输出
【返回】 无
输入:int n = 5;int input[]={18,2,19,36,53}
输出:int output[]={1,2,3,5,8}