|
发表于 2023-2-24 22:39:14
|
显示全部楼层
本帖最后由 jackz007 于 2023-2-24 23:15 编辑
- #include<stdio.h>
- int main()
- {
- int a , b , c , t ;
- printf("输入三个数:") ;
- scanf("%d,%d,%d",&a,&b,&c) ;
- /* 下面的代码确保 a < b */
- if(a > b) {
- t = a ; // 在覆盖变量 a 之前,要先将其值交给临时变量 t
- a = b ; // 先用变量 b 的值覆盖变量 a
- b = t ; // 再用之前变量 a 的值覆盖变量 b,达到a、b值互换的目的
- }
- /* 下面的代码确保 a < c */
- if(a > c) {
- t = a ; // 在覆盖变量 a 之前,要先将其值交给临时变量 t
- a = c ; // 先用变量 c 的值覆盖变量 a
- c = t ; // 再用之前变量 a 的值覆盖变量 c,达到a、c值互换的目的
- }
- /* 上面的代码已经确定 a 在 a、b、c 中最小 */
- /* 下面的代码只需要确保 b 比 c 小即可 */
- if(b > c) {
- t = b ; // 在覆盖变量 b 之前,要先把 b 的值交给临时变量 t
- b = c ; // 先用变量 c 的值覆盖变量 b
- c = t ; // 再用之前变量 b 的值覆盖变量 c,达到b、c值互换的目的
- }
- printf("%d,%d,%d\n",a,b,c) ; //由小到大输出
- }
复制代码
下面是我利用三目运算符结合指针简化的代码,谨供楼主参考
- #include<stdio.h>
- int main(void)
- {
- int a , b , c , * p1 , * p2 , * p3 ;
- printf("输入三个数 : ") ;
- scanf("%d,%d,%d", & a , & b , & c) ;
- p1 = (a < b && a < c) ? & a : (b < a && b < c) ? & b : & c ;
- p3 = (a > b && a > c) ? & a : (b > a && b > c) ? & b : & c ;
- p2 = (a > * p1 && a < * p3) ? & a : (b > * p1 && b < * p3) ? & b : & c ;
- printf("%d,%d,%d\n" , * p1 , * p2 , * p3) ; // 由小到大输出
- }
复制代码 |
|