用指针求含有n个元素的整型数组的最大值和最小值
时间: 2023-04-26 09:00:27 浏览: 86
可以定义两个变量分别存储最大值和最小值,然后遍历整型数组,比较每个元素与当前最大值和最小值的大小关系,更新最大值和最小值即可。使用指针可以通过指针操作数组元素来实现。具体实现如下:
```c
void findMinMax(int* arr, int n, int* max, int* min) {
*max = *min = arr[]; // 初始化最大值和最小值为数组第一个元素
for (int i = 1; i < n; i++) {
if (arr[i] > *max) {
*max = arr[i]; // 更新最大值
}
if (arr[i] < *min) {
*min = arr[i]; // 更新最小值
}
}
}
```
调用该函数时,需要传入整型数组的指针、数组元素个数、最大值和最小值的指针,函数执行完毕后,最大值和最小值的值会存储在对应的指针变量中。例如:
```c
int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};
int n = sizeof(arr) / sizeof(int);
int max, min;
findMinMax(arr, n, &max, &min);
printf("Max: %d, Min: %d\n", max, min);
```
相关问题
用指针求含有n(n不大于20)个元素的整型数组的最大值和最小值
可以定义两个变量max和min,分别存储数组中的最大值和最小值。然后用指针遍历整个数组,比较每个元素与max和min的大小关系,更新max和min的值即可。
具体实现如下:
```c++
void findMaxMin(int* arr, int n, int& max, int& min) {
max = arr[];
min = arr[];
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
}
}
```
调用方式如下:
```c++
int arr[20] = {1, 2, 3, 4, 5};
int max, min;
findMaxMin(arr, 5, max, min);
cout << "max: " << max << endl;
cout << "min: " << min << endl;
```
输出结果为:
```
max: 5
min: 1
```
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` 函数,最终输出数组的最大值和最小值。