P075 计算多项式的值 ★★

03-程序设计题 软件121, 唐鼎威 1305浏览

所属年份: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次方,该函数已在库函数中定义(即可直接使用)。程序中用变量s来表示总的结果,每次循环加1次s1,即加1项。
【参考答案】

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;
}