解题思路1:
如果说你有必要打开题解来通关而不是交流讨论,那第一种方法很适合。它至少表明,实际上不打开题解,这道题有一个最基础的可以运行出来的思路:列出来。
三个数字六种排序方法,每一个都罗列出来,终归是一种办法。
1)条件是两个并存条件,用&&;
2)注意题目要求输出空格间隔
printf("%d %d %d",a,b,c);
就可以了。
参考代码1:
#includeint main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); if(a<b&&b<c) printf("%d %d %d",a,b,c); if(a<c&&c<b) printf("%d %d %d",a,c,b); if(b<a&&a<c) printf("%d %d %d",b,a,c); if(b<c&&c<a) printf("%d %d %d",b,c,a); if(c<a&&a<b) printf("%d %d %d",c,a,b); if(c<b&&b<a) printf("%d %d %d",c,b,a); return 0; }
解题思路2:
罗列需要按顺序,否则会乱,这个顺序就是三个数要排列的顺序,所以第二种方法指的是:交换顺序。
首先,我们要明白两个数如何交换。例如,如果说要交换a和b的值,留一个位置缓存就行,可以运行体会一下
int a,b,t; scanf("%d%d",&a,&b); t=a; a=b; b=t; printf("%d%d",a,b);
从小到大,那么第一步就是让最小的到第一个。
最小的数可能在三个位置(1,2,3),所以用三个位置的数字和第一位的数字比较,比出来最小的与第一位交换;
接下来第二小的,它有可能在两个位置(2,3),所以用后两个位置的数字和第二位的数字比较,比出来小的与第二位交换;
最后是最大的,它只有可能在一个位置(3),理论上它要和自己比,比出来小的交换。
这是理论上,实际上我们都知道,自己不用和自己比,也不用和自己交换。
所以真正写代码只要第一位和第二、三位比较,如果后面的小则交换;接着第二位和第三位比较,如果后面小则交换,三次比较就可以了。
参考代码2:
#include int main() { int a,b,c,d; scanf("%d%d%d",&a,&b,&c); if(a>b) { d=a; a=b; b=d; } if(a>c) { d=a; a=c; c=d; } if(b>c) { d=b; b=c; c=d; } return 0; }
解题思路3:
最后解释一下三目运算。
?是一种判断和选择,如果前面的是真,就执行后面括号内的第一个语句;如果前面的是假,就执行后面的第二个语句。
判断最大值思路是这样的:
(a和b中选出来大的)和c比,谁大谁就最大。
a和b比
(a>b)?
比的是谁大,a>b为真a就是较大值,为假b就是较大值
(a>b?a:b)
和c比
(a>b?a:b)>c?
(a>b?a:b)>c为真就留下ab比出来的较大值作为最大值,(a>b?a:b)>c为假c就是最大值
(a>b?a:b)>c?(a>b?a:b):c)
最小值和中间值同理。
明白了这些,那么整个主函数,只要输入输出就可以了。
代码:
#includeint main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); printf("%d %d %d\n",(a<b?a:b)<c?(ab?(ac?b:c)):(ac?c:b):a), (a>b?a:b)>c?(a>b?a:b):c); return 0; }
0.0分
27 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复