A-A+

请编写函数fun() 该函数的功能是:计算并输出 S=1+(1+20.5)+(1+20.5+

2022-08-06 01:22:33 问答库 阅读 174 次

问题详情

请编写函数fun(),该函数的功能是:计算并输出
S=1+(1+20.5)+(1+20.5+30.5)+…+(1+20.5+30.5+…+n0.5)
例如,若主函数从键盘给n输入20后,则输出为
s=534.188884。
注意;部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。
试题程序:
include <math. h>
include <stdio. h>
double fun(int n)
{
}
main()
{
int n;
double s;
printf("nnInput n: ");
scanf ("%d", &n);
s=fun (n)
printf ("nns=%fnn", s);
}请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:double fun(int n){int i;double s=0.0s1=0.0;for(i=1;i<=n; i++){s1=s1+pow(i0.5); /*求每—项*/s=s+s1; /*按公式求出s*/}return 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;} 解析:我们先用数学的思路读懂该程序,并用1个字符表示“()”内的值。在本程序中用s1来表示题中每个小括号内的值,第1项相当于有1个10.5次方(它还是1),第2项相当于第1项的值加上200.5次方,第3项相当于第2项的值加上30.5次方,…,依次类推。函数pow (x,y)的功能是求出x的y次方,该函数已在库函数<math. h>中定义(即可直接使用)。要程序中用s来表示总的结果,每1次循环加1次s1即加1项。

考点:函数,功能