解题思路和注意事项:


用了三目运算符把三个数的排序搞出来了,见下文:


最小数:(a<b?a:b)<c?(a<b?a:b):c

最大数:(a>b?a:b)>c?(a>b?a:b):c

中间数:a<b?(a>c?a:(c<b?c:b)):(a<c?a:(b>c?b:c))


参考代码:

#include<stdio.h>
int main()
{
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	printf("%d %d %d\n",(a<b?a:b)<c?(a<b?a:b):c,
		a<b?(a>c?a:(c<b?c:b)):(a<c?a:(b>c?b:c)),
		(a>b?a:b)>c?(a>b?a:b):c);
	return 0;
}


点赞(13)
 

0.0分

88 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 62 条评论

lwd 3年前 回复TA
#include<stdio.h>
	int main() 
	{
	    int a,b,c,t,m;
	    
		 
	    scanf("%d%d%d",&a,&b,&c);
	    
	    if(b<a)
		{
			t=a;
	    	a=b;
	    
	    	b=t;
		}
		 if(c<b)
		 {
		 	m=c;
		 	t=c;
			c=b;
		
			b=t;
			if (m<a)
		   {
			t=a;
		    a=m;
			
			b=t;
		   }   
         }
	    printf("%d %d %d",a,b,c);
	}
KK 3年前 回复TA
@大当家 冒泡法和选择排序法是c最基本的两个排序法,数据结构后期还有插入排序希尔排序快速排序等。头文件少个#;printf提示多余删去;根据要求最后的那个%d后要加个空格,其他没啥问题
羡鱼 3年前 回复TA
各位大佬我这样写有什么问题吗?
#include<iostream>
using namespace std;
main()
{
int a,b,c,t;
  cout<<"a,b,c=";
  cin>>a>>b>>c;
if(a>b)
 {
 	t=a;
	a=b;
	b=t;	
 }
if(a>c)
{
	t=a;
	a=c;
	c=t;
} 
if(b>c)
{
	t=b;
	b=c;
	c=t;
}
  cout<<a<<'\t'<<b<<'\t'<<c<<endl;
}
123 3年前 回复TA
@张馨楠 a<b?a:b   判断a<b是否成立,成立则为a,否则为b;  大概是这样的
小鹏 3年前 回复TA
@张馨楠 这是在比大小吧,一直是较小的两个比较
秋清深 3年前 回复TA
@大当家 好吧,我看错了,程序应该没问题,但是main函数应该用int吧
秋清深 3年前 回复TA
@大当家 for循环只保证了第三个最大,没有保证第一个最小(第一个i的for循环没看出有什么作用)
秋清深 3年前 回复TA
@洛阳 MIL错了,若c<a<b,中间的是a,你的结果是c
周梦婷 3年前 回复TA
@一块键盘 是挺好,但是中间那个我看不懂啊
张馨楠 3年前 回复TA
最小数:(a<b?a:b)<c?(a<b?a:b):c

最大数:(a>b?a:b)>c?(a>b?a:b):c

中间数:a<b?(a>c?a:(c<b?c:b)):(a<c?a:(b>c?b:c))


是什么意思