上机全真考题第五套

 

一、程序填空

1.题目描述

​ 给定程序中,函数fun的作用是:计算x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中大于平均值的数据移至数组的前部,小于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。

​ 例如,有10个正数:46、30、32、40、6、17、45、15、48、26,其平均值为30.500000。

​ 移动后的输出为:46、32、40、45、48、30、6、17、15、26。

​ 请在程序的下划线处填入正确的内容并把下划线删除,使得程序得出正确的结果。

​ 注意:部分源程序在文件Blank1.c中。

​ 不得增行或删行,也不得更改程序的结构!

2.blank1.c内容

 

3.frop

(1)s在循环体中是求数组x所有元素的累加和。从函数fun中可以看到,变量av应该是用来存放平均值,所以此处只能填s/N

(2)数组y用来临时存放数组x中满足数组元素值大于平均值av的元素,存放后数组y的下标增加1,所以此处只能填写j++

(3)此空的含义是当x[i]的值不等于什么时,要把数组元素赋给数组y。根据题意,前面数组元素值大于平均值av的在存放到数组y中之后,均已经修改为-1(题目中已经制定了所有数均为正数)。因此剩下的元素,当值不为-1时,就按照顺序存放到数组y中。所以此处只能填写-1

二、程序修改

1.题目描述

​ 下列给定程序的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里“单词”是指由空格隔开的字符串)。 ​ 例如,若输入“I am a student to take the examination”,则应输出“I Am A Student To Take The Examination”。

​ 请改正程序中指定部位的错误,使它能得出正确的结果。

​ 注意:部分源程序在文件modi1.c中,不要改动main函数,不得增行或删行,也不得更改程序的结构。

2.modi1.c的内容

 

3.frop

(1)本题只有一个错误,在正式考试中很少见。根据主程序中函数调用upfst(chrstr)中可以知道,chrstr是一个长度为80的字符数组。那么在函数定义的时候,应该用指针与其对应,结合函数upfst中对p的引用,也可以看出p应该为指针类型,所以此处只能修改为void upfst(char *p)。(其实修改为 void upfst(char p[ ])也可以得出正确结果,但不建议这么修改。)

 

三、程序设计

1.题目描述

​ 下列程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。例如,若a数组中的值为: ncre0601 则返回主程序后s的值应为3.375。

​ 注意:部分源程序在文件prog1.c中。 ​ 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

2.prog1.的内容

 

3.frop

​ 题目要求计算二维数组周边元素的平均值,可以用双重循环对数组元素逐个进行遍历,结合if条件语句根据数组元素的下标判断该元素是否为二维数组周边元素。 ​ 数组周边元素w[i][j]的规律为:下标中有一个0或N-1。也就是说要么i或j有一个为0,也可以i或j中有一个未N-1。只要满足该条件中的一条,就一定是周边元素。 ​ 在对数组周边元素求和sum的时候,顺便一起统计周边元素的个数k,最后返回平均值时,不要忘记除以个数,即sum/k。因为返回值为double类型,所以sum也定义为double类型,并初始化为0.0。

​ 参考代码如下:

 

如有问题,可以QQ群531578731进行咨询。