C语言编程题查找数组中的最大值(使用指针)

C语言中,可以使用指针来查找数组中的最大值。每种方法都有其自身的优劣和适用场景,具体选择可以根据实际情况和性能需求来决定。

1、使用指针遍历数组

通过指针来实现对数组中的元素遍历,查找出数组中的最大值。

1)方法1

#include <stdio.h>

int find_max(int arr[], int size) {
    int max = *arr;  // 初始化为第一个元素的值
    int *ptr = arr;  // 指向数组的第一个元素

    for (int i = 1; i < size; i++) {
        ptr++;  // 移动指针到下一个元素
        if (*ptr > max) {
            max = *ptr;  // 更新最大值
        }
    }

    return max;
}

int main() {
    int arr[] = {1, 5, 3, 7, 2};
    int size = sizeof(arr) / sizeof(arr[0]);

    int max = find_max(arr, size);
    printf("Maximum value in the array: %d\n", max);

    return 0;
}

2)方法2

#include <stdio.h>

int find_max(int arr[], int size) {
    int max = arr[0];  // 初始化为第一个元素的值

    for (int i = 1; i < size; i++) {
        if (arr[i] > max) {
            max = arr[i];  // 更新最大值
        }
    }

    return max;
}

int main() {
    int arr[] = {1, 5, 3, 7, 2};
    int size = sizeof(arr) / sizeof(arr[0]);

    int max = find_max(arr, size);
    printf("Maximum value in the array: %d\n", max);

    return 0;
}

2、使用指针算术运算遍历数组

通过指针算术来实现对数组中的元素遍历,查找出数组中的最大值。

1)方法1

#include <stdio.h>

int find_max(int arr[], int size) {
    int max = *arr;  // 初始化为第一个元素的值
    int *ptr = arr;  // 指向数组的第一个元素
    int *end = arr + size;  // 指向数组末尾的下一个位置

    while (++ptr < end) {
        if (*ptr > max) {
            max = *ptr;  // 更新最大值
        }
    }

    return max;
}

int main() {
    int arr[] = {1, 5, 3, 7, 2};
    int size = sizeof(arr) / sizeof(arr[0]);

    int max = find_max(arr, size);
    printf("Maximum value in the array: %d\n", max);

    return 0;
}

2)方法2

#include <stdio.h>

int find_max(int arr[], int size) {
    int max = arr[0];  // 初始化为第一个元素的值
    int *ptr = arr + 1;  // 指向数组的第二个元素
    int *end = arr + size;  // 指向数组末尾的下一个位置

    while (ptr < end) {
        if (*ptr > max) {
            max = *ptr;  // 更新最大值
        }
        ptr++;  // 移动指针到下一个元素
    }

    return max;
}

int main() {
    int arr[] = {1, 5, 3, 7, 2};
    int size = sizeof(arr) / sizeof(arr[0]);

    int max = find_max(arr, size);
    printf("Maximum value in the array: %d\n", max);

    return 0;
}

3、递归方法(使用指针)

通过指针方式递归来实现对数组中的元素遍历,查找出数组中的最大值。

#include <stdio.h>

int find_max_recursive(int arr[], int size) {
    // 基本情况:如果只有一个元素,则返回该元素的值
    if (size == 1) {
        return arr[0];
    }

    // 递归步骤:找出剩余数组中的最大值,并与当前元素比较取较大者
    int max_rest = find_max_recursive(arr + 1, size - 1);
    return (arr[0] > max_rest) ? arr[0] : max_rest;
}

int main() {
    int arr[] = {1, 5, 3, 7, 2};
    int size = sizeof(arr) / sizeof(arr[0]);

    int max = find_max_recursive(arr, size);
    printf("Maximum value in the array: %d\n", max);

    return 0;
}

推荐阅读
cjavapy编程之路首页