找出数组中的最小值和最大值

C语言代码详细分析
代码功能概述
这个程序的作用是找出数组中的最小值和最大值。
逐行代码解释
1. 结构体定义
struct pair
{
int first, second;
};
- 定义了一个叫
pair的结构体 - 里面有两个整数:
first和second - 用来同时存储两个值(最小值和最大值)
2. 函数定义
struct pair get_min_max(int* array, int len)
- 函数名:
get_min_max - 参数:
int* array:指向整数数组的指针int len:数组的长度
- 返回值:
struct pair类型,包含最小值和最大值
3. 函数内部逻辑
初始化
int i;
struct pair res;
res.first = array[0]; // 假设第一个元素是最小值
res.second = array[0]; // 假设第一个元素是最大值
遍历数组
for (i=1; i<len; i++)
{
if (array[i] < res.first)
res.first = array[i]; // 找到更小的值,更新最小值
if (array[i] > res.second)
res.second = array[i]; // 找到更大的值,更新最大值
}
程序执行过程
输入数据
int array[6] = {19, 21, 3, 4};
注意:数组定义了6个位置,但只给了4个值,所以实际上是: {19, 21, 3, 4, 0, 0}
执行步骤
-
初始化:
res.first = 19(最小值初始为19)res.second = 19(最大值初始为19)
-
第1次循环 (i=1, array[1]=21):
- 21 < 19?否 → 最小值不变
- 21 > 19?是 → 最大值更新为21
- 结果:min=19, max=21
-
第2次循环 (i=2, array[2]=3):
- 3 < 19?是 → 最小值更新为3
- 3 > 21?否 → 最大值不变
- 结果:min=3, max=21
-
第3次循环 (i=3, array[3]=4):
- 4 < 3?否 → 最小值不变
- 4 > 21?否 → 最大值不变
- 结果:min=3, max=21
-
第4次循环 (i=4, array[4]=0):
- 0 < 3?是 → 最小值更新为0
- 0 > 21?否 → 最大值不变
- 结果:min=0, max=21
-
第5次循环 (i=5, array[5]=0):
- 0 < 0?否 → 最小值不变
- 0 > 21?否 → 最大值不变
- 结果:min=0, max=21
最终输出
min=0,max=21
答案分析
根据程序执行结果,正确答案是:D. min=0,max=21
为什么其他选项错误:
- A. min=0,max=6 ❌ - 最大值应该是21,不是6
- B. min=1,max=20 ❌ - 最小值应该是0,最大值应该是21
- C. min=1,max=19 ❌ - 最小值应该是0,最大值应该是21
关键知识点
- 数组初始化:如果给定的初始值少于数组大小,剩余位置会自动填充0
- 指针和数组:
array[i]等价于*(array+i) - 结构体:可以把多个相关数据打包在一起
- 算法思想:遍历一次数组,同时维护最小值和最大值

浙公网安备 33010602011771号