上机全真考题第7套

 

一、程序填空

1.题目描述

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

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

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

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

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

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

2.blank1.c内容

 

3.frop

本题与第六套的程序填空实际为同一个题,区别只是第六套题是把大于平均值的移动到了前面,本套题是把小于平均值的移动到了前面。本题中求平均值的方法类似于第五套题中的。

(1)本空考查了怎样求平均值,根据题意,变量av表示平均值。所以此处只能填写x[i]/N

(2)通过for循环和if判断找到数组x中比平均值小的数,并把这些值赋给数组y,数组y的下标j增加1。所以此处只能填写j++++jj = j + 1。(三种方式都应该得分)。

(3)通过while循环语句,把数组x中比平均值大的数放在数组y的后半部分,因此需要对数组x的下标进行变化。所以只能填写i++++ii=i+1

二、程序修改

1.题目描述

下列给定函数中,函数fun的功能是:统计字符串中各元音字母(即A、E、I、O、U)的个数。注意:字母不分大小写。 例如,输入“THIs is a boot”,则应输出是1 0 2 2 0。

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

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

2.modi1.c的内容

 

3.frop

(1)函数缺省返回值为int类型,主程序中fun单独一行作为函数调用,表明不需要返回值类型,所以根据题意此处可以修改为void fun(char *s,int num[5])。(其实不改,也能成功运行,但是出题人的意思是要改为void类型)

(2)for循环控制循环变量k对num数组进行初始化。i的值固定为5,每次都对num[5]进行初始化很显然不满足条件,所以此处只能修改为num[k]=0;

(3)switch后面括号中的表达式可以是整型或字符型,也可以是枚举类型。本题中case后面的为字母,所以根据题意,switch后面括号中的也应该为字符类型。因为s在fun函数定义时为指向字符类型的指针变量,要取s所指字符的值,应该用*s。所以此处只能修改为switch(*s)

三、程序设计

1.题目描述

​ 请编写函数fun,该函数的功能是:求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。 例如,若二维数组中的值为:ncre0701

则函数值为61。

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

2.prog1.的内容

 

3.frop

题目要求计算二维数组周边元素的和,可以用双重循环对数组元素逐个进行遍历,结合if条件语句根据数组元素的下标判断该元素是否为二维数组周边元素。本题比第六套中省了一个求平均值的环节,因此可以不用记录周边元素的个数了。 ​ 数组周边元素w[i][j]的规律为:下标中有一个0或N-1。也就是说要么i或j有一个为0,也可以i或j中有一个未N-1。只要满足该条件中的一条,就一定是周边元素。 因为返回值为double类型,所以sum也定义为double类型,并初始化为0.0。

​ 参考代码如下:

 

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