正文开始
题目描述:
解题思想:
只需要进行数字间的两两比较,完成数据的有序输出
解题流程:
1. 捕捉(定义)三个整数,num1、num2、num3;
2. 将num1与num2进行比较,将较小的值存储到num1中;
3. 将num1与num3进行比较,将较小的值存储到num1中,这时候num1中存储的就是三个整数中最小的那个值;
4. 将num2与num3进行比较,将较小的值存储到num2中,这时候num2就是次小值。
代码呈现:
使用常规方法处理
代码如下:
#define _CRT_SECURE_NO_WARNINGS //宏定义,防止VS出现不安全的警告
#include <stdio.h> //标准输入输出库
//#include <stdlib.h> //system的头文件
int main()
{
int num1, num2, num3; //定义三个整数
printf("请输入三个整数:"); //提示输入
scanf("%d %d %d", &num1, &num2, &num3); //输入三个整数
if (num1 > num2) //比较num1与num2,将较小的数存入num1
{
int temp = num1; //定义一个中间变量temp,用于临时存储num1的值
num1 = num2;
num2 = temp;
}
if (num1 > num3) //比较num1与num3,将较小的数存入num1
{
int temp = num1; //定义一个中间变量temp,用于临时存储num1的值
num1 = num3;
num3 = temp;
}
if (num2 > num3) //比较num2与num3,将较小的数存入num2
{
int temp = num2; //定义一个中间变量temp,用于临时存储num2的值
num2 = num3;
num3 = temp;
}
printf("三个整数的排序结果为:%d %d %d", num1, num2, num3); //输出三个整数的排序结果
//system("pause"); //暂停程序,等待用户输入(可要可不要,可以把它注释掉),低版本编译器可能会出现一闪而过的黑框,使用这个解决。
return 0;
}
运行结果如下:
使用指针处理
指针的基本概念:
数据都是存储在内存中的,指针就是内存地址
如果我们有了一块内存地址,就可以通过这个地址去访问这块内存中的数据
总结:指针就是内存地址,通过指针可以访问内存中的数据。
指针变量(用于保存内存地址):
指针类型的变量可以保存一个内存地址,它可以用来访问内存中的数据
例如:
int a=10; //定义一个整型变量a,并赋值为10
int *p=&a; //定义一个指针变量p,并将a的内存地址赋值给p
画图理解:
指针解引用:
指针解引用就是通过指针变量去访问它指向的内存地址中的数据
int a=10; //定义一个整型变量a,并赋值为10
int *p=&a; //定义一个指针变量p,并将a的内存地址赋值给p
int b=*p; //通过指针p去访问a的内存地址中的数据,并将数据赋值给b
解题思路:
-
定义三个整型指针变量 *pmin(小值指针), *pmax(大值指针), *pmid(中间值指针)
-
输入三个整数,并将三个指针变量指向这三个整数的内存地址
-
利用指针变量,比较三个整数,将较小的数存入pmin中,将较大的数存入pmax中,将中间的数存入pmid中
-
输出三个整数的排序结果
画图理解:
代码如下:
#define _CRT_SECURE_NO_WARNINGS //宏定义,防止VS出现不安全的警告
#include <stdio.h> //标准输入输出库
int main()
{
int num1, num2, num3; //定义三个整数
printf("请输入三个整数:"); //提示输入
scanf("%d %d %d", &num1, &num2, &num3); //输入三个整数
int *pmin = &num1;
int *pmid = &num2;
int *pmax = &num3; //定义三个指针变量
if (*pmin > *pmid) //指针解引用,*pmin与*pmid指向交换,也就是地址的交换,所以这里比较的是值
{
int *temp = pmin; //定义一个中间指针变量temp,用于临时存储*pmin的地址
pmin = pmid;
pmid = temp;
}
if (*pmin > *pmax) //指针解引用,*pmin与*pmax指向交换,也就是地址的交换,所以这里比较的是值
{
int *temp = pmin; //定义一个中间指针变量temp,用于临时存储pmin的地址
pmin = pmax;
pmax = temp;
}
if (*pmid > *pmax) //指针解引用,*pmid与*pmax指向交换,也就是地址的交换,所以这里比较的是值
{
int *temp = pmid; //定义一个中间指针变量temp,用于临时存储pmid的地址
pmid = pmax;
pmax = temp;
}
printf("三个整数的排序结果为:%d %d %d", *pmin, *pmid, *pmax); //输出三个整数的排序结果
//system("pause"); //暂停程序,等待用户输入(可要可不要,可以把它注释掉),低版本编译器可能会出现一闪而过的黑框,使用这个解决。
return 0;
}
运行结果如下:
完