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

image

 

C语言代码详细分析

代码功能概述

这个程序的作用是找出数组中的最小值和最大值

逐行代码解释

1. 结构体定义

struct pair
{
    int first, second;
};
  • 定义了一个叫pair的结构体
  • 里面有两个整数:firstsecond
  • 用来同时存储两个值(最小值和最大值)

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}

执行步骤

  1. 初始化

    • res.first = 19(最小值初始为19)
    • res.second = 19(最大值初始为19)
  2. 第1次循环 (i=1, array[1]=21):

    • 21 < 19?否 → 最小值不变
    • 21 > 19?是 → 最大值更新为21
    • 结果:min=19, max=21
  3. 第2次循环 (i=2, array[2]=3):

    • 3 < 19?是 → 最小值更新为3
    • 3 > 21?否 → 最大值不变
    • 结果:min=3, max=21
  4. 第3次循环 (i=3, array[3]=4):

    • 4 < 3?否 → 最小值不变
    • 4 > 21?否 → 最大值不变
    • 结果:min=3, max=21
  5. 第4次循环 (i=4, array[4]=0):

    • 0 < 3?是 → 最小值更新为0
    • 0 > 21?否 → 最大值不变
    • 结果:min=0, max=21
  6. 第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

关键知识点

  1. 数组初始化:如果给定的初始值少于数组大小,剩余位置会自动填充0
  2. 指针和数组array[i]等价于*(array+i)
  3. 结构体:可以把多个相关数据打包在一起
  4. 算法思想:遍历一次数组,同时维护最小值和最大值
posted @ 2025-08-31 21:13  量子我梦  阅读(16)  评论(0)    收藏  举报