利用指针方法求数组的最大值和最小值头歌
时间: 2023-07-08 09:26:43 浏览: 138
c语言利用指针求数组的最大值与最小值
好的,我可以帮你解答这个问题。
求一个数组的最大值和最小值可以通过遍历整个数组,逐个比较来实现。这里提供两种不同的指针方法实现:
方法一:使用指针遍历数组
```c
#include <stdio.h>
void max_min(int* arr, int len, int* max, int* min) {
int i;
*max = *min = *arr; // 初始化最大值和最小值为数组的第一个元素
for (i = 1; i < len; i++) {
if (*(arr + i) > *max) {
*max = *(arr + i);
}
if (*(arr + i) < *min) {
*min = *(arr + i);
}
}
}
int main() {
int arr[] = {5, 3, 9, 1, 7};
int len = sizeof(arr) / sizeof(int);
int max, min;
max_min(arr, len, &max, &min);
printf("max = %d, min = %d\n", max, min);
return 0;
}
```
方法二:使用指向指针的指针
```c
#include <stdio.h>
void max_min(int* arr, int len, int** pmax, int** pmin) {
int i;
*pmax = *pmin = arr; // 初始化最大值和最小值的指针
for (i = 1; i < len; i++) {
if (*(arr + i) > **pmax) {
*pmax = arr + i;
}
if (*(arr + i) < **pmin) {
*pmin = arr + i;
}
}
}
int main() {
int arr[] = {5, 3, 9, 1, 7};
int len = sizeof(arr) / sizeof(int);
int* max, * min;
max_min(arr, len, &max, &min);
printf("max = %d, min = %d\n", *max, *min);
return 0;
}
```
这两种方法的本质是一样的,都是通过指针对数组进行遍历,找到最大值和最小值。区别在于方法一使用指针变量指向数组元素,方法二使用指向指针的指针来记录最大值和最小值的指针。
阅读全文