C语言问题 为什么两个程序相同的思路 结果不一样

这是我写的程序#include<stdio.h>intmain(){doublea,b,d,x,sum=0;longlongc=1;unsignedshorti;shor... 这是我写的程序
#include <stdio.h>

int main()
{
double a,b,d,x,sum=0;
long long c=1;
unsigned short i;
short flag=1;
scanf("%lf",&x);
d=x;
for(i=1;i<=19;i=i+2)
{
sum=sum+d/c*flag;//这个是这里
d=d*x*x;
c=c*(i+1)*(i+2);
flag=-flag;
}
printf("%.3f",sum);
}

和另一个
#include <stdio.h>

int main()
{
double a,b,d,x,sum=0;
long long c=1;
unsigned short i;
short flag=1;
scanf("%lf",&x);
d=x;
for(i=1;i<=19;i=i+2)
{
sum=sum+d/c;
d=d*x*x*flag;//这里改了
c=c*(i+1)*(i+2);
flag=-flag;
}
printf("%.3f",sum);
}

如我的注释 为什么flag乘的位置不一样,导致结果也会不一样?我觉得都是一个意思啊
展开
 我来答
风若远去何人留
2017-10-30 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450108
专业C/C++软件开发

向TA提问 私信TA
展开全部
第一次循环 i=1的时候是一样的.

当i=2的时候就不一样了.
这时
你的程序,sum=sum+d/c*flag flag是-1, 世纪是 sum=sum-d/c;
另外一个,上一次计算d=d*x*x*flag的时候flag还是1, 所以这里是
sum=sum+d/c
之后的类似.
追问
对不起  能重新看一下吗?就是上面的第二个 flag初值是-1也和第一的答案不同    谢谢。
刚弄会调试 是我的错 谢谢你
追答
初始化成-1第一次就不一样了啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
imkarayi9d4f
2017-10-30 · TA获得超过1552个赞
知道小有建树答主
回答量:1164
采纳率:85%
帮助的人:596万
展开全部
两段程序,在i的循环里,只有i=1取到的值是一样的。
i>1时,数据已经不相同了。
主要是正负标志变量flag,导致的。
建议你两个程序都调试一下,你就知道了。
追问
对不起  能重新看一下吗?就是上面的第二个 flag初值是-1也和第一的答案不同    谢谢。
刚学会调试 知道了 是 我的错误 谢谢你
追答
改-1后,i2时,不同了。
这是你在循环里的算法导致的,
你的代码的目的是什么?能说明一下吗?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ChengZiXianS
2017-10-30 · TA获得超过1011个赞
知道小有建树答主
回答量:1434
采纳率:72%
帮助的人:456万
展开全部
一个是你家孩子,一个是老王家的,能一样才怪。
追问
笑哭。。
追答
运算顺序都不同
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式