。zzzz。 2022-11-16 23:28 采纳率: 100%
浏览 6
已结题

一组数据中最大值和次大值相等怎么列代码输出最大值和次大值

输出一组数中的最大值和次大值,但是当最大值和次大值相等时,次大值输出错误
#include<stdio.h>

int main()
{
    int max1,max2, i, a, t;
    scanf_s("%d", &t);
    for (i = 0; i < t; i++)
    {
        int b[10];
        for (i = 0; i < t; i++)
        {
            scanf_s("%d", &a);
            b[i] = a;
        }
        max1 = b[0];
        for (i = 1; i < t; i++)
        {

            if (b[i] > max1)
            {
                max1 = b[i];
            }
        }
        for (i = 0; i < t; i++)
        {

            if (b[i] != max1)
            {
                max2 = b[i];
            }
            for (i = 0; i < t; i++)
            {
                if (b[i] < max1 && b[i] >= max2)
                {
                    max2 = b[i];
                }
            }
        }
    }
    printf("%d %d\n",max1, max2);


return 0;

}

输入:4 -5 -12 35 35时
输出值为:35 -5

  • 写回答

1条回答 默认 最新

  • sk20180222 2022-11-17 14:26
    关注

    注意两个地方
    1,计算次大值考虑最大值一样的情况
    2,保存最大值的下标

    {
            int max1, max2=0, i, a, t,cnt=0;
            scanf_s("%d", &t);
            for (i = 0; i < t; i++)
            {
                int b[10];
                for (i = 0; i < t; i++)
                {
                    scanf_s("%d", &a);
                    b[i] = a;
                }
                max1 = b[0];
                for (i = 1; i < t; i++)
                {
    
                    if (b[i] > max1)
                    {
                        max1 = b[i];
                        cnt = i;
                    }
                }
                for (i = 0; i < t; i++)
                {
    
                    if (b[i] != max1)
                    {
                        max2 = b[i];
                    }
                    for (i = 0; i < t; i++)
                    {
                        if (b[i] <= max1 && b[i] >= max2)
                        {
                            if (i != cnt)
                            {
                                max2 = b[i];
                            }
                            
                        }
                    }
                }
            }
            printf("%d %d\n", max1, max2);
        }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月25日
  • 已采纳回答 11月17日
  • 创建了问题 11月16日

悬赏问题

  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单