📅  最后修改于: 2023-12-03 15:13:46.585000             🧑  作者: Mango
编写一个程序,找出给定数组中所有元素的最大值和次大值。
本题可以使用一个循环来遍历数组,每次比较当前元素与最大值和次大值的大小,更新这两个变量即可。需要注意的是,对于第一个元素,需要特殊处理。
#include <stdio.h>
int main() {
int arr[10] = {4, 8, 6, 9, 1, 3, 5, 2, 7, 0};
int i, max, sec_max;
max = arr[0];
sec_max = arr[1];
if (sec_max > max) {
int temp = max;
max = sec_max;
sec_max = temp;
}
for (i = 2; i < 10; i++) {
if (arr[i] > max) {
sec_max = max;
max = arr[i];
} else if (arr[i] > sec_max) {
sec_max = arr[i];
}
}
printf("最大值:%d\n次大值:%d\n", max, sec_max);
return 0;
}
首先定义了一个数组 arr
,包含了 10 个整数。
然后定义了三个整型变量,用于存储最大值、次大值以及循环计数器。
给最大值和次大值先初始化,将 arr
数组的第一个元素赋给最大值,将第二个元素赋给次大值,然后比较这两个元素的大小,如果次大值大于最大值,则交换这两个元素的值。
接着使用一个循环来遍历 arr
数组,从第三个元素开始比较,如果当前元素大于最大值,则将此时的最大值更新为当前元素,并将原先的最大值赋给次大值。如果当前元素不大于最大值但大于次大值,则将当前元素赋给次大值。最后输出最大值和次大值即可。