国家二级C语言机试(操作题)模拟试卷840
程序填空题
1.给定程序中,函数fun的功能是:有N×N矩阵,根据给定的m(m=N)值,将每行元素中的值均右移m个位置,左边置为0。例如,N=3,m=2,有下列矩阵
1 2 3
4 5 6
7 8 9
程序执行结果为
0 0 1
0 0 4
0 0 7
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
#define N 4
void fun(int(*t)[N],int m)
{ int i,j;
/**********found**********/
for(i=0;i<N;___1___)
{ for(j=N-1-m;j>=0;j–)
/**********found**********/
t[i][j+___2___]=t[i][j];
/**********found**********/
for(j=0;j<___3___;j++)
t[i][j]=0;
}
}
main()
{int t[][N]=(21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},
i,j,m;
printf(\\
(1)i++
(2)m
(3)m
解析:函数fun的功能是将每行元素中的值均右移m个位置。
第一空:题目要求对每行元素中的值均右移m个位置。故第一空处循环变量每次增1,共循环N次,完成对N行的移位操作,因此,第一空处应为“i++”。
第二空:循环“for([j=N-1-m;j>=0;j–)”是进行行元素中的值右移m个位置,即把t[i][j]元素放置在t[i][j+m]上,因此,第二空应为“m”。
第三空:循环“for(j=0;j<___3___;j++)”是对空出来的位置补0,每行元素的前m位数据已经移动到后面,每行空处m个元素,因此,第三空为“m”。
程序修改题
2.给定程序MODI1.C中函数fun的功能是:计算并输出high以内最大的10个素数之和。high的值由主函数传给fun函数。
若high的值为:100,则函数的值为:732。
请改正程序中的错误,使程序能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
#include<math.h>
int fun(int high)
{int sum=0,n=0,j,yeS;
/**********found**********/
while((high>=2)&&(n<10)
{ yes=1;
for(j=2;j<=high/2; j++)
if(high%j==0){
/**********found**********/
yes=0;break
}
if(yes){sum+=high;n++;}
high–;
}
return sum;
}
main()
{
printf(\\
(1)while((2<=high)&&(n<10))
(2)yes=0;break;
解析:函数的功能是计算并输出high以内最大的10个素数之和。
(1)C语言中左右括弧必须成对出现,在第一个标识下“while((high>=2)&&(n<10)”中,显然缺少一个右括弧,应改为“while((2<=high)&&(n<10))”。
(2)在判断素数的循环过程中,只要被判断的数能被某数整除就不是素数,就会跳出判断循环,在C语言中使用break语句跳出循环,并且C语言中的语句使用分号为结尾。所以“break”应改为“break;”。
程序设计题
3.编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。
xn+1=cos(xn)
迭代步骤如下:
(1)取x1初值为0.0;
(2)x0=x1,把x1的值赋给X0:
(3)x1=cos(x0),求出一个新的x1z
(4)若x0-x1的绝对值小于0.000001,执行步。
骤(5),否则执行步骤(2);
(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。
程序将输出结果Root=0.739086。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<math.h>
#include<stdio.h>
double fun()
{
}
main()
{
void NONO();
printf(\\
float x0,x1=0.0;
do{
x0=x1;
x1=cos(x0);
}while(fabs(x0-x1)>0.000001);
return x1;
解析:该程序功能是利用简单迭代方法求方程的一个实根。牛顿迭代法的求解思想是从一个初始值开始,逐步逼近所求方程的根。
其具体过程是:将初始值代入迭代公式,得到一个迭代输出值。再次迭代时,将上一次的迭代输出值当作本次的迭代输入。不断重复以上过程,直到满足题目要求为止。
牛顿迭代公式为:Xn+1=Xn-f(x)/f’(x)。
其求解过程在题干中已经给出。
本文档预览:3600字符,共3231字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载