求数组中的最大最小值c语言
时间: 2024-10-25 22:13:16 浏览: 47
在C语言中,找到数组中的最大值和最小值可以使用循环结构结合比较操作来实现。以下是两种常见的方法:
1. **遍历法**:
```c
#include <stdio.h>
int findMinMax(int arr[], int size, int* min, int* max) {
*min = arr[0]; // 假设第一个元素是最小值
*max = arr[0]; // 同样假设第一个元素是最大值
for (int i = 1; i < size; i++) {
if (arr[i] < *min) { // 如果当前元素小于已知最小值
*min = arr[i];
} else if (arr[i] > *max) { // 如果当前元素大于已知最大值
*max = arr[i];
}
}
return 0;
}
// 使用示例
int main() {
int arr[] = {5, 2, 9, 1, 7};
int min, max;
findMinMax(arr, sizeof(arr)/sizeof(arr[0]), &min, &max);
printf("Minimum value: %d\n", min);
printf("Maximum value: %d\n", max);
return 0;
}
```
2. **递归法**(虽然不是最佳实践,但也可以实现):
```c
#include <stdio.h>
void findMinMaxRecursively(int arr[], int start, int end, int* min, int* max) {
if (start == end) {
*min = arr[start];
*max = arr[start];
} else {
if (arr[start] < *min)
*min = arr[start];
if (arr[start] > *max)
*max = arr[start];
findMinMaxRecursively(arr, start + 1, end, min, max);
}
}
// 调用函数
int main() {
int arr[] = {5, 2, 9, 1, 7};
int min, max;
findMinMaxRecursively(arr, 0, sizeof(arr)/sizeof(arr[0]) - 1, &min, &max);
printf("Minimum value: %d\n", min);
printf("Maximum value: %d\n", max);
return 0;
}
```
阅读全文