| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1623 人关注过本帖
标题:两个数求和,为什么会出现这样的结果? 谢谢
只看楼主 加入收藏
ilvtlg
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2011-5-11
收藏
得分:1 
去掉ELSE之后,如果a<b的话还会执行下一个for语句,就相当于把你所算的结果乘以2,如果删掉else和第二个for循环结果也是对的~
2011-05-12 19:07
QQ690356163
Rank: 2
等 级:论坛游民
帖 子:4
专家分:11
注 册:2011-4-13
收藏
得分:1 
    if(a>b)
    {
        t=b;
        b=a;
        a=t;
        for(i=a;i<=b;i++)
        {
            sum=sum+i;
        }
    }
这段代码是在a>b的情况下执行的。
     
   for(i=a;i<=b;i++)
    {
        sum=sum+i;
    }
这段代码无论a和b哪个大哪个小都会执行。如果是a>b的话,sum会是你认为的值的两倍,因为求和求了两次。
而a<b,if块的语句就不执行,求和求一次,那样就是你认为的值。
建议你以后遇到此类问题可以用单步执行来看看程序是怎样运行的,还有个小错误最后的getch()后面少了个 ;

2011-05-13 10:42
justemem
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2011-5-7
收藏
得分:1 
刚学,不怎么懂!
2011-05-13 10:56
淡泊明志
Rank: 2
等 级:论坛游民
帖 子:8
专家分:13
注 册:2011-5-13
收藏
得分:1 
main()
{
    int a,b,i,t,sum=0;
    scanf("%d%d",&a,&b);
    if(a>b)
    {
        t=b;
        b=a;
        a=t;
        for(i=a;i<=b;i++)
        {
            sum=sum+i;
        }
    }
    else只有上面的a>b不满足才执行下面的for
    {
        for(i=a;i<=b;i++)
        {
            sum=sum+i;
        }
    }
    printf("%d",sum);
    getch();
}
main()
{
    int a,b,i,t,sum=0;
    scanf("%d%d",&a,&b);
    if(a>b)
    {
        t=b;
        b=a;
        a=t;
        for(i=a;i<=b;i++)
        {
            sum=sum+i;
        }
    }
无论a>b结果如何下面的for都执行
    for(i=a;i<=b;i++)
    {
        sum=sum+i;
    }

    printf("%d",sum);
    getch()
2011-05-13 21:55
wavewind
Rank: 3Rank: 3
来 自:浙江
等 级:论坛游侠
帖 子:34
专家分:101
注 册:2011-5-13
收藏
得分:1 
这个问题是有点白啊,一个判断语句和循环语句的顺序组合而已!
2011-05-14 09:49
林发扬
Rank: 2
等 级:论坛游民
帖 子:38
专家分:56
注 册:2011-4-12
收藏
得分:1 
lz如果没有else那就不同了,else与if是搭配使用的话就是先判断if,部位真值时就是运行else;如果是if+if的话,就是两个if是互不相关的
2011-05-14 10:48
犹豫情人
Rank: 2
来 自:天津
等 级:论坛游民
帖 子:58
专家分:24
注 册:2010-7-1
收藏
得分:1 
兄弟你可以把第二个程改成这样
#include <stdio.h>
main()
{
    int a,b,i,t,sum=0;
    scanf("%d%d",&a,&b);
    if(a>b)
    {
        t=b;
        b=a;
        a=t;
      
    }

    for(i=a;i<=b;i++)
    {
        sum=sum+i;
    }

    printf("%d",sum);
    getch();
}
运行结果就可以了!!!
2011-05-14 11:38
赵立华
Rank: 1
来 自:甘肃庆阳
等 级:新手上路
帖 子:7
专家分:8
注 册:2011-5-15
收藏
得分:1 
main()
{
    int a,b,i,t,sum=0;
    scanf("%d%d",&a,&b);
    if(a>b)
    {
        t=b;
        b=a;
        a=t;
       /* for(i=a;i<=b;i++)
        {
            sum=sum+i;
        }*/
/*把这些去了试试*/
    }

    for(i=a;i<=b;i++)
    {
        sum=sum+i;
    }

    printf("%d",sum);
    getch()
}  
2011-05-15 01:56
m252606539
Rank: 1
等 级:新手上路
帖 子:6
专家分:4
注 册:2011-4-8
收藏
得分:1 
我也新手,进来顶下
2011-05-15 07:46
wangnengchao
Rank: 2
等 级:论坛游民
帖 子:90
专家分:55
注 册:2011-5-2
收藏
得分:1 
你这哪是求两个数的和啊。。。。求的是等差数列的和
2011-05-15 09:41
快速回复:两个数求和,为什么会出现这样的结果? 谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018135 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved