题解 | #争夺前五名#

争夺前五名

https://www.nowcoder.com/practice/cd052308a1c44a88ad00255f312c3e14

描述

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

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

输入描述:

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

输出描述:

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

#include <stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int score[n];

    int i;
    int mark = 0;
    //数组赋值
    for(i = 0;i < n;i++)
    {
        scanf("%d",&mark);
        score[i] = mark;
    }
    //升序排布
    for(i = 1;i < n;i++)
    {
        int temp = 0;   //中转变量
        int j;
        for(j = 0;j < i;j++)    //score[1]比较score[0],向前比较 i 次
        {
            if(score[i] >= score[j])    //利用中转变量,当后者大于前者交换
            {
                temp = score[j];
                score[j] = score[i];
                score[i] = temp;
            }
        }
    }
    //打印前五
    for(i = 0;i < 5;i++)
    {
        printf("%d ",score[i]);
    }
    return 0;
}

感觉这个代码真的好丑,但是很多题解都是这样的模块和方法,希望有大佬能够优化一下!

全部评论

相关推荐

头像
10-16 09:58
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务