、从键盘输入4个整数,分别存入整型变量a、b、c、d中,并按从大到小的顺序显示出来。

#include <stdio.h>
main()
{
int a,b,c,d,t;
printf("please input a,b,c,d");
scanf("%d%d%d%d",&a,&b,&c,&d);
if(a<b)
t=a;a=b;b=t;
if(a<c)
t=a ;a=c;c=t;
if(a<d)
t=a;a=d;d=t;
if(b<c)
t=b;b=c;c=t;
if(b<d)
t=b;b=d;d=t;
if(c<d)
t=c;c=d;d=t;
printf("从大到小排列");
printf("%d>%d>%d>%d",a,b,c,d);
}
为什么我的程序有的结果对,有的结果不对啊,求大神帮忙看看


if(a<b)
t=a;a=b;b=t;之类的
改成
if(a<b)
t=a,a=b,b=t;
就是前两个分号换成逗号。。。。
或者
if(a<b)
{

t=a;
a=b;
b=t;
}

你之前那么写,if条件指挥判断执行或者不执行t=a,之后的a=b b=t,都不受限制,所如果a>=b不会执行t=a,但是会执行b=t,因为t没有初值,所以会报错。。。。追问

结果正确,麻烦你告诉我这是为什么啊

追答

后面不是解释了么,
就用你的第一个if判断来说吧,
if(a=b,如a=7,b=4就会变成下面这样子
if(a=b所以这句跳过,所以t并没有被赋值7
}

a=b; //因为与if判断无关所以执行,结果a=4,b=4,t还是没有赋值

b=t; //因为t没有被赋值,所以b=t无法执行,所以就报错了。。。。

温馨提示:答案为网友推荐,仅供参考
相似回答