成绩排名(PTA)

某学校的成绩单算法如下:

最终成绩 = (A课成绩 * A课学分 + B课成绩 * B课学分 + C课成绩 * C课学分 + D课成绩 * D课学分)/总学分,结果保留两位小数。

如某同学成绩如下:

课程名称 学 分 分 数
算法分析与设计 4.0 90
大学物理 3.5 85
Python程序设计 3.0 95
计算机系统基础 4.0 82.5
线性代数 3.0 80

则他的最终成绩为

(4.0 * 90 + 3.5 * 85 + 3.0 * 95 + 4.0 * 82.5 + 3.0 * 80)/(4.0+3.5+3.0+4.0+3.0) = 86.43

现在给你几组学生的成绩,要求你计算他们的最终成绩,并对他们进行排名。

输入格式:

第一行输入两个数,学生的个数S(10000以内)及课程数C(100以内)。

第二行输入C个数,分别是C门课程的学分。

接下来的S行,每一行有C个数,这C个数分别代表学生C门课的成绩,每门课的成绩出现顺序与第二行的学分一一对应。

每门课的成绩满分为100分,学分最高不超过10。

输出格式:

输出有S行,由高到低的输出学生的最终成绩,以及学生在输入中出现的次序(从1开始),如果有最终成绩相同的学生,则他们的顺序按输入中的次序有小到大排列。成绩保留两位有效数字。

输入样例:

在这里给出一组输入。例如:

4 2
2.5 4
90 80
94 92.5
80 75
90 95

输出样例:

在这里给出相应的输出。例如:

93.08 2
93.08 4
83.85 1
76.92 3
#include
using namespace std;
void swap(int &a, int &b)
{
    int temp = a;
    a = b;
    b = temp;
}
int main(){
    int s,c,i,j;//s个学生,c个课程
    cin >> s >> c;
    float num[c],ct=0;//num每个学分,ct总学分
    for(i=0;i> num[i];
        ct += num[i];
    }
    float val[s]={0},k;//val存储成绩,k每次输入成绩
    int val2[s]={0};
    for(i=0;i> k;
            val[i]+=k*num[j];
            val2[i]=i+1;
        }
    val[i]/=ct;
    }
    for(i=0;i

 

你可能感兴趣的:(c++)