1.题目举例
写代码将三个整数数按从大到小输出。
例如:
输入:2 3 1
输出:3 2 1
2.代码实现(最方便)
#include <stdio.h>
int main()
{
int a = 2;
int b = 3;
int c = 1;
scanf("%d%d%d",&a, &b,&c);
if(a<b)
{
int tmp = a;//使用tmp当作中间变量
a = b;
b = tmp;
}
if(a<c)
{
int tmp = a;
a = c;
c = tmp;
}
if(b<c)
{
int tmp = b;
b = c;
c = tmp;
}
printf("a=%d b=%d c=%d\n", a, b, c);
return 0;
}
3代码讲解(解题思路)
- 将a.b.c三个随机数,按从大到小排序,依次为a>=b>=c.
- 先判断a<b,但是你想要a>b,怎么办呢?
- 那就采用赋值的方法,将大的b值赋值给a,a值赋值给b。
- 但是直接赋值a=b,b=a.没有变化,如题输入:2 3 1,把b==3赋值a,a==3;再把a==3赋值b,导致a,b相等。这时就需要一个临时变量(tap)
- 最后根据上述方法,再判断if(a<c),使得a>c,判断b和c的位置,使得b>c.
4.其他方法
#include <stdio.h>
int main()
{
int a, b, c, max, min;
scanf_s("%d %d %d", &a, &b, &c);
if (a > b)
{
max = a;
min = b;
}
else
{
max = b;
min = a;
}
if (c < min)
{
min = c;
}
if (c > max)
{
max = c;
}
printf("%d %d %d\n", max, a + b + c - max - min, min);
}
还有其他方法,但是不够方便,便不在举例。
5.最后
如讲的不够清晰明了,请私信评论,麻烦点赞关注一波,我将持续讲解更多小知识。