将三个整数按从大到小输出
- 1.输入三个整数
- 2.最大的值放在a中,最小值放在c中,剩余的一个放在b
- step1:a和b比较
- step2:a和c比较
- step3:b和c比较
- 3.最终的代码
1.输入三个整数
先写好main函数、头文件
#include <stdio.h>
int main()
{
return 0;
}
调用scanf()函数,输入三个整数
#include <stdio.h>
int main()
{ int a = 0,b = 0,c = 0; //创建一个变量就给他初始化是个好习惯
scanf("%d %d %d",&a,&b,&c);
return 0;
}
2.最大的值放在a中,最小值放在c中,剩余的一个放在b
前提我让a存这三个数中的最大值,c存最小值,b存剩下的那个
思路:a、b、c依次比较
step1:a和b比较
a和b比较,如果a比b大,那就不用管a和b了;如果a比b小,就要把a、b的值交换,看下面这段代码
if(a < b)
{ a = b;
b = a;
}
这样显然是错的,因为上面这两个表达式执行时,(假设输入a = 1,b = 5)a = b,把b的值赋给a,此时a = 5。继续执行b = a,会发现b还是5。
就好比两个杯子a、b分别装的红酒和橙汁,现在我想让杯子a装橙汁,b装红酒,那肯定要借助第三个杯子tem,让b里的橙汁先倒入tem,再将a中的红酒倒入b,最后把tem中的橙汁倒入a,问题就解决了~因此,可以这样写:
if(a < b)
{ int tem = b;
b = a;
a = tem
}
这样,输入的前两个数中,大的那个就赋给了a,小的那个赋给了b
step2:a和c比较
要使a中存三个数中最大的那个,a b比较完了就要比较a c了
如果a > c,就不需要操作
如果a < c,跟上面同理
if(a < c)
{ int tem = c;
c = a;
a = tem;
}
step3:b和c比较
经过step1和step2,a中已经存了这三个数中最大的那个
接下来只需要让c是剩下那俩数中较小的内个
if (b < c)
{ int tem = b;
b = c;
c = tem;
}
3.最终的代码
把上面三部分合起来,再依次print出a、b、c的值,排序就完成了
#include <stdio.h>
int main()
{
int a = 0,b = 0,c = 0;
scanf("%d %d %d",&a,&b,&c);
if(a < b)
{ int tem = b;
b = a;
a = tem
}
if(a < c)
{ int tem = c;
c = a;
a = tem;
}
if (b < c)
{ int tem = b;
b = c;
c = tem;
}
//最后abc按顺序输出即可
printf("%d %d %d \n",a,b,c);
return 0;
}