国家二级(C语言)机试模拟试卷936
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函教的功能是,有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
#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;
}
}
void 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
解析:for循环语句; 数组元素的引用。
填空1:循环语句中,循环变量增量为1。
填空2:将每行元素中的值均右移m个位置,所以数组元素的下标是t[i][j+m]。
填空3:此for循环语句实现左边元素置0操作,所以j的取值范围是0到m。
程序修改题
2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是:计算并输出high以内最大的10个素数的和。high的值由主函数传给fun函数。
例如,若high的值为100,则函数的值为732。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件modi1.c中。
不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
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 ;
}
void main ( )
{
printf(\\
(1)while((high>=2)&&(n<10))
(2)yes=0;break;
解析:C语言程序的语法格式。while循环条件丢掉一个括号。 另一处是很简单的程序语法错误,没有加分号。
程序设计题
3.使VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun,其功能是.利用下面的简单迭代方法求方程cos(x)-x=0的一个实根。
XR+1=cos(xR)
迭代步骤如下:
(1)取x1初值为0.0;
(2)x0=x1,将x1的值赋给x0;
(3)x1=cos(x0),求出一个新的x1;
(4)若x0-x1的绝对值小于0.000001,执行步聚(5),否则执行步聚(2);
(5)所求x1就是方程cos(x)x= 0的一个实根,作为函数值返回。
程序将输出结果Root=0.739086。
注意:部分源程序在文件prog1.c中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
double fun( )
{
}
void main( )
{
void NONO ( );
printf(\\
double fun( )
{
double x0,x1:;
x1=0.0;
do
{
x0=x1;
x1=cos(x0);
}
while(fabs(x0-x1)>=1e-6);
return x1; }
解析:迭代法求方程的实根: do…while循环语句,其形式为:
do
{
语句
}
while(表达式);
do…while循环与while循环的不同在于,它先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do…while循环至少要执行一次循环语句。
用迭代方法求方程的一个实根,题目已经给出了算法,只要按照算法用合适的程序表达,就可以解题了。
本文档预览:3600字符,共3229字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载