永发信息网

sum=sum*i/(2* i+1)和sum*=i/(2*i+1)的区别

答案:4  悬赏:50  手机版
解决时间 2021-02-26 12:31
#include <stdio.h >
#include < conio.h >
#include <math.h >
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 <stdio.h >
#include < conio.h >
#include <math.h >
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;
t*=i/(2*i+1); //当i=5时,这个 t*= 5/11 ,sum 并没有把 i=5时的 t 值相加
++i;
你这样写相当于 while do 先判断再加
二:
sum=sum*i/(2* i+1); // 当i=5时,这个 sum*= 5/11
t=t+sum; // 这里 把 i=5时的 值加到 t 了
i++;
这一段相当于 do while 先加再判断
多加一项,所以两者的结果不一样
全部回答
这......................
for中被;分开的三部分分别是for(初始定义;循环继续条件;每次循环后处理内容), 这里第一部分没有,所以就是表示从i=1开始,到i<=10之前,每次循环之后做sum=2*sum+1,i++处理。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
瑞豪酒店地址在哪,我要去那里办事
红色警戒 中的 RA2 是什么意思
请推荐一些日本的武士、忍者、浪人电影~总之
属马的男和属羊女结和事业怎么样
轮椅怎么折叠图解
鹿圈沟这个地址在什么地方,我要处理点事
泰国达人秀 人妖是什么歌曲
从台湾寄明信片到大陆应该怎么弄啊?
罗莱、博洋、水星、蓝丝羽、圣宝莱、紫罗兰、
王者荣耀英雄属性没有吸血效果买吸血铭文有用
杨家垴在哪里啊,我有事要去这个地方
自动取款机转账后双方卡都被冻结
东骏大药房(幸福连锁店)我想知道这个在什么地
【高中英语评课稿】初中英语评课稿高中英语评
一种应用软件,是唱歌用的。你只要唱歌词,它就
推荐资讯
我喜欢上一个女生,找了一个朋友要到了她的微
璜泾平价五金家电商店我想知道这个在什么地方
玛拉沁商行地址在什么地方,想过去办事
歌词我活着 我为你而存在过 等你来伴随我
橡树种子有什么用
【数学】椭圆的离心率e=c/a 是怎么推导出来的
电视机打开一闪一闪不出图像为什么事
blonde jokes
【八年级数学题】8年级数学题
预硬钢有哪些及其特点和选择
怎么下载映美打印机驱动程序
刚开始腰疼,之后引起了腿疼脚疼怎么办
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?