第27套:
给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。
 例如,当形参n的值为10时,函数返回:9.612558。
 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
 注意:源程序存放在考生文件夹下的BLANK1.C中。
 不得增行或删行,也不得更改程序的结构!
 给定源程序:
#include <stdio.h> 
double fun(int n) 
{ int i; double s, t; 
s=__1__; 
for(i=1; i<=__2__; i++) 
{ t=2.0*i; 
s=s+(2.0*i-1)*(2.0*i+1)/__3__; 
} 
return s; 
} 
main() 
{ int n=-1; 
while(n<0) 
{ printf("Please input(n>0): "); scanf("%d",&n); } 
printf("\nThe result is: %f\n",fun(n)); 
} 
解题思路:
 第一处:根据公式可知,累加和变量s,应置0。
 第二处:for循环的终止值应为形参n。
 第三处:根据公式以及函数体中t变量内容,所以应填:t*t。
给定程序MODI1.C中函数 fun 的功能是:统计substr所指子字符串在str所指字符串中出现的次数。
 例如,若字符串为aaas lkaaas,子字符串为as,则应输出2。
 请改正程序中的错误,使它能计算出正确的结果。
 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
 给定源程序:
#include <stdio.h> 
fun (char *str,char *substr) 
{ int i,j,k,num=0; 
for(i = 0, str[i], i++) 
for(j=i,k=0;substr[k]==str[j];k++,j++) 
If(substr[k+1]=='\0') 
{ num++; 
break; 
} 
return num; 
} 
main() 
{ 
char str[80],substr[80]; 
printf("Input a string:") ; 
gets(str); 
printf("Input a substring:") ; 
gets(substr); 
printf("%d\n",fun(str,substr)); 
} 
解题思路:
 第一处:循环for语句中应有分号。
 第二处:if错写成If。
请编写一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度 0.0005, 即某项小于0.0005时停止迭代):
 π 1 1×2 1×2×3 1×2×3×4 1×2×…×n
 ─ = 1+─+─—+────+──────+……+────────
 2 3 3×5 3×5×7 3×5×7×9 3×5×…×(2n+1)
 程序运行后,如果输入精度0.0005,则程序输出为3.14…。
 注意: 部分源程序存在文件PROG1.C文件中。
 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
 给定源程序:
#include <stdio.h> 
#include <math.h> 
double fun ( double eps) 
{ 
} 
main( ) 
{ double x; 
printf("Input eps:") ; 
scanf("%lf",&x); printf("\neps = %lf, PI=%lf\n", x, fun(x)); 
NONO(); 
} 
解题思路:
 本题是根据公式进行计算。
 参考答案:
double fun ( double eps) 
{ 
double s=1,t=1./3; 
int n=1; 
while(t>=eps){ s+=t; n++; t=t*n/(2.0*n+1); } 
return (s*2.0); 
} 
main( ) 
{ double x; 
printf("Input eps:") ; 
scanf("%lf",&x); printf("\neps = %lf, PI=%lf\n", x, fun(x)); 
NONO(); 
}