c语言找最大数或者最小数
时间: 2024-09-23 18:11:29 浏览: 51
在C语言中,找到一组整数中的最大值和最小值可以使用循环结构和比较操作。以下是两种常见的方法:
1. **遍历法**:
- 定义两个变量,如`max_num`存储当前的最大值,`min_num`存储当前的最小值,初始假设它们都是数组的第一个元素。
- 遍历整个数组,如果遇到比`max_num`大的数,就更新`max_num`;如果遇到比`min_num`小的数,就更新`min_num`。
```c
int arr[] = {5, 9, 1, 7, 3};
int max_num = arr[0], min_num = arr[0];
for (int i = 1; i < sizeof(arr) / sizeof(arr[0]); i++) {
if (arr[i] > max_num)
max_num = arr[i];
else if (arr[i] < min_num)
min_num = arr[i];
}
printf("最大值: %d, 最小值: %d\n", max_num, min_num);
```
2. **递归法**(对于小规模数组适用,大规模数据效率较低):
- 递归函数接收三个参数:数组、起始索引和结束索引。初始化时,若起始索引等于结束索引,则返回数组中的这个元素作为最大值和最小值;然后比较起始元素与次大(减一索引)元素,选择较大者为新的最大值,较小者为新最小值。
```c
#include <stdio.h>
int find_min_max(int arr[], int start, int end) {
if (start == end) {
return arr[start];
} else {
int mid = start + (end - start) / 2;
int left_min = find_min_max(arr, start, mid);
int left_max = find_min_max(arr, mid + 1, end);
return arr[mid] > left_max ? arr[mid] : left_max;
}
}
int main() {
int arr[] = {5, 9, 1, 7, 3};
int max_num = find_min_max(arr, 0, sizeof(arr) - 1);
int min_num = *min_element(arr, arr + sizeof(arr) / sizeof(arr[0]));
printf("最大值: %d, 最小值: %d\n", max_num, min_num);
return 0;
}
```
注意这里用到了`<algorithm>`库中的`min_element`函数,它能直接给出数组中的最小值。
阅读全文