上机全真考题第二套

 

一、程序填空

1.题目描述

给定程序中,函数fun的作用是:不断从终端读入整数,由变量a统计大于0的个数,用变量c来统计小于0的个数,当输入0时结束输入,并通过形参pa和pb把统计的数据传回主函数进行输出。 注意:部分源程序在文件Blank1.c中。 ​ 不得增行或删行,也不得更改程序的结构!

2.blank1.c内容

 

3.frop

(1)此处主要是考查变量的定义,看一下函数中用到了哪些变量,此处就应该填哪些。经过观察,发现后面代码中出线了k和a,b。k的值是通过scanf函数从键盘输入的,a和b都是自增运算(需要赋初值0),所以只能填写k,a = 0,b = 0(三个变量的顺序无关,不会影响得分)。

(2)题目中告知当输入0时结束,输入的值存在k中,所以此处是判断k的值是否为0,当k的值不为0时,循环继续,直到k的值为0时结束。所以只能填写(k!=0)

(3)根据题意,需要不断从键盘输入整数来判断正负值,因此此处需要为k赋值,所以只能填写scanf("%d",&k)

二、程序修改

1.题目描述

给定程序modi1.c的主函数中,将a,b,c三个结点链成一个单向链表,并给各结点的数据域赋值,函数fun的作用是:累加链表结点数据域中的数据作为函数值返回。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

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

2.modi1.c的内容

 

3.frop

(1)由t=t+p.data可以看出t在函数中用来存放累加和的,因此t必须初始化,所以此处应该修改为:int t=0;

(2)由链表的基础知识可以得知,此处要判断单向链表是否结束,而*p是结构体LIST类型,不能作为判断的条件,所以此处应该修改为while(p)或者while(p != NULL)

(3)当一个指针变量p指向了结构体类型,对于结构体成员变量(如LIST的成员变量data)的引用,可以用(*p).data或者p->data。所以此处应该修改为p->data或者(*p).data

三、程序设计

1.题目描述

请编写函数fun,该函数的功能是:分别统计形参t所指二维数组中字符A和C的个数。

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

2.prog1.的内容

 

3.frop

函数fun的功能是分别统计形参t所指二维数组中字符A和C的个数,分别放入指针a和指针c所指的变量中,也就是x和y。根据main函数中的fun调用,可以知道t所指向的数组a为M行M列。

fun函数中我们需要对M行M列的二维数组进行遍历,当字母为A时,a值增加1,;当字母为C是,c值增加1。因为main函数中存放A和C个数的变量x和y没有初始化,所以在fun函数中首先要用*a = *c = 0来进行初始化。

对二维数组遍历的框架为:

 

参考代码如下:

 

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