国家二级C语言机试(操作题)模拟试卷742
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun的功能是:在3×4的矩阵中找出在行上最大、在列上最小的那个元素,若没有符合条件的元素则输出相应信息。
例如,有下列矩阵:
1 2 13 4
7 8 10 6
3 5 9 7
程序执行结果为:find:a[2][2]=9
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:部分源程序在文件BIANK1.C中。不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#define M3
#define N4
void fun(int(*a)[N])
{int i=0,j,find=0,rmax,c,k;
while((i<M)&&(!find))
{rmax=a[i][0];c=0;
for(j=l;j<N;j++)
if(rmax<a[i][j]){
/*********found*********/
rmax=a[i][j];c=【1】;}
find=1;k=0;
while(k<M&&find){
/*********found*********/
if(k!=i&&a[k][c]<=rmax)
find=【2】,
k++;
}
if(find)
printf(\\
(1)j
(2)0
(3)i++
解析:本题是在矩阵中找出在行上最大、在列上最小的那个元素。
填空1:找出行上最大的数,并将该数的列数j保存在c中,所以应填j。
填空2:使用while循环语句和控制变量find,如果该数不是列中的最小数,那么把find置0,所以应填0。
填空3:i是while的控制变量,所以每做一次循环,该数值要加1,所以应填i++。
程序修改题
2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是:根据整形参m的值,计算如下公式的值。
(1)for(i=2;i<=m;i++)
(2)y﹣=1.0/(i*i);
解析:(1)使用for循环计算公式,必须计算到m,所以应改为for(i=2;i<=m;i++)。
(2)在除法运算中,如果除数和被除数都是整数,那么所除结果也是整数,因此应改为y﹣=1.0/(i*i)。
程序设计题
3.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。程序中,m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分
的分数放在below所指的数组中。
例如,当score数组中的数据为10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为10、20、30、40。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<conio.h>
#include<stclio.h>
#include<string.h>
#include<stdlib.h>
int fun(int score[],int m,int below[])
{
}
voidmain()
{
FILE*wf;
int i,n,below[9];
int score[9]=(10,20,30,40,50,60,70,80,90};
system(\\
int fun(int score[],int m,int below[])
{
int i,j=0;
float av=0.0;
for(i=0;i<m;i++)
av=av+score[i]/m;/*求平均值*/
for(i=0;i<m;i++)
if(score[i]<av)/*如果分数低于平均分,则将此分数放入below数组中*/
below[j++]=score[i],
returnj;/*返回低于平均分的人数*/
}
解析:要计算低于平均分的人数,首先应该求出平均分,然后通过for循环语句和if条件语句找出低于平均分的分数。该题第1个循环的作用是求出平均分av,第2个循环的作用是找出低于平均分的成绩记录并存入below数组中。
本文档预览:3600字符,共2642字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载