解题思路:
论坛是个好东西,写完自己的代码后要去多逛逛
下面来总结这道题的三种解法
方法一:
三目运算符求解
最大数:(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:(b>c?b:c)):(a<c?(b>c?c:b):a)
上面三种数,中间数比较难想,但画个图解后也很容易得出
代码如下:
#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:(b>c?b:c)):(a<c?(b>c?c:b):a), (a>b?a:b)>c?(a>b?a:b):c); return 0;}
方法二:
利用冒泡排序的思想:
#include <stdio.h>int main(){ int t,a,b,c; scanf("%d%d%d",&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;} printf("%d %d %d ",a,b,c); return 0;}
方法三:
因为只有三个数,且其中两个数特别好求,那我们可以剑走偏锋,先求出三个数的和,再用和减去最大的数和最小的数,剩下的就是中间数拉!
#include<stdio.h>int main(){ int a,b,c,mid,min,max; scanf("%d%d%d", &a,&b,&c); min =(a<b?a:b)<c?(a<b?a:b):c; max =(a>b?a:b)>c?(a>b?a:b):c; mid =a+b+c-min-max; printf("%d %d %d",min,mid,max); return 0; }
没有做不到,只有想不到,继续加油!
0.0分
1 人评分
C二级辅导-统计字符 (C语言代码)浏览:528 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:562 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:1110 |
Wu-求圆的面积 (C++代码)浏览:1994 |
简单的a+b (C语言代码)浏览:661 |
矩形面积交 (C语言代码)浏览:1433 |
简单的a+b (C语言代码)浏览:857 |
C语言训练-8除不尽的数 (C语言代码)浏览:1469 |
数列问题 (C语言代码)浏览:1068 |
C语言训练-字符串正反连接 (C语言代码)浏览:653 |