用c语言写对于给定的含有n元素的无序序列,求这个序列中最大和次大的两个不同的元素,输入有两行,第一行为一个正整数n(2<=n<=10000),第二行为n个整数,空格隔开。输出序列中最大值和次大值,空格隔开。
时间: 2024-05-09 14:15:37 浏览: 8
以下是用C语言的代码实现:
```c
#include <stdio.h>
#include <limits.h>
int main() {
int n, max1 = INT_MIN, max2 = INT_MIN;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
int num;
scanf("%d", &num);
if (num > max1) {
max2 = max1;
max1 = num;
} else if (num > max2 && num != max1) {
max2 = num;
}
}
printf("%d %d", max1, max2);
return 0;
}
```
首先我们定义了两个变量`max1`和`max2`来存储最大值和次大值,初始值都为`INT_MIN`,这是为了确保序列中的任意一个整数都比`max1`和`max2`的初始值要大。
接着,我们输入序列的长度`n`,并用一个循环遍历序列中的每一个元素。在循环中,我们输入当前元素的值`num`,然后根据`num`和`max1`、`max2`的比较关系更新`max1`和`max2`的值。如果`num`比`max1`大,那么我们把当前的`max1`赋值给`max2`,然后把`num`赋值给`max1`;否则,如果`num`比`max2`大且不等于`max1`,那么我们把`num`赋值给`max2`。
最后,我们输出`max1`和`max2`的值,它们就是序列中的最大值和次大值。