用c语言求最大值,最小值
时间: 2024-10-20 18:11:20 浏览: 189
在C语言中,求一组数值的最大值和最小值通常会涉及到数组或者一组变量。这里有几种常见的方法:
1. **遍历法**:通过for循环遍历数组,每次比较当前元素与已知的最大值和最小值,如果发现更大的数就更新最大值,更小的数则更新最小值。
```c
#include <stdio.h>
int findMax(int arr[], int n) {
int max = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > max)
max = arr[i];
}
return max;
}
int findMin(int arr[], int n) {
int min = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] < min)
min = arr[i];
}
return min;
}
int main() {
int numbers[] = {5, 8, 2, 11, 3};
int size = sizeof(numbers) / sizeof(numbers[0]);
int max = findMax(numbers, size);
int min = findMin(numbers, size);
printf("Max value is: %d\n", max);
printf("Min value is: %d\n", min);
return 0;
}
```
2. **递归法**:也可以利用递归来找到最大值和最小值,但这通常不是最优解,因为递归会有额外的函数调用开销。
```c
void findMinMax(int arr[], int start, int end, int &min, int &max) {
if (start == end) {
if (start == 0) {
min = max = arr[start];
} else {
if (arr[start] < min) {
min = arr[start];
} else if (arr[start] > max) {
max = arr[start];
}
}
} else {
findMinMax(arr, start + 1, end, min, max);
if (arr[start] < min || (arr[start] > max && min != max)) {
min = arr[start];
} else if (arr[start] > min || (arr[start] < max && max != min)) {
max = arr[start];
}
}
}
int main() {
// 同样是先初始化数组和大小
// 然后调用findMinMax
// 最后返回min和max
return 0;
}
```
阅读全文