成绩统计(顺序线性表)

来源:互联网 发布:音乐软件最好 编辑:程序博客网 时间:2024/06/01 09:56

描述

根据输入统计学生的平均分及各科平均分。

输入

第一行为学生的个数n及课程数m,第二行至m+1行为课程名,接下来为各学生的姓名及成绩,每个学生的信息占两行,第一行为学生的姓名,第二行为m个实数,表示学生各科成绩。

输出

输出包含2n+2m行,前2n行为学生的平均分,其中第一行为学生姓名,第二行为该生的平均分,后2m行为各课程的平均分,其中第一行为课程名,第二行为对应的平均分。(保留两位小数)

样例输入

3 2
english
computer
zhangshan
87.5 98
lisi
80 78
wangwu
60 59

 

样例输出

zhangshan
92.75
lisi
79.00
wangwu
59.50
english
75.83
computer
78.33

 

#include<iostream>#include<cstring>#include<cstdio>using namespace std;string s[10];struct node{    double a[20];    string xm;};struct list{    node *elem;    int length;    double b[20];};void initializer_list(list &l,int n){   l.elem=new node[n];   l.length=0;   memset(l.b,0,sizeof(l.b));}void create(list &l,int m){    double s=0;    int i;    cin>>l.elem[l.length].xm;    for(i=0;i<m;i++)    {        cin>>l.elem[l.length].a[i];        s+=l.elem[l.length].a[i];        l.b[i]=l.b[i]+l.elem[l.length].a[i];    }    l.elem[l.length].a[i]=s/m;    l.length++;}int main(){    list l;    int n,m,i;    while(cin>>n>>m)    {        for(i=0;i<m;i++)cin>>s[i];        initializer_list(l,n);        for(i=0;i<n;i++)            create(l,m);        for(i=0;i<n;i++)        {            cout<<l.elem[i].xm<<endl;            printf("%.2lf\n",l.elem[i].a[m]);        }        for(i=0;i<m;i++)        {            cout<<s[i]<<endl;            printf("%.2lf\n",l.b[i]/n);        }    }    return 0;}


 

原创粉丝点击