标题:输入一组整数(可以有重复数据),求第二大的值
只看楼主
秃头大凡
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2021-10-28
结帖率:50%
已结贴  问题点数:2 回复次数:2 
输入一组整数(可以有重复数据),求第二大的值
求解,谢谢

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

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

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

18
结尾无空行
搜索更多相关主题的帖子: 输出 输入 整数 重复 数据 
2021-11-06 17:26
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:1 
奇怪的题目,如果输入的值一样大,怎么办?

程序代码:
#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 );
}
2021-11-06 19:41
D2284581470
Rank: 3Rank: 3
来 自:沈阳
等 级:论坛游侠
威 望:2
帖 子:169
专家分:147
注 册:2019-12-8
得分:1 
/*数组不用排序思想*/
#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;
}
2021-11-09 09:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-507419-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.311744 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved