C语言大神帮看这两段代码的区别在哪,为什么输出同一值,输出结果不一样?
#include<stdio.h>intmain(){intm,n,t,i,sum=0;scanf("%d",&m);scanf("%d",&n);for(i=0;i<n...
#include<stdio.h>
int main()
{int m,n,t,i,sum=0;
scanf("%d",&m);
scanf("%d",&n);
for(i=0;i<n;i++)
{ scanf("%d",&t);
if(m-t>=0) m=m-t;
if (m-t<0) sum++;
}
printf("%d",sum);
return 0;}
#include<stdio.h>
int main()
{int m,n,t,i,sum=0;
scanf("%d",&m);
scanf("%d",&n);
for(i=0;i<n;i++)
{ scanf("%d",&t);
if(m>=t) m=m-t;
else sum++;
}
printf("%d",sum);
return 0;} 应该是if语句哪里不太一样,但是不知道为什么不一样 展开
int main()
{int m,n,t,i,sum=0;
scanf("%d",&m);
scanf("%d",&n);
for(i=0;i<n;i++)
{ scanf("%d",&t);
if(m-t>=0) m=m-t;
if (m-t<0) sum++;
}
printf("%d",sum);
return 0;}
#include<stdio.h>
int main()
{int m,n,t,i,sum=0;
scanf("%d",&m);
scanf("%d",&n);
for(i=0;i<n;i++)
{ scanf("%d",&t);
if(m>=t) m=m-t;
else sum++;
}
printf("%d",sum);
return 0;} 应该是if语句哪里不太一样,但是不知道为什么不一样 展开
3个回答
展开全部
执行过程中考虑一种情况:
m=10;t=9
则第一段代码中:
if(m-t>=0) m=m-t;
if (m-t<0) sum++;
这两句都会执行;
而第二段代码中则只执行if(m-t>=0) m=m-t;
因此,代码1比代码2执行sum++的次数多
因此,代码1打印的值会比代码2打印的值大
m=10;t=9
则第一段代码中:
if(m-t>=0) m=m-t;
if (m-t<0) sum++;
这两句都会执行;
而第二段代码中则只执行if(m-t>=0) m=m-t;
因此,代码1比代码2执行sum++的次数多
因此,代码1打印的值会比代码2打印的值大
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个代码:如果m-t<=0之后你做了m=m-t此时的m如果比t小,那么就会执行下一步sum++
比如说当前m=5,t=3 m>=t 执行m=m-t=2下一步m<t成立了sum++,所以你上下不一样
下面是标准的当前m只有效一次
比如说当前m=5,t=3 m>=t 执行m=m-t=2下一步m<t成立了sum++,所以你上下不一样
下面是标准的当前m只有效一次
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if(m-t>=0) m=m-t;
if (m-t<0) sum++;
当满足m-t>=0,就改变了m的值了,然后又判断if (m-t<0) ,如果满足就sum++了
而
if(m>=t) m=m-t;
else sum++;
两者只会执行一步,不是m=m-t;就是sum++;
显然结果不同
if (m-t<0) sum++;
当满足m-t>=0,就改变了m的值了,然后又判断if (m-t<0) ,如果满足就sum++了
而
if(m>=t) m=m-t;
else sum++;
两者只会执行一步,不是m=m-t;就是sum++;
显然结果不同
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询