知ing

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

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

゛Zirro、Y 上传

查看本书

100套: 

给定程序中,函数fun的功能是:在形参s所指字符串中寻找与参数c相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则函数不做任何处理。 

例如,s所指字符串为:baacdac中的字符为:a,执行后s所指字符串为:baaaacdaa。 

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

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

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

给定源程序: 

#include <stdio.h> 

void fun(char *s, char c) 

{ int i, j, n; 

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

for(i=0; s[i]!=___1___ ; i++) 

if(s[i]==c) 

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

n=___2___ ; 

while(s[i+1+n]!='\0') n++; 

for(j=i+n+1; j>i; j--) s[j+1]=s[j]; 

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

s[j+1]=___3___ ; 

i=i+1; 

main() 

{ char s[80]="baacda", c; 

printf("\nThe string: %s\n",s); 

printf("\nInput a character: "); scanf("%c",&c); 

fun(s,c); 

printf("\nThe result is: %s\n",s); 

解题思路: 

第一处:在for循环中终止值要判断字符串是否结束符,所以应填:'\0'。 

第二处:n用于统计参数c后还有多少个字符,要对其进行初始化,所以应填:0。 

第三处:要求插入相同的字符c,所以应填:c。 

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

在主函数中从键盘输入若干个数放入数组中0结束输入并放在最后一个元素中。给定程序MODI1.C中函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)。 

例如:数组中元素中的值依次为:39,-47,21,2,-8,15,0,则程序的运行结果为:19.250000。 

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

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

给定源程序: 

#include <stdio.h> 

double fun ( int x[]) 

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

int sum = 0.0; 

int c=0, i=0; 

while (x[i] != 0) 

{ if (x[i] > 0) { 

sum += x[i]; c++; } 

i++; 

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

sum \= c; 

return sum; 

main( ) 

{ int x[1000]; int i=0; 

printf( "\nPlease enter some data (end with 0): " ); 

do 

{ scanf("%d", &x[i]); } 

while (x[i++] != 0); 

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

解题思路: 

第一处:由于sum是存放实数值,因此不能定义为整型,所以应改为double sum=0.0;float 

sum=0.0;。 

第二处:除的运算符是“/”。 

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

编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。 

1       1              1 

S=1 + ── ─── + ... + ────── 

1+2    1+2+3         1+2+3+...+n 

例如:若n的值为11时,函数的值为:1.833333 

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

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

给定源程序: 

#include <stdio.h> 

float fun(int n) 

main() 

{ int n; float s; 

printf("\nPlease enter N:"); scanf("%d", &n); 

s = fun(n); 

printf("the result is: %f\n", s); 

NONO(); 

解题思路: 

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

参考答案: 

float fun(int n) 

int i,j,t; 

float s=0; 

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

t=0; 

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

s=s+1./t; 

return s; 

 


查看更多