国家二级(C语言)机试模拟试卷993
程序填空题
1.使用VC++2010打开考生文件夹下blankl中的解决方案。此解决方案的项目中包含一个源程序文件blankl.c。在此程序中,函数fun()的功能是统计整型变量m中各数字出现的次数,并将其存放到数组a中。其中,a[0]存放0出现的次数,a[1]存放1出现的次数……a[9]存放9出现的次数。
例如,若m为14579233,则输出结果应为0,1,1,2,1,1,0,1,0,1。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的文件blankl.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)
{
/*********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。故空1处应该填a[i]。
填空2:m%10可得到数m的最后一位数字。故空2处应该填m%/d0。
填空3:m/10可使数字截短,即去掉最后一位。故空3处应该填m/10。
程序修改题
2.使用VC++2010打开考生文件夹下modil中的解决方案。此解决方案的项目中包含一个源程序文件modil.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存放每行的最小值。针对二维数组a使用两层循环。在第l层循环的开始将每行的第1个数赋给数组b相应的元素。在第2层循环中,数组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.使用VC++2010打开考生文件夹下progl中的解决方案。此解决方案的项目中包含一个源程序文件progl.c。在此程序中,请编写函数fun(),其功能是在一组得分中去掉一个最高分和一个最低分,然后求平均值,并通过函数返回该值。函数形参a指向存放得分的数组,形参n中存放得分个数(n>2)。
例如,若输入9.9、8.5、7.6、8.5、9.3、9.5、8.9、7.8、8.6、8.4共10个得分,则输出结果为8.687500。
注意:部分源程序存放在文件progl.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=1;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));
解析:设定3个变量,sum存放和值,max存放最大值,min存放最小值。max和min都赋为数组中第1个元素的值。利用循环将数组中元素累加到sum中,并找出最大值和最小值。sum值减去最大值和最小值。函数返回sum除以(元素个数减2)得平均值。
本文档预览:3600字符,共2573字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载