本帖最后由 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) ; // 由小到大输出
}
|