c语言,输入三个不同的数字,按从从大到小输出

//输入三个不同的数字,按从从大到小输出#include<stdio.h>
int main()
{int x,y,z,max;
printf("请输入三个不同的数字,每输入一个数字用逗号隔开\n");
scanf("%d,%d,d%",&x,&y,&z);
if(x>y) {
if(z>x)
{
printf("输入的三个数字由大到小排列为:",z,x,y);
}
else
{
if(y>z)
{
printf("输入的三个数字由大到小排列为:",x,y,z);
}
else
{
printf("输入的三个数字由大到小排列为:",x,y,z);
}
}
}
else
{
if(z>x)
{
printf("输入的三个数字由大到小排列为:",z,x,y);
}
else
{
if(y>z)
{
printf("输入的三个数字由大到小排列为:",x,y,z);
}
else
{
printf("输入的三个数字由大到小排列为:",x,y,z);
}
}
}
return 0;
}
输出结果没有排列,我错哪了?

1、参考2楼,修改两个语法错误:scanf("%d,%d,d%",&x,&y,&z);应该是:scanf("%d,%d,%d",&x,&y,&z);输出语句:printf("输入的三个数字由大到小排列为:%d,%d,%d",z,y,x);2、算法太乱,应该先对x,y,z排序,排序的算法是两两相比较,如果前者大就交换,最后得到x,y,z是从小到大, 输出时反序z,y,x就行了,简洁完整并通过了调试的代码如下:#include<stdio.h>
int main()
{
int x,y,z,t;
printf("请输入三个不同的数字,每输入一个数字用逗号隔开\n");
scanf("%d,%d,%d",&x,&y,&z);
if(x>y) {t=x;x=y;y=t;}
if(x>z) {t=x;x=z;z=t;}
if(y>z) {t=y;y=z;z=t;}
printf("输入的三个数字由大到小排列为:%d,%d,%d",z,y,x);

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-02-08
LS各位说的不错,LZ的格式化输入输出都写错了,输入误写了d%这样的东西,
输出里没加格式化标记。
但是,各位ls的朋友们,LZ的代码你们都懒得编译吧?LZ你的算法有误。。。
我贴一个正确的,LZ是通过不断判断条件的方法来组合结果的,但是LZ,
关于第一个if(x>y)相对应的那个else,这个情况里y>=x,那么之后的 if(z>x)
里,显然这时的这个情况是没意义的吧?y和z的大小关系不知道啊。
当然啦,我也可能老眼昏花看错啦,但LZ仔细看看吧?相信其它问题可能
也有,反正我编译以后结果不对。
我贴一个很有趣的冒泡排序思想的算法好了:
#include<stdio.h>
int main()
{
int x,y,z,tmp;
printf("请输入三个不同的数字,每输入一个数字用逗号隔开\n");
scanf("%d,%d,%d",&x,&y,&z);
if(x>y)
{
tmp = x;
x = y;
y = tmp;
}
if(y>z)
{
tmp = y;
y = z;
z = tmp;
}
if(x>y)
{
tmp = y;
y = x;
x = tmp;
}
printf("输入的三个数字由大到小排列为:%d,%d,%d\n",x,y,z);
return 0;
}
第2个回答  2013-02-08
scanf("%d,%d,d%",&x,&y,&z);
打错了,应该是:scanf("%d,%d,%d",&x,&y,&z);第三个%d弄错了
printf("输入的三个数字由大到小排列为:",z,x,y);
改成:printf("输入的三个数字由大到小排列为:%d,%d,%d",z,x,y);才能有输出
先把这些改了再看看,结果对不对
第3个回答  2013-02-08
你把每一个printf函数里面都加这么一段:%d,%d,%d\n,

比如第一个:改成 printf("输入的三个数字由大到小排列为:%d,%d,%d\n",z,x,y);
后面的也这样改就可以了。
第4个回答  2013-02-08
你的输出不对啊 printf("输入的三个数字由大到小排列为:",x,y,z);改为 printf("输入的三个数字由大到小排列为:%8d%8d%8d",x,y,z);(8是用来控制间隔的)
第5个回答  2013-02-08
LS各位说的不错,LZ的格式化输入输出都写错了,输入误写了d%这样的东西,
输出里没加格式化标记。
但是,各位ls的朋友们,LZ的代码你们都懒得编译吧?LZ你的算法有误。。。
我贴一个正确的,LZ是通过不断判断条件的方法来组合结果的,但是LZ,
关于第一个if(x>y)相对应的那个else,这个情况里y>=x,那么之后的 if(z>x)
里,显然这时的这个情况是没意义的吧?y和z的大小关系不知道啊。
当然啦,我也可能老眼昏花看错啦,但LZ仔细看看吧?相信其它问题可能
也有,反正我编译以后结果不对。
我贴一个很有趣的冒泡排序思想的算法好了:
#include<stdio.h>
int main()
{
int x,y,z,tmp;
printf("请输入三个不同的数字,每输入一个数字用逗号隔开\n");
scanf("%d,%d,%d",&x,&y,&z);
if(x>y)
{
tmp = x;
x = y;
y = tmp;
}
if(y>z)
{
tmp = y;
y = z;
z = tmp;
}
if(x>y)
{
tmp = y;
y = x;
x = tmp;
}
printf("输入的三个数字由大到小排列为:%d,%d,%d\n",x,y,z);
return 0;
}
第6个回答  2013-02-08
scanf("%d,%d,d%",&x,&y,&z);
打错了,应该是:scanf("%d,%d,%d",&x,&y,&z);第三个%d弄错了
printf("输入的三个数字由大到小排列为:",z,x,y);
改成:printf("输入的三个数字由大到小排列为:%d,%d,%d",z,x,y);才能有输出
先把这些改了再看看,结果对不对
第7个回答  2013-02-08
你把每一个printf函数里面都加这么一段:%d,%d,%d\n,

比如第一个:改成 printf("输入的三个数字由大到小排列为:%d,%d,%d\n",z,x,y);
后面的也这样改就可以了。
第8个回答  2013-02-08
你的输出不对啊 printf("输入的三个数字由大到小排列为:",x,y,z);改为 printf("输入的三个数字由大到小排列为:%8d%8d%8d",x,y,z);(8是用来控制间隔的)
相似回答
大家正在搜