itgle.com

请编写函数fun(),其功能是计算并输出当x<0.97时下列多项式的值,直到|Sn-Sn-1|<0.000001为止。Sn=1+0.5x+0.5(0.5-1)x2/2!+0.5(0.5-1)(0.5-2)x3/3!+…0.5(0.5-1)(0.5-2)…(0.5-n+1)xn/n!例如:主函数从键盘给x输入0.21后,则输出为s=1.100000。注意:部分源程序以存在文件test38_2.cpp中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。文件test3

题目

请编写函数fun(),其功能是计算并输出当x<0.97时下列多项式的值,直到|Sn-Sn-1|<0.000001为止。

Sn=1+0.5x+0.5(0.5-1)x2/2!+0.5(0.5-1)(0.5-2)x3/3!+…0.5(0.5-1)(0.5-2)…(0.5-n+1)xn/n!

例如:主函数从键盘给x输入0.21后,则输出为s=1.100000。

注意:部分源程序以存在文件test38_2.cpp中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

文件test38_2.cpp的内容如下:

include<stdio.h>

include<iostream.h>

include<math.h>

double fun(double x)

{

}

void main( )

{

double x, s;

cout<<"Input x:"<<endl;

cin>>x;

s=fun(x);

cout<<"s="<<s<<endl;

}


相似考题
参考答案和解析
正确答案:double fun (double x) { double s1=1.0p=1.0sum=0.0s0t=1.0; int n=1; do {s0=s1; sum+=s0; t*=n; P*= (0.5-n+1)*x; s1=p/t; n++; }while (fabs(s1-s0)>=le-6); return sum; }
double fun (double x) { double s1=1.0,p=1.0,sum=0.0,s0,t=1.0; int n=1; do {s0=s1; sum+=s0; t*=n; P*= (0.5-n+1)*x; s1=p/t; n++; }while (fabs(s1-s0)>=le-6); return sum; } 解析:解答本题的关键是观察所给的多项式,并从中找出变化规律。观察得出,每一项分子的变化规律是每一项比前一项多乘一项“(0.5-n+1)*x”。分母的变化规律是每一项比前一项多乘一个n(即在不断变化的各项的编号)。
更多“请编写函数fun(),其功能是计算并输出当x<0.97时下列多项式的值,直到|Sn-Sn-1|<0.000001为止。 Sn= ”相关问题
  • 第1题:

    请编写函数fun(),其功能是:计算并输出下列多项式值。

    S=(1+1/2)+(1/3+1/4)+…+(1/(2n-1)+l/2n)

    例如,若主函数从键盘给n输入12后,则输出为 S=3.775958。

    n的值要求大于1但不大于100。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

    试题程序:

    include<stdio.h>

    double fun(int n)

    {

    }

    main()

    {

    int n;

    double s;

    printf("\nlnput n:");

    scanf("%d",&n);

    s=fun(n);

    printf("\ns=%f\n",s);

    }


    正确答案:double fun(int n) { int i; double s=0.0; for(i=1;i=n;i++) /*计算S=(1+l/2)+(1/3+1/4)+…+(1/(2n-1)+1/2n)*/ s=s+(1.0/(2*i-1)+1.0/(2*i)); return s; }
    double fun(int n) { int i; double s=0.0; for(i=1;i=n;i++) /*计算S=(1+l/2)+(1/3+1/4)+…+(1/(2n-1)+1/2n)*/ s=s+(1.0/(2*i-1)+1.0/(2*i)); return s; } 解析:本题中s=s+(1.0/(2*i-1)+1.0/(2*i));语句是用C程序去表达题目中的每一项,这是关键,其他问题不难理解。

  • 第2题:

    请教:2016年计算机二级考试C++模拟试题简答题1答案

    请编写函数fun,其功能时:计算并输出当x<0.97时下列多项式的值,直到|sn-s(n-1)|<0.000001为止。

    Sn=1+0.5x+0.5(0.5-1)/2!x(2)+…+0.5(0.5-1)(0.5-2)…..(0.5-n+1)/n!x(n)


      .double fun(double x)

      {double s1=1.0,p=1.0,sum=0.0,s0,t=1.0;

      int n=1;

      do

      {s0=s1;

      sum+=s0;

      t*=n;

      p*=(0.5-n+1)*x;

      s1=p/t;

      n++;}while(fabs(s1-s0)>1e-6);

      return sum;}

  • 第3题:

    请编写fun函数,将字符串逆序存放并输出。例如,当字符串为"This Is a c Program",输出:"margorP c a sI sihT"。


    编程题3:函数fun3将字符串中的字符按逆序输出,但不改变字符串中的内容。

  • 第4题:

    请编写函数fun(),其功能是计算并输出下列多项式的值: F=1+1/1!+1/21+1/31+1/41+…+1/m! 例如,若主函数从键盘给m输入5,则输出为F=2.716667。 注意:m的值要求大于1但不大于100。部分源程序给出如下。 请勿改动main()函数与其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。 试题程序:


    正确答案:

    【解析】该程序的功能是计算并输出多项式的值。该题的解题思路是根据题干中给出的数列,首先推出每一项的表达式,然后再对多项式进行累加求和。
    根据题干中给出的数列,推出每一项是阶乘的倒数,所以首先在循环中求得每一项的阶乘。其中阶乘的计算公式
    定义为:
    m!=m*(m=1)*(m=2)*…*1(m>1)
    m!=1(m=1)
    公式分为参数m是1和大于1的两种情况,例如.1的阶乘1!=1;5的阶乘5!=5*4*3*2*1。
    然后求得阶乘分之一的累加和。

  • 第5题:

    请编写函数fun,其功能是:计算并输出

    例如,在主函数中从键盘给n输入20后,输出为:s=534.188884。

    注意:要求n的值大于1但不大于100。

    部分源程序在文件PROGl.C中。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。


    正确答案:
    解析:该程序功能是对题干中给出的多项式的求解。根据题干中给出的数列,首先推出每一项的表达式,然后再对多项式进行累加求和。