统计学生平均分

来源:百度知道 编辑:UC知道 时间:2024/06/06 11:25:00
题目描述

最近学校正在进行对学生的成绩做一个统计,为马上的奖学金评定

工作做准备。现在有n个同学,由于同学选的科目不一定相同,为了

能客观的的统计,我们采用平均分的方式,平均分是怎么计算的呢

?平首先算出他的学分期末总分,就是该学生每课成绩成绩科的学

分乘积之和,然后用学分期末总分来除于他的选的总学分数(所选

课的学分之和)所得的结果就是该生的平均成绩了。例如小F这年选

了5科,学分分别是4,2,3,2,2分,单科期末成绩分别是81,85

,80,72,76,那么他的学分期末成绩为:
81*4 + 85*2 + 80*3 + 72*2 + 76*2 = 1030。
他的学分总和为:
4 + 2 + 3 + 2 + 2 = 13。
所以他的平均分为1030/13 = 79.23
你要做的事情就是统计学生的平均分。学校也很想知道平均分最高

的是什么情况,所以在你统计所有平均分时,你还必须给出你统计

过的最高平均分和第二高的平均分(如果恰好有两个最高分,就把

他们当作最高和第二高分)

输入

首先输入一个正整数n(n > 1),表示一共有多少个同学(数据)。
在接下来n组数据中:
先一个m表示这个同学有m门课。
接下来m行表示该同学科目的成绩(可能有小数部分如59.99)和学分

输出

每输入一个同学的数据完毕,紧接着输出他的平均分,每个平均分

占一行。
在所有数据输出结束后,输出平均分最高的两个,(输出单独一行

,数据用空格隔开,保留两位小数)

样例输入

3
5
80 2
75 3
88 1
90 4
82 3
4
88 4
90 2
59 1
85 3

#include<iostream>
#include<VECTOR>

using namespace std;

void main()
{
int cnt = 0;
cout<<"学生个数:";cin>>cnt;

double score, d;
int n = 0;
double avg = 0,dd = 0;
vector <double>dvec;
for(int i=0;i<cnt;i++)
{
avg = 0;dd = 0;
cout<<"\n\n学生"<<i+1<<"课程数:";cin>>n;
for(int j=0;j<n;j++)
{
cout<<"\n课程"<<j+1<<"成绩和学分(空格隔开):";cin>>score>>d;
avg = avg + score * d;
dd = dd + d;
}
avg = avg/dd;

cout<<"\n学生"<<i+1<<"平均分是:"<<avg<<endl;
dvec.push_back(avg);
}

for(i=0;i<dvec.size();i++)
for(int j=dvec.size()-1;j>i;j--)
{
if(dvec[i]<dvec[j])
{
double temp = dvec[i];