zjy101010 2022-04-04 13:42 采纳率: 50%
浏览 30
已结题

请问这个应该如何实现

公元2900年,地球文明遭遇前所未有的困境
全球气候变暖,水资源短缺,能源衰竭都制约人类的持续发展
联合政府决定入侵"半人马座三星"
目前距离太阳系最近的行星系是“半人马座三星”,该行星系内有三颗恒星,其中比邻星距离我们最近只有4.22光年。
现在发现半人马星系的n个行星,并依次给出了每个行星的质量,注意行星的质量可能很大。
科学家想要研究这n颗行星是否适合人类居住,不过科学研究往往从最基本的分类数据来分析,现在科二学家需要统计如下数据:
第1大、第3大第n大行星的总质量,请你帮忙计算。
数据保障n是奇数
输入格式
第1行,一个整数n,表示有n个行星(n<1e4)
第2行,n个以空格分隔的数字(每个数字<1e19)
输出格式
一个数字,表示总质量
限制
空间限制:128MByte
时间限制:1秒
样例
输入
5
1 3 2 4 5
输出
9

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2022-04-04 14:08
    关注

    就是计算最大值,最小值和第三大值。定义四个变量,分别表示第一、第二、第三和最小值。循环输入的时候逐个比较

    #include <stdio.h>
    int main()
    {
        int n,i;
        long long max1,max2,max3,min,m;
        max1 = max2 = max3 = min = 0;
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
            scanf("%lld",&m);
            if(i==0)
            {
                max1 = m;
                min = m;
            }
            else
            {
                if(m>max1)
                {
                    max3 = max2;
                    max2 = max1;
                    max1 = m;
                }
                else if(m>max2 && i>1)
                {
                    max3 = max2;
                    max2 = m;
                }
                else if(m>max3 && i>2)
                    max3 = m;
                if(m < min)
                    min = m;
            }
        }
        printf("%lld",max1+max3+min);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月12日
  • 已采纳回答 4月4日
  • 创建了问题 4月4日

悬赏问题

  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来