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乘的位置不一样,导致结果也会不一样?我觉得都是一个意思啊 展开
#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乘的位置不一样,导致结果也会不一样?我觉得都是一个意思啊 展开
展开全部
第一次循环 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
之后的类似.
当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第一次就不一样了啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
两段程序,在i的循环里,只有i=1取到的值是一样的。
i>1时,数据已经不相同了。
主要是正负标志变量flag,导致的。
建议你两个程序都调试一下,你就知道了。
i>1时,数据已经不相同了。
主要是正负标志变量flag,导致的。
建议你两个程序都调试一下,你就知道了。
追问
对不起 能重新看一下吗?就是上面的第二个 flag初值是-1也和第一的答案不同 谢谢。
刚学会调试 知道了 是 我的错误 谢谢你
追答
改-1后,i2时,不同了。
这是你在循环里的算法导致的,
你的代码的目的是什么?能说明一下吗?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一个是你家孩子,一个是老王家的,能一样才怪。
追问
笑哭。。
追答
运算顺序都不同
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询