用C++写一个找出数组中最大值和次大值的算法
时间: 2023-08-31 16:39:34 浏览: 205
### 回答1:
#include <stdio.h>
int main()
{
int arr[5] = {5, 9, 11, 3, 7};
int max = arr[0];
int secondMax = arr[0];
for(int i=1; i<5; i++){
if(arr[i] > max){
secondMax = max;
max = arr[i];
}
else if(arr[i] > secondMax){
secondMax = arr[i];
}
}
printf("最大值为%d,次大值为%d。", max, secondMax);
return 0;
}
### 回答2:
下面是一个使用C语言编写的找出数组中最大值和次大值的算法:
```c
#include <stdio.h>
void findTwoLargest(int arr[], int size, int* max, int* secondMax) {
*max = arr[0];
*secondMax = arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] > *max) {
*secondMax = *max;
*max = arr[i];
} else if (arr[i] > *secondMax && arr[i] < *max) {
*secondMax = arr[i];
}
}
}
int main() {
int arr[] = {5, 9, 3, 1, 7};
int size = sizeof(arr) / sizeof(arr[0]);
int max, secondMax;
findTwoLargest(arr, size, &max, &secondMax);
printf("最大值:%d\n次大值:%d\n", max, secondMax);
return 0;
}
```
该算法使用了一个for循环来遍历数组,并使用两个变量(max和secondMax)来记录当前找到的最大值和次大值。在遍历过程中,如果发现比当前最大值大的数,则将最大值赋值给次大值,然后将该数赋值给最大值。如果发现比当前次大值大且比最大值小的数,则将该数赋值给次大值。最终输出找到的最大值和次大值。
在上述示例代码中,数组为{5, 9, 3, 1, 7},最大值为9,次大值为7。
### 回答3:
可以使用C语言编写一个算法来找出数组中的最大值和次大值。具体的实现方法如下:
1. 声明两个变量max和second_max,分别用于保存最大值和次大值,初始值都为数组中的第一个元素。
2. 遍历数组,从第二个元素开始比较:
a. 如果当前元素大于max,则将max的值更新为当前元素的值,同时将second_max的值更新为max的旧值。
b. 如果当前元素小于max但大于second_max,则将second_max的值更新为当前元素的值。
3. 结束遍历后,max即为数组中的最大值,second_max即为次大值。
4. 打印最大值和次大值。
以下是一个示例代码的实现:
```c
#include <stdio.h>
void find_max_and_second_max(int arr[], int size) {
int max = arr[0];
int second_max = arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] > max) {
second_max = max;
max = arr[i];
} else if (arr[i] > second_max && arr[i] < max) {
second_max = arr[i];
}
}
printf("最大值:%d\n", max);
printf("次大值:%d\n", second_max);
}
int main() {
int arr[] = {1, 5, 3, 2, 9, 7};
int size = sizeof(arr) / sizeof(arr[0]);
find_max_and_second_max(arr, size);
return 0;
}
```
运行以上代码,输出结果为:
最大值:9
次大值:7
通过以上算法实现,可以找出数组中的最大值和次大值的值,并将结果打印出来。注意,以上代码中假设数组中至少包含两个元素。实际应用中,可能需要根据具体情况对代码进行适当的修改。
阅读全文