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;
}