国家二级C语言机试(操作题)模拟试卷643
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun的功能是:将a所指4×3矩阵中第k行的元素与第0行元素交换。
例如,有下列矩阵:
1 2 3
4 5 6
7 8 9
10 11 12
若k为2,程序执行结果为:
7 8 9
4 5 6
1 2 3
10 11 12
请在程序的下画线处填入正确的内容并把下画
线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#define N3
#define M4
/*********found*********/
void fun(int(*a)[N],int【1】)
{int i,temp;
/*********found*********/
for(i=0;i<【2】;i++)
{temp=a[0][i];
/*********found*********/
a[0][i]=【3】;
a[k][i]=temp;
}
}
main()
{int x[M][N]={{1,2,3},{4,5,
6),{7,8,9},{10,11,12}},i,j;
printf(\\
(1)k
(2)N
(3)a[k][i]
解析:填空1:变量k在函数体fun中已经使用,但在函数体中没有定义,肯定是在函数的形参中定义的,所以应填k。
填空2:数组共N列,所以应填N。
填空3:这部分语句实现的功能是变量值的交换,所以应填a[k][i]。
程序修改题
2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是:根据整型形参n,计算如下公式的值。
(1)float fun(intn)
(2)for(i=2;i<=n;i++)
解析:(1)根据函数的返回值可知,函数应定义为float型。
(2)该题中函数fun的作用是计算数列前n项的和,而数列的组成方式是:第n项的分母是1加第n-1项的值,分子为1,如果循环累加按for(i=2;i<n;i++)执行,当输入n=2时循环不会执行,程序将得不到想要的结果,因此循环变量的取值范围应包括2,循环的条件为i<=n。
程序设计题
3.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.C。在此程序中,编写程序,实现矩阵(3行、3列)的转置(即行列互换)。
例如,若输入下面的矩阵:
100 200 300
400 500 600
700 800 900
则程序输出:
100 400 700
200 500 800
300 600 900
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void fun(int array[3][3])
{
}
void main()
{
FILE*wf;
int i,j;
int array[3][3]={{100,200,300},{400,500,600),{700,800,900)};
system(\\
void fun(int array[3][3])
{
int i,j,t;
for(i=0;i<3;i++)/*将右上三角和左下三角对换,实现行列互换*/
for(j=i+1;j<3;j++)
{t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
}
解析:要实现矩阵转置,即将右上角数组元素和左下角数组元素对换,本题通过数组元素交换方法,完成矩阵转置操作。
因为对矩阵转置后仍然存回其本身,所以只能循环矩阵中的一个角(本程序是右上半三角)。控制右上半三角的方法是在内层循环中循环变量j从i+1或i开始。
本文档预览:3600字符,共2580字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载