牛客网——争夺前五名

简介: 牛客网——争夺前五名

前言


今天我们来说一下数组的简单应用。

一、争夺前五名


题目来源:

争夺前五名_牛客题霸_牛客网

描述


期中考试开始了,大家都想取得好成绩,争夺前五名。从键盘输入 n 个学生成绩,输出每组排在前五高的成绩。

数据范围:5≤n≤50  ,成绩采取百分制并不会出现负数

输入描述:


两行,第一行输入一个整数,表示n个学生(>=5),第二行输入n个学生成绩(整数表示,范围0~100),用空格分隔。

输出描述:


一行,输出成绩最高的前五个,用空格分隔。

二、解题过程


1.分析问题


题目的关键在于,多组输入后怎么比较大小,这时我们就要用到数组了,把所有数字装数组里,再比较大小,把数组里的数按大小排好序,再按顺序输出。

2.代码如下


#include<stdio.h>
int main(){
    int n,a,max=0;
    scanf("%d\n",&n); //输入n,表示数组大小。
    int c[n]; //用n初始数组
        for(int i=0;i<n;i++){
            scanf("%d",&c[i]); //遍历输入
        }
    for(int j=0;j<n;j++){           
        for(int k=j+1;k<n;k++){       //k=j+1,表示数组后一位和前一位比较
            if(c[j]<c[k]){    
                max=c[j];               //准备换位置,大在前,小在后,方便后面输出
                c[j]=c[k];    //先赋值给max,作为中间量,然后把前一位的量改为后一位的量
                c[k]=max;        //后一位的量变成前一位的,用max来传递。
            }
        }
    }
        for(int w=0;w<5;w++){        //拍好大小后,挨个输出五个
            printf("%d ",c[w]);
        }
    return 0;
}

问题的核心有两个:

1、用两个循环来让数组一前一后比较大小。

2、通过赋值来把两个值交换。max这个中间量一定不能少!没有中间量,在前一位赋值为位一个之后,前一位原来的值就找不回来了,这时后一位就不能赋值为前一位了。

总结


以上就是今天要讲的内容,本文仅仅简单介绍了数组基本排列的问题,希望对大家有帮助~

相关文章
|
监控 安全 算法
这次锁面试题的连环16问,差点就跪了
这次锁面试题的连环16问,差点就跪了
226 0
|
JavaScript 小程序 Java
当年那个手搓CPU的老哥回来了!
当年那个手搓CPU的老哥回来了!
得不到的爱情
得不到的爱情
126 0
|
Web App开发 前端开发 JavaScript
冬奥快结束了还没有抢到冰墩墩?程序员一招让你不用排队不用愁!
随着“2022北京冬奥会”的盛大开幕,冰墩墩的热度与日俱增,线上被抢空,线下排长龙,为购买冰墩墩苦恼的竟少了几根秀发!如今冬奥马上就要拉下帷幕,还没抢到“冰墩墩”不要紧,这款程序来帮忙,国内一位程序员dragonir用前端+建模的方式自己就实现了线上拥有“冰墩墩”,同时将代码开源到了GitHub上,不得不感叹科技的力量,程序员的伟大,让拥有“冰墩墩”变得如此简单!
冬奥快结束了还没有抢到冰墩墩?程序员一招让你不用排队不用愁!
|
存储 Java 程序员
一个线程的打工故事
一个线程的打工故事
119 0
|
Java
线程的故事:我的3位母亲成就了优秀的我!(3)
线程的故事:我的3位母亲成就了优秀的我!(3)
166 0
线程的故事:我的3位母亲成就了优秀的我!(3)
|
存储 前端开发 JavaScript
【offer 收割计划】这几道常见的面试题,你会几道
【offer 收割计划】这几道常见的面试题,你会几道
94 0
【offer 收割计划】这几道常见的面试题,你会几道
万万没想到,线程居然被饿死了!
万万没想到,线程居然被饿死了!
|
Java
线程的故事:我的3位母亲成就了优秀的我!(2)
线程的故事:我的3位母亲成就了优秀的我!(2)
108 0
|
Java
线程的故事:我的3位母亲成就了优秀的我!(1)
线程的故事:我的3位母亲成就了优秀的我!(1)
112 0