我是c初学者,有个程序,不知哪里不对?谢谢了!

来源:百度知道 编辑:UC知道 时间:2024/06/23 22:40:15
#include<stdio.h>
void main()
{
int x,y,z,t;
scanf("%dx",&x);
scanf("%dy",&y);
scanf("%dz",&z);
if(x>y){x=t,x=y,y=t;}
if(x>z){x=t,x=z,z=t;}
if(y>z){y=t,y=z,z=t;}
printf("x y z")
}

这段代码的关键错误是你值交换部分代码写的不对,例如if(x>y){x=t,x=y,y=t;}
在x=t时,t中并没有任何值,而且是将t的值赋给x。即使t中有值,在x=y时,y的值又会将x中的t值覆盖。
正确的交换代码应该是
if(x>y){t=x,x=y,y=t;}

printf("x y z")也是一个很重要的方面,你要注意啊!!!

#include<stdio.h>
void main()
{
int x,y,z,t;
scanf("%d",&x);
scanf("%d",&y);
scanf("%d",&z);
if(x>y){x=t,x=y,y=t;}
if(x>z){x=t,x=z,z=t;}
if(y>z){y=t,y=z,z=t;}
printf("%d %d %d",x y z);
}

你这个程序的意思是任意输入三个数,然后从小到大输出是吧
只用一个scanf(%d,%d,%d,&x,&y,&z,);就可以输入多个数
另外,如果x>y 还要比较y和z的大小,如果用if语句表示,应该是:
if(x>y)
{if(y>z) printf(%d,%d,%d,x,y,z,);
if(z>y) printf(%d,%d,%d,x,z,y);
}这是x>y时,还有x>z,y>z,z>y,z>x时的情况,不过基本程序是一样的,当然这是比较三个数的大小,这种看似很笨的方法其实是最简单的了,但如果是四个数的话,就要用到数组了。
另外只用printf("x y z")那么输出的结果就是字符串x y z不会出它们所表示的数字,