国家二级C语言机试(操作题)模拟试卷556
程序填空题
1.给定程序中,函数fun的作用是:
统计整型变量m中各数字出现的次数,并存放到数组a中,其中:a[0]存放0出现的次数,a[1]存放1出现的次数,……a[9]存放9出现的次数。
例如,若m为14579233,则输出结果应为:0,1,1,2,1,1,0,1,0,1。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANKI.C中。不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
void fun(int m,int a[10])
{int i;
for(i=0 ; i<10; i++)
/*********found*********/
【1】=0;
while(m>0)
f
/*********found*********/
i=【2】;
a[i]++;
/*********found*********/
m=【3】;
}
}
main()
{int m,a[10],i;
printf(\\
(1)a[i]
(2)m%10
(3)m/10
解析:数组a各元素初始化为0,用求余和整除相结合的方法得到数字的每一位数字,并用它做为数组a的下标,相应元素加1。
填空1:数组a的10个元素赋值为0。
填空2:m%10可得到数m的最后一位数字。
填空3:m/10可使数字截短,即去掉最后一位。
程序修改题
2.给定程序MODI1.C中,函数fun的功能是求矩阵(二维数组)a[N][N]中每行的最小值,结果存放到数组b中。
假如:若
(1)b[i]=a[i][0];
(2)for(j=1;j<N;j++)
(3)if(b[i]>a[i][j])
解析:数组b存放每行的最小值,针对二维数组使用二层循环,在第一层循环的开始将每行的第1个数赋给数组b相应的元素,在第二层循环中,数组b中的元素依次与本行中的每个元素进行比较,找到一行中的最小值存入数组b。
(1)b[i]存放二级数组a每一行中第1个元素值,表示为a[i][0]。
(2)每行元素的第1个值要和这一行中的每个元素进行比较,条件j<N可使a[i][j]取到最后元素,而条件j<N一1使a[i][j]最终取得倒数第2个元素。
(3)因为是找最小值,所以当b[i]大于其后的数值时说明它不是最小,要把比较中较大的值赋给它。
程序设计题
3.请编写函数fun,其功能是:将一组得分中,去掉一个最高分和一个最低分,然后求平均值,并通过函数返回。函数形参a指向存放得分的数组,形参n中存放得分个数(n>2)。
例如,若输入9.9 8.5 7.6 8.5 9.3 9.5 8.9 7.88.6 8.4十个得分,则输出结果为:8.687500。
注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
void NONO();
double fun(double a[],int n)
{
}
main()
{double b[10],r;int i;
printf(\\
double fun(double a[],int n)
{
double sum=0,max,min,int i,
max=min=a[0];
for(i=0;i<n ; i++)
{
sum=sum+a[i];
if(max<a[i])max=a[i];
if(min>a[i])min=a[i];
}
sum=sum—max—min;
return(sum/(n一2));
}
解析:设定三个变量sum存放合值,max存放最大值,rain存放最小值。max和rain都赋为数组中第一个元素的值。利用循环将数组中元素累加到8urn中并找出最大值和最小值。sum值减去最大值和最小值。函数返回8urn除以元素个数一2得平均值。
本文档预览:3600字符,共2387字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载