注册 登录
编程论坛 C++教室

关于比较后输出的问题。。。不知道什么地方出错了。。。

冒着傻气 发布于 2010-03-30 19:22, 759 次点击
a,b,c按从大到小输出的程序,自己实在不知道错什么地方了,各位帮一下,谢啦!!(感觉输出的值好像是溢出了,为什么会发生溢出呢?)
#include<iostream>
using namespace std;
int main()
{
    int a,b,c,d;
    cin>>a>>b>>c;
    if(a<b)
        d=a;a=b;b=d;   
    if(a<c)
        d=a;c=a,a=d;
    if(b<c)
        d=c;c=b;b=c;
    cout<<a<<" "<<b<<" "<<c<<endl;
    return 0;


}

9 回复
#2
james2309322010-03-30 19:41
用异常处理try catch
#3
冒着傻气2010-03-30 19:51
回复 2楼 james230932
不明白楼上什么意思。。。
#4
ljt2010-03-30 22:20
以下是引用冒着傻气在2010-3-30 19:22:42的发言:

a,b,c按从大到小输出的程序,自己实在不知道错什么地方了,各位帮一下,谢啦!!(感觉输出的值好像是溢出了,为什么会发生溢出呢?)
#include
using namespace std;
int main()
{
    int a,b,c,d;
    cin>>a>>b>>c;
    if(a
你那交换顺序错了
应该是这样:
    if(a<b)
        d=a;a=b;b=d;   
    if(a<c)
        d=a;a=c;c=d;
    if(b<c)
        d=c;c=b;b=d;
#5
james2309322010-03-31 09:11
以下是引用ljt在2010-3-30 22:20:29的发言:

你那交换顺序错了
应该是这样:
    if(a
貌似楼上的还不行吧。。
#6
书呆2010-03-31 09:58
    if(a<b)
    {
        d=a;
        a=b;
        b=d;
    }
    if(a<c)
    {
        d=a;
        a=c;
        c=d;
    }
    if(b<c)
    {
        d=c;
        c=b;
        b=d;
    }
#7
ljt2010-03-31 20:11
以下是引用james230932在2010-3-31 09:11:59的发言:

貌似楼上的还不行吧。。
行,我都运行出来了
#8
shiyuehai2010-03-31 21:37
程序代码:
if(a<b)
        d=a;a=b;b=d;   
    if(a<c)
        d=a;c=a,a=d;
    if(b<c)
        d=c;c=b;b=c;
注意的第二个if里面的内容,首先,你先保护好a的值了,既然a的值保护好了,下一步就是改变a的值,但你确把a的值赋给了c,即此时c的值跟d的值都是a,最后你把d的值赋给a,造成了a跟c相等了,正确的应该是d=a;a=c;c=d;还有前面那些是3个语句了,应该用大括号封装起来,还有标点也错了,第三个也错了,应该是b=d;
程序代码:
#include<iostream>
using namespace std;
int main()
{
    int a,b,c,d;
    cin>>a>>b>>c;
    if(a<b)
    {
        d=a;
        a=b;
        b=d;
    }   
     if(a<c)
    {
        d=a;
        a=c;
        c=d;
    }
    if(b<c)
    {
        d=c;
        c=b;
        b=d;
    }
    cout<<a<<" "<<b<<" "<<c<<endl;
    return 0;


}

按照你思路改的,应该可以了

[ 本帖最后由 shiyuehai 于 2010-3-31 21:39 编辑 ]
#9
亚小南2010-04-01 16:50
楼上说得已经很清楚了
首先是交换错误
再就是缺少大括号
#10
冒着傻气2010-04-01 20:59
谢谢大家啦
1