第94套:
函数fun的功能是:计算 的前n项之和。若x=2.5,n=15时,函数值为:1.917914。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h>
#include <math.h>
double fun(double x, int n)
{ double f, t; int i;
f = ___1___;
t = -1;
for (i=1; i<n; i++)
{
t *= (___2___)*x/i;
f += ___3___;
}
return f;
}
main()
{ double x, y;
x=2.5;
y = fun(x, 15);
printf("\nThe result is :\n");
printf("x=%-12.6f y=%-12.6f\n", x, y);
}
解题思路:
第一处:根据公式可知,变量f的初值为1。
第二处:根据公式可知,此处是正负号的变换,所以应填:-1。
第三处:计算的结果进行累加并赋值给变量f,所以应填:t。
给定程序MODI1.C中函数fun的功能是: 从3个红球,5个白球, 6个黑球中任意 取出8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是15。程序中i的值代表红球数, j的值代表白球数,k的值代表黑球数。
请改正函数fun中指定部位的错误, 使它能得出正确的结果。
注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构!
给定源程序:
#include <stdio.h>
int fun()
{ int i,j,k,sum=0;
printf("\nThe result :\n\n");
for(i=0; i<=3; i++)
{ for(j=1; j<=5; j++)
{ k=8-i-j;
if(K>=0 && K<=6)
{ sum=sum+1;
printf("red:%4d white:%4d black:%4d\n",i,j,k);
}
}
}
return sum;
}
main()
{ int sum;
sum=fun();
printf("sum =%4d\n\n",sum);
}
解题思路:
第一处:外for循环的初始变量i的值应为1。
第二处:变量k写成了大写K了。
请编写函数fun, 其功能是: 计算并输出下列多项式的值:
例如, 在主函数中从键盘给n输入15, 则输出为:s=2.718282。
注意: 要求n的值大于1但不大于100。
部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include <stdio.h>
double fun(int n)
{
}
main()
{ int n; double s;
printf("Input n: "); scanf("%d",&n);
s=fun(n);
printf("s=%f\n",s);
NONO();
}
解题思路:
本题是根据给定的公式计算结果。使用for循环语句依次求出每一项的值,分别进行累加并把结果存入变量s中,最后把s作为函数值返回。
参考答案:
double fun(int n)
{
double s=1 ;
long t=1;
int i;
for(i=1; i<=n; i++) {
t=t*i; /* 计算阶乘 */
s+=1./t; /* 计算每项的值并累加至变量s中 */
}
return s; /* 返回多项式的值 */
}