C语言如何输出数组最大值和最小值?

99ANYc3cd6
预计阅读时长 12 分钟
位置: 首页 C语言 正文

方法1:使用循环遍历数组

这是最直接的方法,适用于任何大小的数组。

代码示例

#include <stdio.h>
int main() {
    int arr[] = {12, 45, 7, 23, 56, 9, 34};
    int size = sizeof(arr) / sizeof(arr[0]); // 计算数组长度
    if (size == 0) {
        printf("数组为空!\n");
        return 0;
    }
    int max = arr[0]; // 假设第一个元素是最大值
    int min = arr[0]; // 假设第一个元素是最小值
    for (int i = 1; i < size; i++) {
        if (arr[i] > max) {
            max = arr[i]; // 更新最大值
        }
        if (arr[i] < min) {
            min = arr[i]; // 更新最小值
        }
    }
    printf("最大值: %d\n", max);
    printf("最小值: %d\n", min);
    return 0;
}

输出

最大值: 56
最小值: 7

方法2:使用指针遍历数组

如果不想用数组下标,可以用指针遍历数组。

代码示例

#include <stdio.h>
int main() {
    int arr[] = {12, 45, 7, 23, 56, 9, 34};
    int size = sizeof(arr) / sizeof(arr[0]);
    if (size == 0) {
        printf("数组为空!\n");
        return 0;
    }
    int *ptr = arr;
    int max = *ptr;
    int min = *ptr;
    for (int i = 1; i < size; i++) {
        ptr++;
        if (*ptr > max) {
            max = *ptr;
        }
        if (*ptr < min) {
            min = *ptr;
        }
    }
    printf("最大值: %d\n", max);
    printf("最小值: %d\n", min);
    return 0;
}

输出

最大值: 56
最小值: 7

方法3:使用 scanf 动态输入数组

如果数组元素需要用户输入,可以使用 scanf 动态读取。

代码示例

#include <stdio.h>
int main() {
    int n;
    printf("请输入数组的大小: ");
    scanf("%d", &n);
    if (n <= 0) {
        printf("数组大小必须大于0!\n");
        return 0;
    }
    int arr[n];
    printf("请输入 %d 个整数:\n", n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    int max = arr[0];
    int min = arr[0];
    for (int i = 1; i < n; i++) {
        if (arr[i] > max) {
            max = arr[i];
        }
        if (arr[i] < min) {
            min = arr[i];
        }
    }
    printf("最大值: %d\n", max);
    printf("最小值: %d\n", min);
    return 0;
}

运行示例

请输入数组的大小: 5
请输入 5 个整数:
10 20 30 40 50
最大值: 50
最小值: 10

方法4:使用函数封装(推荐)

如果代码需要复用,可以把找最大值和最小值的逻辑封装成函数。

代码示例

#include <stdio.h>
void findMinMax(int arr[], int size, int *max, int *min) {
    *max = arr[0];
    *min = arr[0];
    for (int i = 1; i < size; i++) {
        if (arr[i] > *max) {
            *max = arr[i];
        }
        if (arr[i] < *min) {
            *min = arr[i];
        }
    }
}
int main() {
    int arr[] = {12, 45, 7, 23, 56, 9, 34};
    int size = sizeof(arr) / sizeof(arr[0]);
    if (size == 0) {
        printf("数组为空!\n");
        return 0;
    }
    int max, min;
    findMinMax(arr, size, &max, &min);
    printf("最大值: %d\n", max);
    printf("最小值: %d\n", min);
    return 0;
}

输出

最大值: 56
最小值: 7

方法 适用场景 特点
循环遍历 静态数组 最简单,直接遍历
指针遍历 指针操作 适合指针爱好者
动态输入 用户输入 灵活,可交互
函数封装 代码复用 结构化,推荐

选择合适的方法取决于你的需求,如果是简单程序,方法1 最直接;如果需要复用逻辑,方法4 更合适。

-- 展开阅读全文 --
头像
c语言求100以内的素数
« 上一篇 今天
dede图集内容如何正确调用?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]