列表

详情


BC120. 争夺前五名

描述

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

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

输入描述

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

输出描述

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

示例1

输入:

6
99 45 78 67 72 88

输出:

99 88 78 72 67

示例2

输入:

5
10 20 30 40 50

输出:

50 40 30 20 10

原站题解

C 解法, 执行用时: 1ms, 内存消耗: 272KB, 提交时间: 2020-10-16

#include <stdio.h>

int main(){
    int n,a[40];
    int i,j,temp;
    scanf("%d\n",&n);
    for (i = 0;i < n;i++){
        scanf("%d ",&a[i]);
    }
    for (i = 0;i < n;i++){
        for (j = i;j < n;j++){
            if (a[i] < a[j]){
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
    }
    for (i = 0;i < 5;i++)
        printf("%d ",a[i]);
}

C 解法, 执行用时: 1ms, 内存消耗: 276KB, 提交时间: 2020-12-23

# include <stdio.h>

int main ()
{
    int n, num, i, temp;
    int score[30] = {0};
    scanf("%d\n", &n);
    for(num=0; num<n; num++)
    {
        scanf("%d ", &score[num]);
    }
    for(num=0; num<n; num++)
    {
        for(i=0; i<n-1-num; i++)
        {
            if(score[i]<score[i+1])
            {
                temp = score[i+1];
                score[i+1] = score[i];
                score[i] = temp;
            }
        }
    }
    for(num=0; num<5; num++)
    {
     printf("%d ", score[num]);
    }
    return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 292KB, 提交时间: 2021-01-01

#include <stdio.h>

int main(){
    int score[40]={0};
    int n=0;
    int i=0,j=0,r=0,t=0;
    scanf("%d\n",&n);
    for(i=0;i<n;i++){
        scanf("%d",&score[i]);
    }
    for(i=0;i<5;i++){
        for(j=0;j<n-i-1;j++){
            r=score[j];
            if(r>score[j+1]){
                t=score[j+1];
                score[j+1]=r;
                score[j]=t;
            }
        }
    }
    for(i=0;i<5;i++){
        printf("%d",score[n-i-1]);
        if(i<4){
            printf(" ");
        }else{
            printf("\n");
        }
    }

    return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 300KB, 提交时间: 2021-09-14

#include<stdio.h>
int main(){
    int stu[50];
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
        scanf("%d",&stu[i]);
    for(int i=0;i<5;i++){
        int max=0;
        for(int j=1;j<n;j++){
            if(stu[max]<stu[j])
                max=j;
        }
        printf("%d ",stu[max]);
        stu[max]=0;
    }
}

C 解法, 执行用时: 1ms, 内存消耗: 300KB, 提交时间: 2021-01-01

// #include<stdio.h>
// int main(){
//     int n,a[40];
//     int i,j,temp;
//     scanf("%d\n",&n);
//     for(i = 0;i<n;i++){
//         scanf("%d ",&a[i]);
//     }
//     for(i=0;i<n;i++){
//         for(j = i;i<n;j++){
//             if(a[i]<a[j]){
//                 temp = a[i];
//                 a[i] = a[j];
//                 a[j] = temp;
//              }
//         }
//     }
//     for(i = 0;i<5;i++)
//         printf("%d ",a[i]);
//     return 0;
// }
#include <stdio.h>

int main(){
    int n,a[40];
    int i,j,temp;
    scanf("%d\n",&n);
    for (i = 0;i < n;i++){
        scanf("%d ",&a[i]);
    }
    for (i = 0;i < n;i++){
        for (j = i;j < n;j++){
            if (a[i] < a[j]){
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
    }
    for (i = 0;i < 5;i++)
        printf("%d ",a[i]);
}

上一题