正文开始
题目描述:
解题思想:
只需要进行数字间的两两比较,完成数据的有序输出
解题流程:
1. 捕捉(定义)三个整数,num1、num2、num3;
2. 将num1与num2进行比较,将较小的值存储到num1中;
3. 将num1与num3进行比较,将较小的值存储到num1中,这时候num1中存储的就是三个整数中最小的那个值;
4. 将num2与num3进行比较,将较小的值存储到num2中,这时候num2就是次小值。
代码呈现:
使用常规方法处理
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| #define _CRT_SECURE_NO_WARNINGS #include <stdio.h>
int main() { int num1, num2, num3; printf("请输入三个整数:"); scanf("%d %d %d", &num1, &num2, &num3);
if (num1 > num2) { int temp = num1; num1 = num2; num2 = temp; } if (num1 > num3) { int temp = num1; num1 = num3; num3 = temp; } if (num2 > num3) { int temp = num2; num2 = num3; num3 = temp; } printf("三个整数的排序结果为:%d %d %d", num1, num2, num3); return 0; }
|
运行结果如下:
使用指针处理
指针的基本概念:
数据都是存储在内存中的,指针就是内存地址
如果我们有了一块内存地址,就可以通过这个地址去访问这块内存中的数据
总结:指针就是内存地址,通过指针可以访问内存中的数据。
指针变量(用于保存内存地址):
指针类型的变量可以保存一个内存地址,它可以用来访问内存中的数据
例如:
画图理解:
指针解引用:
指针解引用就是通过指针变量去访问它指向的内存地址中的数据
1 2 3 4 5
| int a=10;
int *p=&a;
int b=*p;
|
解题思路:
定义三个整型指针变量 *pmin(小值指针), *pmax(大值指针), *pmid(中间值指针)
输入三个整数,并将三个指针变量指向这三个整数的内存地址
利用指针变量,比较三个整数,将较小的数存入pmin中,将较大的数存入pmax中,将中间的数存入pmid中
输出三个整数的排序结果
画图理解:
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #define _CRT_SECURE_NO_WARNINGS #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) { int *temp = pmin; pmin = pmid; pmid = temp; } if (*pmin > *pmax) { int *temp = pmin; pmin = pmax; pmax = temp; } if (*pmid > *pmax) { int *temp = pmid; pmid = pmax; pmax = temp; } printf("三个整数的排序结果为:%d %d %d", *pmin, *pmid, *pmax); return 0; }
|
运行结果如下:
完