问题分析:三个整数(a、b、c)相互比较,调整顺序,将最大值放在a,中间值放在b,最小值放在c
解决过程:
1、键盘输入三个整数;
2、三个整数相互比较,调整顺序;
3、显示输出 a、b、c ;
运行环境:Visual Studio 2022
初始版-代码:
#include <stdio.h>
#include <string.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
int tmp = 0;
//输入
scanf("%d %d %d", &a, &b, &c);
//调整顺序
if (a < b)
{
tmp = a;
a = b;
b = tmp;
}
if (a < c)
{
tmp = a;
a = c;
c = tmp;
}
if (b < c)
{
tmp = b;
b = c;
c = tmp;
}
//输出 - 从大到小
printf("%d %d %d", a, b, c);
return 0;
}
进阶版-代码:
#include <stdio.h>
#include <string.h>
void Swap(int *x,int *y)
{
int tmp = 0;
tmp = *x; //解引用
*x = *y;
*y = tmp;
}
int main()
{
int a = 0;
int b = 0;
int c = 0;
//输入
scanf("%d%d%d", &a, &b, &c);
//调整顺序
if (a < b)
{
Swap(&a, &b);
}
if (a < c)
{
Swap(&a, &c);
}
if (b < c)
{
Swap(&b, &c);
}
//输出 - 从大到小
printf("%d %d %d\n", a, b, c);
return 0;
}
补充:进阶版-代码可能部分C语言初学者会看不懂,下面就此问题简单展开一下吧!
1、 <比较过程> 须重复使用,故定义一个Swap函数,直接调用,完美解决该功能;
2、int *x、int *y
// x、y是指针变量,用于存放地址
// * 说明 x,y 是指针变量
// int 说明 x,y 执行的对象是int类型
3、*x、*y
// * 解引用操作
// *x 就是通过 x 存放的地址找到 a;*y 就是通过 y 存放的地址找到 b
举例: