注册 登录
编程论坛 C语言论坛

输入一组整数(可以有重复数据),求第二大的值

秃头大凡 发布于 2021-11-06 17:26, 1836 次点击
求解,谢谢

输入格式:
第一行是数据个数n(大于2且小于20),第二行输入n个整数,空格分隔

输出格式:
输出这组数据中的次大值(注意最大值可能有多个)

输入样例:
6
25 11 25 18 25 17
结尾无空行
输出样例:
在这里给出相应的输出。例如:

18
结尾无空行
2 回复
#2
rjsp2021-11-06 19:41
奇怪的题目,如果输入的值一样大,怎么办?

程序代码:
#include <stdio.h>
#include <limits.h>

int main( void )
{
    unsigned n;
    scanf( "%u", &n );
   
    int first = INT_MIN;
    int second = INT_MIN;
    for( unsigned i=0; i!=n; ++i )
    {
        int value;
        scanf( "%d", &value );
        
        if( value > first )
        {
            second = first;
            first = value;
        }
        else if( value!=first && value>second )
        {
            second = value;
        }
    }
   
    printf( "%d", second );
}
#3
D22845814702021-11-09 09:30
/*数组不用排序思想*/
#include <stdio.h>
int main()
{
    int a[21];
    int n, max = 0, min = 1000, sub = 0;
    int temp = 0;
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
        if (a[i] > max) max = a[i];
    }
    for (int i = 0; i < n; i++)
    {
        sub = max - a[i];
        if (sub && sub < min)
        {
            min = sub;
            temp = a[i];
        }
    }
    printf("%d\n", temp);
    return 0;
}
1