头歌利用指针方法求数组的最大值和最小值
时间: 2023-05-29 07:06:55 浏览: 439
以下是使用指针方法求解数组最大值和最小值的示例代码:
```c
#include <stdio.h>
void findMinMax(int arr[], int len, int *min, int *max) {
*min = arr[0];
*max = arr[0];
for(int i=1; i<len; i++) {
if(arr[i] < *min)
*min = arr[i];
if(arr[i] > *max)
*max = arr[i];
}
}
int main() {
int arr[] = {3, 5, 1, 8, 4, 9, 2, 6, 7};
int len = sizeof(arr) / sizeof(arr[0]);
int min, max;
findMinMax(arr, len, &min, &max);
printf("最小值为:%d,最大值为:%d\n", min, max);
return 0;
}
```
输出结果为:
```
最小值为:1,最大值为:9
```
在函数 `findMinMax` 中,通过指针的方式获取最小值和最大值,遍历数组时,如果发现当前元素比最小值小,则更新最小值,如果发现当前元素比最大值大,则更新最大值。最后在主函数中调用 `findMinMax` 函数获取最小值和最大值,并打印输出。
相关问题
利用指针方法求数组的最大值和最小值头歌
好的,我可以帮你解答这个问题。
求一个数组的最大值和最小值可以通过遍历整个数组,逐个比较来实现。这里提供两种不同的指针方法实现:
方法一:使用指针遍历数组
```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;
}
```
这两种方法的本质是一样的,都是通过指针对数组进行遍历,找到最大值和最小值。区别在于方法一使用指针变量指向数组元素,方法二使用指向指针的指针来记录最大值和最小值的指针。
C语言利用指针方法求数组的最大值和最小值
可以使用指针方法来求解数组的最大值和最小值,具体的实现方法如下:
```c
#include <stdio.h>
void findMinMax(int* arr, int size, int* max, int* min) {
*max = *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[] = { 3, 5, 1, 8, 2 };
int size = sizeof(arr) / sizeof(int);
int max, min;
findMinMax(arr, size, &max, &min);
printf("Max value: %d\n", max);
printf("Min value: %d\n", min);
return 0;
}
```
在这个例子中,`findMinMax` 函数接受一个整型数组的指针 `arr`、数组的大小 `size`,以及两个整型指针 `max` 和 `min`。在函数内部,我们用 `*max` 和 `*min` 来引用指针所指向的值,也就是数组的最大值和最小值。在循环中,我们遍历整个数组,如果发现比当前最大值还大的元素,则更新最大值;如果发现比当前最小值还小的元素,则更新最小值。最后,我们通过 `&max` 和 `&min` 将最大值和最小值的地址传递给 `findMinMax` 函数,最终输出数组的最大值和最小值。