知ing

最新计算机二级C语言上机试题汇编100套

NCRE研究组 编 / 高等教育出版社

゛Zirro、Y 上传

查看本书

52套: 

给定程序中,函数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 <stdio.h> 

#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<N; i++) 

{ for(j=0; j<N; j++) printf("%2d ",t[i][j]); 

printf("\n"); 

fun(t); 

printf("\nThe result is:\n"); 

for(i=0; i<N; i++) 

{ for(j=0; j<N; j++) printf("%2d ",t[i][j]); 

printf("\n"); 

解题思路: 

第一处:函数fun是对N×N矩阵进行操作,for循环的终止值为N。 

第二处:把最后一列的元素值赋值给临时变量x保存用来交换,所以应填:N-1。 

第三处:第1列元素值使用x替换,由于C语言的下标是从0开始的,所以应填:0。 

*************************************************** 

例如,若q的值为: 50.0,则函数值为: 49.394948。 

请改正程序中的错误,使程序能输出正确的结果。 

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 

给定源程序: 

#include <stdio.h> 

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************/ 

return s; 

main ( ) 

printf("%f\n", fun(50)); 

解题思路: 

第一处:如果两个整数类型相除,结果仍为整数,所以必须转换其中一个数的类型,所以应改为:s+=(float)(n+1)/n;。 

第二处:返回结果错误,应改为:return t;。 

*************************************************** 

编写函数fun,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为: 

F(0)0F(1)

F(n)F(n1)F(n2) 

例如:当t = 1000时,函数值为:1597。 

注意部分源程序在文件PROG1.C中。 

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 

给定源程序: 

#include <math.h> 

#include <stdio.h> 

int fun( int t) 

 

main() / * 主函数 */ 

{ int n; 

n=1000; 

printf("n = %d, f = %d\n",n, fun(n)); 

NONO(); 

解题思路: 

本题是考察考生用递推算法来求出斐波那契数列中每项的值。给出的程序就是用变量ff0 f1来表示递推的过程,给变量f0f1最初分别置数列中第1项和第2项的值01,然后进入循环,执行语句f=f0+f1;将所得和值存入f中,这就是数列的第3项,把f1的值移入f0中,将f的值移入f1中,为求数列的下一列作好准备;接着进入下一次循环,通过语句f=f0+f1求得数列的第4项,不断重复以上步骤,每重复一次就依次求得数列的下一项,直至某项满足要为止。 

参考答案: 

int fun( int t) 

int f0 = 0, f1 = 1, f ; 

do { 

f = f0 + f1 ; 

f0 = f1 ; 

f1 = f ; 

} while(f < t) ; 

return f ; 

※※※※※※※※※※※※※※※※※※※※※※※※※ 


查看更多