所属年份:2011.3
请编写函数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。
#include<math.h> #include<stdio.h> double fun(int n) { } void main() { FILE *wf; int n; double s; printf("\n\nInput n: "); scanf("%d",&n); s=fun(n); printf("\n\ns=%f\n\n",s); /******************************/ wf=fopen("out.dat","w"); fprintf(wf,"%f",fun(20)); fclose(wf); /*****************************/ }
【解题思路】
本程序用s1来表示题中每个小括号内的值,第1项相当于有1个10.5(它还是1),第2项相当于第1项的值加上20.5,第3项相当于第2项的值加上30.5,……,依此类推。函数pow(x,y)的功能是求出x的y次方,该函数已在库函数
【参考答案】
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; }