懂c语言的来啊!!!急!

来源:百度知道 编辑:UC知道 时间:2024/06/30 22:09:51
#include<stdio.h>
main()
{
int x,y,z,t;
scanf("%d,%d,%d",&x,&y,&z);
if(x>y) t=x,x=y,y=t;
else if (z>y) t=z,z=y,y=t;
else if (x>z) t=x,x=z,z=t;
printf("%d,%d,%d\n",y,z,x);
}
帮忙看看这程序哪不对,当比如输入8,5,2时显示的是8,2,5怎么回事,求高人指点!!

这程序很正常 你输入 8,5,2
就进行判断 而且 由于x>y 为真
只执行这句话 if(x>y) t=x,x=y,y=t;
而下面这两句不执行
else if (z>y) t=z,z=y,y=t;
else if (x>z) t=x,x=z,z=t;

于是 将x==8和y==5交换 x y z 的值分别为 5 8 2

所以 你按照 y z x 的顺序输出 就变成了 8 2 5

不知道你到底希望程序做什么,如果说清楚 可以帮你改下

正确代码如下:
#include<stdio.h>
int main()
{
int x,y,z,t;
scanf("%d,%d,%d",&x,&y,&z);
if(x>y) t=x,x=y,y=t;
if (z>y) t=z,z=y,y=t;
if (x>z) t=x,x=z,z=t;
printf("%d,%d,%d\n",y,z,x);
}
不能用if else语句 每次只能执行一次。

不是吧 你的程序竟然还可以出结果?
t=x,写成逗号 都不出错的么? if 外面也不需要套大括号的么?

因为x=8,y=5,z=2
所以x>y成立,执行交换x、y的操作 此时x=5 y=8 z=2
后面的else if都不执行
最后输出的顺序是y z x 所以就是8 2 5

没有处理y<z的情况。所以出错了。