一、利用选择判断
int main()
{
int a = 0, b = 0, c = 0;
scanf("%d %d %d", &a, &b, &c);
if (a < b)//通过判断将a和b最大值赋值到a中小值赋值到b中
{
int mp = 0;
mp = a;
a = b;
b = mp;
}
if (a < c)//通过判断将a和c最大值赋值到a中小值赋值到c中
{
int mp = 0;
mp = a;
a = c;
c = mp;
}
if (b < c)//通过判断将b和c最大值赋值到b中小值赋值到c中
{
int mp = 0;
mp = b;
b = c;
c = mp;
}
printf("%d %d %d", a, b, c);
return 0;
}
二、利用函数
涉及到函数取地址;
void ret(int *x, int *y)
{
int mp = 0;
mp = *x;
*x = *y;
*y = mp;
}
int main()
{
int a= 0, b = 0, c = 0;
scanf("%d %d %d", &a, &b, &c);
if (a < b)
{
ret(&a, &b);//因为需要修改地址内的值大小所以需要把地址传如;
}
if (a < c)
{
ret(&a, &c);
}
if (b < c)
{
ret(&b, &c);
}
printf("%d %d %d", a, b, c);
return 0;
}
三、利用条件操作符
int main()
{
int a, b, c,x,y,z;
scanf("%d %d %d", &a, &b, &c);
//判断最大值
x = a > b ? a : b;
y = x > c ? x : c;
z = x < c ? x : c;
//判断最小值
int q, p, s;
q = a < b ? a : b;
p = q < c ? q : c;
printf("%d %d %d", y,z,p);
return 0;
}
这是我能想到的三种算法,仅供参考。也许还有更多种解法还请大佬指点。