C语言找出数组中最大和最小值并输出
时间: 2023-05-12 19:04:36 浏览: 319
可以使用循环遍历数组,同时记录最大值和最小值,代码如下:
```c
#include <stdio.h>
int main() {
int arr[] = {1, 5, 3, 8, 2, 9, 4, 7, 6};
int n = sizeof(arr) / sizeof(arr[0]);
int max = arr[0], min = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
}
printf("最大值:%d\n", max);
printf("最小值:%d\n", min);
return 0;
}
```
输出结果为:
```
最大值:9
最小值:1
```
相关问题
c语言找出数组最小值
在C语言中,找到数组中的最小值可以使用循环结构遍历整个数组,并在遍历过程中维护一个变量来记录当前已知的最小值。下面是一个简单的示例:
```c
#include <stdio.h>
// 定义函数找数组最小值
int find_min(int arr[], int size) {
int min = arr[0]; // 假设第一个元素为最小值
// 遍历数组
for (int i = 1; i < size; i++) {
if (arr[i] < min) { // 如果当前元素小于min
min = arr[i]; // 更新最小值
}
}
return min;
}
int main() {
int array[] = {5, 3, 8, 1, 9};
int array_size = sizeof(array) / sizeof(array[0]);
int min_value = find_min(array, array_size);
printf("数组中的最小值是: %d\n", min_value);
return 0;
}
```
在这个例子中,`find_min` 函数接受一个整型数组和它的大小作为参数,然后通过迭代找出并返回数组中的最小值。
C语言用数组求最大值 最小值
在C语言中,寻找数组中的最大值和最小值可以采用遍历数组的方式实现。以下是两种常见的方法:
1. **遍历法(线性时间复杂度)**:
```c
#include <stdio.h>
int findMinMax(int arr[], int n, int* min, int* max) {
*min = arr[0]; // 初始化最小值为第一个元素
*max = arr[0]; // 初始化最大值为第一个元素
for (int i = 1; i < n; i++) { // 遍历数组
if (arr[i] > *max) {
*max = arr[i]; // 如果当前元素大于已知的最大值,则更新最大值
} else if (arr[i] < *min) {
*min = arr[i]; // 如果当前元素小于已知的最小值,则更新最小值
}
}
return 0;
}
// 使用示例
int main() {
int arr[] = {5, 3, 9, 1, 7};
int n = sizeof(arr) / sizeof(arr[0]);
int min, max;
findMinMax(arr, n, &min, &max);
printf("Minimum value is: %d\n", min);
printf("Maximum value is: %d\n", max);
return 0;
}
```
2. **分治法(递归法,时间复杂度取决于数组大小)**:
这种方法通过将数组分为两半并分别找出左半部分和右半部分的最大值和最小值,然后比较两个部分的极值来找到整个数组的极值。这种方法适用于较大的数组,但对于小型数组效率较低。
```c
#include <stdio.h>
// 递归函数寻找左右两个子数组的最值
void findMinMaxRec(int arr[], int left, int right, int* min, int* max) {
if (left == right) { // 当只有一个元素时,直接返回
*min = arr[left];
*max = arr[left];
} else {
int mid = (left + right) / 2;
int leftMin = *min, leftMax = *max;
findMinMaxRec(arr, left, mid, &leftMin, &leftMax);
int rightMin = *min, rightMax = *max;
findMinMaxRec(arr, mid+1, right, &rightMin, &rightMax);
if (leftMax > rightMax) {
*max = leftMax;
} else {
*max = rightMax;
}
if (leftMin < rightMin) {
*min = leftMin;
} else {
*min = rightMin;
}
}
}
// 主函数
int main() {
// 略同上面
return 0;
}
```
阅读全文