得分排行(c/python)

本文介绍了一种根据学生考试分数进行排名的方法。通过建立排名数组,遍历分数数组并更新排名,最后得到每个分数对应的排名。分别给出了C语言和Python两种实现方式,实现了分数比较和排名更新的逻辑。

说明 假设有一教师依学生座号输入考试分数,现希望在输入完毕后自动显示学生分数的排行 ,当然学生的分数可能相同。

解法:
用排名的阵列去走访分数阵列
排名阵列rank[N+2]
这里写图片描述

接下来走访分数阵列score[N+1]:
并在分数所对应的排行阵列索引位置加1,如60分,则rank[60]++

这里写图片描述

将分数排行的最右边设置为1,即rank[N+1]=1,然后依次将右边的元素加置左边一个元素
这里写图片描述

c代码

#include<stdio.h>
#include<stdlib.h>

#define N 100

int main()
{
    int score[N + 1] = { 0 };  //分数
    int rank[N + 2] = { 0 }; //排名
    int i = 0;
    while (1)
    {
        printf("请输入分数:");
        scanf_s("%d", &score[i]);
        if (score[i] == -1)
            break;
        rank[score[i]]++;
        i++;
    }
    rank[N + 1] = 1;
    for (int j = N; j >= 0; j--)
    {
        rank[j] = rank[j + 1] + rank[j];
    }

    for (int j = 0; j < i; j++)
    {
        printf("%d %d\n", score[j], rank[score[j] + 1]);
    }
    system("pause");
    return 0;
}

python(法二)

将每一个分数起始看成第一,和其他分数做对比,如果小于其他分数,则加1
如score[3]={60,56,90},rank[3]={0}
首先rank[0]=1,(即将score[0],看成第一),60<90,则rank[0]+1=2,成第二名,同理,对56,90进行同样对比

import numpy as np

N=100
score=np.zeros(N+1)
rank=np.zeros(N+1)
count =0
if __name__=="__main__":
    while 1:     
        score[count]=int(input("输入分数:"))
        if score[count]==-1:
            break
        count+=1
    for i in range(count+1):
        rank[i]=1
        for j in range(count+1):
            if score[i]<score[j]:
                rank[i]+=1
                pass
            pass
        pass
    for i in range(count):
        print("%d %d"%(score[i],rank[i]))
    pass
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值