请帮我编写C语言程序:编写程序,从一个降序的整数序列中找出第二大的数(第一大的数可以有多个)。 输入格式: 第一行输入数据个数n,1<=n<=20。 第二行输入n个整数。 输出格式: 输出序列的第二大的数,如果没有,则输出no。 输入样例1: 10 10 10 10 8 6 4 3 1 1 1 输出样例1: 8 输入样例2: 3 2 2 2 输出样例2: no 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB
时间: 2024-02-06 14:10:06 浏览: 50
以下是C语言程序的代码实现:
```c
#include <stdio.h>
int main() {
int n, max, secondMax, num;
scanf("%d", &n);
scanf("%d", &max);
secondMax = -1;
for (int i = 1; i < n; i++) {
scanf("%d", &num);
if (num != max) {
if (num > max) {
secondMax = max;
max = num;
} else if (num > secondMax) {
secondMax = num;
}
}
}
if (secondMax == -1) {
printf("no");
} else {
printf("%d", secondMax);
}
return 0;
}
```
程序的思路如下:
1. 首先读入数据个数n和第一个整数max,将secondMax初始化为-1。
2. 循环读入剩余的n-1个整数num。
3. 如果num不等于max,则进行比较:
1. 如果num大于max,那么将max赋值给secondMax,将num赋值给max。
2. 如果num不大于max,那么将num与secondMax比较,如果num大于secondMax,则将num赋值给secondMax。
4. 最后判断secondMax是否为-1,如果是则输出"no",否则输出secondMax的值。
阅读全文