知ing

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

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

゛Zirro、Y 上传

查看本书

46套: 

给定程序中,函数fun的功能是:利用指针数组对形参ss所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。ss所指字符串数组中共有N个字符串,且串长小于M。 

请在程序的下划线处填入正确的内容并把下划线删除使程序得出正确的结果。 

注意:源程序存放在考生文件夹下的BLANK1.C中。 

不得增行或删行,也不得更改程序的结构! 

给定源程序: 

#include <stdio.h> 

#include <string.h> 

#define N 5 

#define M 8 

void fun(char (*ss)[M]) 

{ char *ps[N],*tp; int i,j,k; 

for(i=0; i<N; i++) ps[i]=ss[i]; 

for(i=0; i<N-1; i++) { 

/ **********found**********/ 

k= __1__ ; 

for(j=i+1; j<N; j++) 

/ **********found**********/ 

if(strlen(ps[k]) < strlen(__2__) ) k=j; 

 

/ **********found**********/ 

tp=ps[i]; ps[i]=ps[k]; ps[k]= __3__ ; 

printf("\nThe string after sorting by length:\n\n"); 

for(i=0; i<N; i++) puts(ps[i]); 

main() 

{ char ch[N][M]={"red","green","blue","yellow","black"}; 

int i; 

printf("\nThe original string\n\n"); 

for(i=0;i<N;i++)puts(ch[i]); printf("\n"); 

fun(ch); 

解题思路: 

本题是按字符串的长短进行排序。 

第一处:外循环每循环一次,k应保存当前的i值,所以应填:i。 

第二处:使用内循环对i+1后面的字符串长度进行比较,所以应填:ps[j]。 

第三处:交换内容,所以应填:tp。 

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

已知一个数列从第0项开始的前三项分别为001,以后的各项都是其相邻的前三项之和。给定程序MODI1.C中函数fun的功能是:计算并输出该数列前n项的平方根之和。n的值通过形参传入。 

例如,当n10时,程序的输出结果应为:23.197745。 

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

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

给定源程序: 

#include <stdio.h> 

#include <math.h> 

/ ************found************/ 

fun(int n) 

{ double sum, s0, s1, s2, s; int k; 

sum = 1.0; 

if (n <= 2) sum = 0.0; 

s0 = 0.0; s1 = 0.0; s2 = 1.0; 

for (k = 4; k <= n; k++) 

{ s = s0 + s1 + s2; 

sum += sqrt(s); 

s0 = s1; s1 = s2; s2 = s; 

/ ************found************/ 

return sum 

main ( ) 

{ int n; 

printf("Input N="); 

scanf("%d", &n); 

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

 

解题思路: 

第一处:由于函数返回是实数,所以必须定义返回的类型,只有整型或无结果返回可以忽略,其他必须定义返回的类型,所以要在此行前加上doublefloat。 

第二处:该行缺少分号。 

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

编写函数fun,它的功能是计算下列级数和,和值由函数值返回。 

例如,当n = 10x0.3时,函数值为1.349859。 

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

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

给定源程序: 

#include <stdio.h> 

#include <math.h> 

double fun(double x , int n) 

main() 

printf("%f\n", fun(0.3,10)); 

NONO(); 

解题思路: 

本题是根据给定的公式计算结果。使用for循环语句依次求出每一项的值,分别进行累加并把结果存入变量s中,最后把s作为函数值返回。其中,jc函数是计算阶乘的。 

参考答案: 

#include <stdio.h> 

#include <math.h> 

long jc(int n) 

 

long s = 1 ; 

int i ; 

for(i = 1 ; i <= n ; i++) s *= i ; 

return s ; 

double fun(double x , int n) 

double s = 1.0, y = x ; 

int i ; 

for(i = 1 ; i <= n ; i++) { 

s += y / (double)jc(i) ; 

y *= x ; 

return s ; 

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


查看更多