全国计算机二级C语言上机试题52 2015年
(总分30, 做题时间90分钟)
1. 
给定程序中,函数fun的功能是:将N×N矩阵中元素的值按列右移1个位置,右边被移出矩阵的元素绕回左边。例如,N=3,有下列矩阵
1 2 3
4 5 6
7 8 9
计算结果为
3 1 2
6 4 5
9 7 8
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#define N 4
void fun(int (*t)[N])
{ int i, j, x;
/**********found**********/
for(i=0; i<___1___; i++)
{
/**********found**********/
x=t[i][___2___] ;
for(j=N-1; j>=1; j--)
t[i][j]=t[i][j-1];
/**********found**********/
t[i][___3___]=x;
}
}
main()
{ int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j;
printf("The original array:\n");
for(i=0; i
{ for(j=0; jprintf("\n");
}
fun(t);
printf("\nThe result is:\n");
for(i=0; i
{ for(j=0; jprintf("\n");
}
}
    分值: 10
答案:
第一处:函数fun是对N×N矩阵进行操作,for循环的终止值为N。
第二处:把最后一列的元素值赋值给临时变量x保存用来交换,所以应填:N-1。
第三处:第1列元素值使用x替换,由于C语言的下标是从0开始的,所以应填:0。
2. 
例如,若q的值为: 50.0,则函数值为: 49.394948。
请改正程序中的错误,使程序能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
double fun( double q )
{ int n; double s,t;
n = 2;
s = 2.0;
while (s<=q)
{
t=s;
/************found************/
s=s+(n+1)/n;
n++;
}
printf("n=%d\n",n);
/************found************/
计算机二级c语言选择题库
return s;
}
main ( )
{
printf("%f\n", fun(50));
}
    分值: 10
答案:
第一处:如果两个整数类型相除,结果仍为整数,所以必须转换其中一个数的类型,所以应改为:s+=(float)(n+1)/n;。
第二处:返回结果错误,应改为:return t;。
3. 
编写函数fun,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:
F(0)=0,F(1)=1
F(n)=F(n-1)+F(n-2)
例如:当t = 1000时,函数值为:1597。
注意: 部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include
#include
int fun( int t)
{
}
main() /* 主函数 */
{ int n;
n=1000;
printf("n = %d, f = %d\n",n, fun(n));
NONO();
}
    分值: 10
答案:
int fun( int t)
{
int f0 = 0, f1 = 1, f ;
do {
f = f0 + f1 ;
f0 = f1 ;
f1 = f ;
} while(f < t) ;
return f ;
}


窗体顶端
窗体底端

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。