|  | 
 
 发表于 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)                              ; // 由小到大输出
}
 | 
 |