sum=sum*i/(2* i+1)和sum*=i/(2*i+1)的区别
来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 20:01:40
sum=sum*i/(2* i+1)和sum*=i/(2*i+1)的区别
#include
#include < conio.h >
#include
double fun( double eps)
{
double t=1.0,sum=1.0;
int i=1;
while (sum>=eps) /* 当某项大于精度
要求时,继续求下一项*/
{sum=sum*i/(2* i+1); /* 求多
项式的每一项*/
t=t+sum; /*累加求和*/
i++;
}
return 2*t;
}
void main ()
{
double x;
printf ("Input eps : ") ;
scanf("%lf",&x);
printf("\neps =%lf, PI =%lf\n",
x, fun(x));
}
#include
#include < conio.h >
#include
double fun( double eps)
{int i=1;
double t=1.0,sum=0;
while(t>=eps)
{
sum+=t;
t*=i/(2*i+1);
++i;
}
return 2*sum;
}
void main ()
{
double x;
printf ("Input eps : ") ;
scanf("%lf",&x);
printf("\neps =%lf, PI =%lf\n",
x, fun(x));
}为什么结果不一样?
#include
#include < conio.h >
#include
double fun( double eps)
{
double t=1.0,sum=1.0;
int i=1;
while (sum>=eps) /* 当某项大于精度
要求时,继续求下一项*/
{sum=sum*i/(2* i+1); /* 求多
项式的每一项*/
t=t+sum; /*累加求和*/
i++;
}
return 2*t;
}
void main ()
{
double x;
printf ("Input eps : ") ;
scanf("%lf",&x);
printf("\neps =%lf, PI =%lf\n",
x, fun(x));
}
#include
#include < conio.h >
#include
double fun( double eps)
{int i=1;
double t=1.0,sum=0;
while(t>=eps)
{
sum+=t;
t*=i/(2*i+1);
++i;
}
return 2*sum;
}
void main ()
{
double x;
printf ("Input eps : ") ;
scanf("%lf",&x);
printf("\neps =%lf, PI =%lf\n",
x, fun(x));
}为什么结果不一样?
假如i=5时就退出while循环,
一:
sum+=t;
\x05t*=i/(2*i+1); //当i=5时,这个 t*= 5/11 ,sum 并没有把 i=5时的 t 值相加
\x05++i;
你这样写相当于 while do 先判断再加
二:
sum=sum*i/(2* i+1); // 当i=5时,这个 sum*= 5/11 \x05\x05\x05\x05\x05\x05\x05
\x05\x05t=t+sum; // 这里 把 i=5时的 值加到 t 了
\x05\x05i++;
这一段相当于 do while 先加再判断
多加一项,所以两者的结果不一样
再问: 不过在vissual C++6.0里运行第一个程序会出来正确结果而第二个程序无论精度怎么调,结果都是2,不知道为什么,感觉是这两个语句应该是一样的啊
再答: 方法一: while (sum>=0.05) /* 当某项大于精度 要求时,继续求下一项*/ { sum=sum*i/(2* i+1); // i=4时 sum= 0.0253968253968 t=t+sum; // 这里 就把 i=4时的项 sum= 0.0253968253968 累加进来了。 i++; // i 自加 i=5; } 结果 eps=0.05 i=5 sum = 0.0253968253968 t=1.54920634921 2*t=3.09841269841 方法二: while(t>=0.05) { sum+=t; // 在这里累加,但是却没有把最后一项累加进来,少了最后一项的累加 t*=i/(2*i+1); //i=4时 t= 0.0253968253968 =0.05) { sum+=t; // 在这里累加,但是却没有把最后一项累加进来,少了最后一项的累加 t*=i/(2*i+1); //i=4时 t= 0.0253968253968
一:
sum+=t;
\x05t*=i/(2*i+1); //当i=5时,这个 t*= 5/11 ,sum 并没有把 i=5时的 t 值相加
\x05++i;
你这样写相当于 while do 先判断再加
二:
sum=sum*i/(2* i+1); // 当i=5时,这个 sum*= 5/11 \x05\x05\x05\x05\x05\x05\x05
\x05\x05t=t+sum; // 这里 把 i=5时的 值加到 t 了
\x05\x05i++;
这一段相当于 do while 先加再判断
多加一项,所以两者的结果不一样
再问: 不过在vissual C++6.0里运行第一个程序会出来正确结果而第二个程序无论精度怎么调,结果都是2,不知道为什么,感觉是这两个语句应该是一样的啊
再答: 方法一: while (sum>=0.05) /* 当某项大于精度 要求时,继续求下一项*/ { sum=sum*i/(2* i+1); // i=4时 sum= 0.0253968253968 t=t+sum; // 这里 就把 i=4时的项 sum= 0.0253968253968 累加进来了。 i++; // i 自加 i=5; } 结果 eps=0.05 i=5 sum = 0.0253968253968 t=1.54920634921 2*t=3.09841269841 方法二: while(t>=0.05) { sum+=t; // 在这里累加,但是却没有把最后一项累加进来,少了最后一项的累加 t*=i/(2*i+1); //i=4时 t= 0.0253968253968 =0.05) { sum+=t; // 在这里累加,但是却没有把最后一项累加进来,少了最后一项的累加 t*=i/(2*i+1); //i=4时 t= 0.0253968253968
sum=sum*i/(2* i+1)和sum*=i/(2*i+1)的区别
sum=sum+i^2什么意思
i = i * sign; sum = sum + i ; sign = -sign;和 sum = sum + i *
请问:sum+=i是什么和sum=sum+i有什么区别!
sum+=i是什么意思
sum =i
sum+=arguments[i]
c++1~100求和 sum+=i; sum=i+1; 有什么区别?
SUM(IF(I:I="","",1/(COUNTIF(I:I,I:
sum=0 for i= 1 to 100 sum=sum+i next i print sum 我不懂为什么要SUM=
linux中的AWK “ awk'/aaa|bbb|ccc/{sum[$1]+=$2};END(for(i in sum
c语言 sum+=i++;和 sum+=i;++i; 那个运算的速度更快?