描述
根据输入统计学生的平均分及各科平均分。
输入
第一行为学生的个数n及课程数m,第二行至m+1行为课程名,接下来为各学生的姓名及成绩,每个学生的信息占两行,第一行为学生的姓名,第二行为m个实数,表示学生各科成绩。
输出
输出包含2n+2m行,前2n行为学生的平均分,其中第一行为学生姓名,第二行为该生的平均分,后2m行为各课程的平均分,其中第一行为课程名,第二行为对应的平均分。(保留两位小数)
样例输入
3 2
english
computer
zhangshan
87.5 98
lisi
80 78
wangwu
60 59
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
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;
}