问答题
请编写函数fun,其功能是计算并输出如下多项式的值。
S
n
=1+1/1!+1/2!+1/3!+1/4!+…+1/n!
例如,若主函数从键盘给n输入15,则输出为S=2.718282。
注意:n的值要求大于1但不大于100。部分源程序给出如下。
请勿改动主函数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);
}
【正确答案】
【答案解析】double fun(int n)
{
double t, sn=1.0;
int i, j;
for(i=1; i<=n; i++)
{
t=1.0;
for(j=1; j<=i; j++)
t*=j;
sn+=1.0/t;
}
return sn;
}
[解析] 在程序中输入n后,以前n项的阶乘作为分母递加,由于t是浮点型数据,所以写为复合赋值语句s+=1.0/t;。for循环的作用是每一次循环将1.0/t与sn相加,并将值存入sn中。