请编写函数fun(),其功能是:计算并输出下列多项式的值。 S=1+4/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n) 例如,着主函数从键盘给n输入50后,则输出为 S=1.960784。 注意:部分源程序给出如下

admin2010-11-26  14

问题 请编写函数fun(),其功能是:计算并输出下列多项式的值。
       S=1+4/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)
   例如,着主函数从键盘给n输入50后,则输出为 S=1.960784。
   注意:部分源程序给出如下。
   请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
   试题程序:
   #include <stdio.h>
   double fun(int n)
   {
   }
   main ()
   {
     int n;
     double s;
     printf ("\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+i; /*求每—项的分母*/ s=s+1.0/s1; /*求S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)*/ } return s; }

解析 该程序的数学思路是:在程序中输入n后,以前n项的和作为分母递加,由于s1是浮点类数据所以s=s+1.0/s1; for 循环的作用是每一次循环给总结果s加上一项1.0/s1。
转载请注明原文地址:https://kaotiyun.com/show/wPID777K
0

最新回复(0)