解题思路:据题目要求,按从小到大排序,那么就需要得到最大值,最小值以及中间值才能排序。也就是说要让电脑知道,什么是最大,什么是最小然后再来排序。
大小的比较有做差法(a-b>0),做商法(a\b>1)等等……
首先我们先做简单的,求最大值和最小值。
做题做的多的可能立马就把 min=(a<b?a:b)<c?(a<b?a:b):c 给打出来了,大概意思就是通过比较得出最小值。通过a<b?a:b得出a,b中间的较小值,再用a,b中间的较小值和c对比……
但是我注意到一点,就是中间的值较为难求,这也是这里最难的地方(大概?)
一共就3个数字,我们要就事论事,既然最大值和最小值都十分的好求,那么为什么不能利用(中间值)=a+b+c-最大值-最小值 来求出中间值呢?这样不香吗?
注意事项:不要把;和:混淆了,不然很难看出什么地方错误了。
参考代码:
#include<stdio.h>
int main()
{
int a,b,c,x1,x2,x3;
scanf("%d%d%d",&a,&b,&c);
x1=(a<b?a:b)<c?(a<b?a:b):c;
x3=(a>b?a:b)>c?(a>b?a:b):c;
x2=a+b+c-x1-x3;
printf("%d %d %d",x1,x2,x3);
}
0.0分
6 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复