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; }