试题二
下面程序中函数fun的功能是:在含有10 个元素的s数组中查找最大数,及最大数所在位置(即,下标值),最大数可能不止一个。最大数作为函数值返回,最大数的个数通过指针变量n传回,所在位置由数组pos传回。
例如:
若输入 2 8 5 7 8 4 5 3 2 8
则应输出:
The max: 8
Total: 3 //最大数出现次数
The positions: 1 4 9
请补充下列空缺:
include<stdio.h>
include<conio.h>
define M 10
int fun(int *a, int *n, int pos[])
{int i, k,max=-32767;
(1)
for(i=0; i<M; i++)
if( (2) ) max=a[i];
for(i=0; i<M; i++)
if( (3) )pos[k++]=i;
*n=k;
return max;
}
main()
{int a[M], pos[M], i=0, j, n;
clrscr();
printf("Enter 10 number :");
for(i=0; i<M; i++)scanf("%d", (4));
j=fun( (5) );
printf("The max: %d\n", j);
printf("Total: %d",n);
printf("The position:");
for(i=0; i<n; i++ ) printf("%4d", pos[i]);
printf("\n");
}
第1题:
请编写函数fun,其功能是分别统计形参t所指二维数组中字母A和c的个数。
注意:部分源程序存在PROGl.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所缩写的若干语句。
试题程序:
第2题:
程序定义了NxN的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返给主函数中的s。
例如:a数组中的值为:
则返回主程序后s的值应为:3.375。
注意:部分源程序存在文件PROGl.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
第3题:
给定程序中,函数fun的功能是:调用随机函数产生20个互不相同的整数放在形参a所指数组中(此数组在主函数中已置O)。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANKl.C中。
不得增行或删行,也不得更改程序的结构!
试题程序:
第4题:
程序定义了n×n的二维数组,并在主函数中自动赋值。请编写函数fun,该函数的功能是:使数组左下半三角元素中的值乘以n。
fun(int a[][n],int n)
{int i,j;
for(i=0;i
for(j=0;j<=i;j++)
a[j]=a[j]*n;}
第5题:
下列给定程序中,函数fun()的功能是:求出数组中最大数和次最大数,并把最大数和b[0]中的数对调、次最大数和b[1]中的数对调。
请修改程序中的错误,得出正确的结果。
注意:不要改动main()函数,不能增行或删行,也不能更改程序的结构。
试题程序:
(1)错误:m=j;
正确:voidfun(int*b,intn)
(2)错误:voidfun()
正确:m=i;
【解析】本题中函数的功能是求出数组中最大数和次最大数。解题思路是首先求出数组中最大数和次最大数,然后将最大数和次最大数分别放到数组的第一位和第二位。
第一个错误标识下“voidfun(int*b,intn);”函数的定义语法有误,根据C语言语法函数定义后面不应该加“;”,所以“voidfun(int*b,intn);”应该改为“voidfun(int*b,intn)”。
第二个标识符下for循环逐个对m个数据进行选择判断,原题中“m=0;”语句将m值设置为0,在循环中m的值始终是0,不会改变,根据“for(i=0;i<2;i++)”语句中的循环条件,“m=0;”改为“m=i;”。