c语言编辑程序,任意输入3个数,按从大到小的顺序输入

如题所述

#include<stdio.h>

main()

{

float a,b,c,t;

printf("请输入三个实数\n");

scanf("%f %f %f",&a,&b,&c);

if(a>=b&&b>=c)

   printf("%5.2f %5.2f %5.2f\n",a,b,c);

      else if(a>=c&&c>=b)

printf("%5.2f %5.2f %5.2f\n",a,c,b);

else if(b>=a&&a>=c)

printf("%5.2f %5.2f %5.2f\n",b,a,c);

else if(b>=c&&c>=a)

printf("%5.2f %5.2f %5.2f\n",b,c,a);

else if(c>=a&&a>=b)

printf("%5.2f %5.2f %5.2f\n",c,a,b);

else if(c>=b&&b>=a)

printf("%5.2f %5.2f %5.2f\n",c,b,a);

}

追问

这么多

有没有简单点的

任意输入三个实数要不要打出来啊

追答

printf("请输入三个实数\n");这一句有没有都行,只是个提示作用。第一个最简单了,没有再简单的。

追问

好的,我先输

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-07

思路:三个数按从大到小顺序输出,可以先求出三个数中的最大值和最小值,三个数的和减去最大值和最小值的差就是中间数,接着依次输出即可。

参考代码:

#include "stdio.h"
int main()
{
int a,b,c,max,min;
scanf("%d%d%d",&a,&b,&c);
if(a>b){
max=a;
min=b;
}
if(c>max) max=c;
if(min>c) min=c;
printf("从大到小排序:%d %d %d\n",max,a+b+c-max-min,min);       
}
/*
运行结果:
3 1 2
从大到小排序:3 2 1
*/

第2个回答  2014-11-24
#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;
} /*交换x,y的值*/
if(x>z)
{
t=z;z=x;x=t;
}/*交换x,z的值*/
if(y>z)
{
t=y;y=z;z=t;
}/*交换z,y的值*/
printf("small to big: %d %d %d\n",x,y,z);
}追问

能不能简单点,我们刚学,没学到的输上去老师会说

追答

给固定的三个数吗?

追问

任意的

追答

是不是键盘输入

追问

没说,就说任意输入

追答

那这个不就是任意输入的吗?

追问

我学计算机的,然后才上两三个月吧

追答

我专业也是计算机,不过我大二了,去年在学c今年在学c++

追问

要从大到小的

我是大一的,刚学

追答

那你输出把z跟x换一下

追问

没听课,不懂,老师让上机做作业的

那个汉字还要输出来吗

追答

我现在是我们学校大一的助教,你有什么问题可以问我,你可以加一下我

追问

那你扣扣给我

追答

你可以不用输出来的啊

看你的需求了喽

你就直接加这个百度知道吧!有问题直接问我就可以了。

追问

不懂,感觉好像没有汉字

追答

#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;
} /*交换x,y的值*/
if(x>z)
{
t=z;z=x;x=t;
}/*交换x,z的值*/
if(y>z)
{
t=y;y=z;z=t;
}/*交换z,y的值*/
printf("%d %d %d\n",z,y,x);
}

刚刚那个汉字是注释的,不会影响程序的

你在编译器上是没任何意义的

追问

为什么任意输入三个数字你要加t呢

追答

#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;
}
if(x>z)
{
t=z;z=x;x=t;
}
if(y>z)
{
t=y;y=z;z=t;
}
printf("%d %d %d\n",z,y,x);
}

追问

你能不能帮我改从大到小啊

追答

赋值啊,用于交换两个数啊

追问

😁

追答

现在给你的就是从大到小啊!

追问

谢谢

嘿嘿

追答

记得给采纳你

追问

好的

好多错误

追答

你的什么编译器

追问

下面的看到没

追答

#include
int main()
{
int x,y,z,t;
scanf("%d%d%d",&x,&y,&z);
if (x>y)
{
t=x;x=y;y=t;
}
if(x>z)
{
t=z;z=x;x=t;
}
if(y>z)
{
t=y;y=z;z=t;
}
printf("%d %d %d\n",z,y,x);
return 0;
}

你看看这个可以编译不

追问

main前面只学过加void

追答

那你把 int换成void

然后把倒数第二行return 0去掉

追问

然后你看看这个错了

追答

你看看我的编译器就可以运行

你重新打开一个文件,然后在运行试试

追问

我们用的就是这样,

追答

这个代码不会有错啊

就是你发给你们老师看,你们老师也不会说是错的,如果是c语言的话

最大的可能就是保存的有问题

追问

要编译

然后运行

没错就行

追答

肯定没错,

追问

就错了

你看看我刚才发给你的图片,下面有错误提示,你看看哪点错了

追答

我们用的不是那个编译器

我们用的是codeblocks

追问

好吧

追答

我在codeblocks跟vc.6.0都没问题

不知道为什么程序到你那就有问题了

追问

我也不知道

我们这应该是很古老的吧

追答

你换一个编译器吧

这是你们老师让你们用的编译器吗

追问

是啊

我们就这一个

还不联网

在不在

编译没有错

组建有错

标记错误还没有

追答

嗯嗯怎么啦

这个问题不是解决了吗?

追问

执行不了

追答

彻底无语

这只是一个很简单的小程序,怎么可能不可以执行

程序肯定没问题,

你操作过程应该有问题

追问

不管怎么样,还是谢谢你

追答

嗯嗯,以后有问题可以直接提问我

本回答被提问者和网友采纳
相似回答