问答题 请编写函数fun,该函数的功能是:计算并输出s=1+(1+2 0.5 )+(1+2 0.5 +3 0.5 )+…+(1+2 0.5 +3 0.5 +…+n 0.5 )的值。
例如,若主函数从键盘给n输入20后,则输出为S=534.188884。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<math.h>
#include<stdio.h>
double fun(int n)
{
}
void main()
{
int n;
double s;
printf("/n/nInput n:");
scanf("%d",&n);
s=fun(n);
printf("/n/nS=%f/n/n",s);
}
【正确答案】
【答案解析】double fun(int n)
{
int i;
double s=0.0,s1=0.0;
for(i=1;i<=n;i++)
{s1=s1+pow(i,0.5); /*求每一项*/
s=s+s1; /*按公式求出s*/
}
return s;
} [解析] 本程序用s1来表示题中每个小括号内的值,第1项相当于有1个10.5(它还是1),第2项相当于第1项的值加上20.5,第3项相当于第2项的值加上30.5,……,依此类推。函数pow(x,y)的功能是求出x的y次方,该函数已在库函数 中定义(即可直接使用)。程序中用变量s来表示总的结果,每次循环加1次s1,即加1项。