就是细心点想清楚每个变量什么意思,应该用什么,m,n总是容易弄混。
定义成绩总和要用double;
记得把总成绩除以个数,算平均分;
最后输出的时候要多加一个空行。
#include<iostream>
#include<iomanip>using namespace std;
int main()
{
int n,m; //n是学生人数,m是课程数
while(cin>>n>>m)
{
int student[60][10];
int i,j;
double sum1[10],sum2=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
cin>>student[i][j];
}
for(i=0;i<m;i++){
sum1[i]=0;
for(j=0;j<n;j++)
sum1[i]+=student[j][i]; //sum1[i]存第i门课的总成绩,保存算人数时有用
}
for(j=0;j<m;j++)
sum2+=student[0][j]; //sum2是每个学生的总成绩,算出来就输出,不保存
cout<<fixed<<setprecision(2)<<sum2/m;
for(i=1;i<n;i++)
{
sum2=0;
for(j=0;j<m;j++)
sum2+=student[i][j];
cout<<' '<<fixed<<setprecision(2)<<sum2/m;
}
cout<<endl;
cout<<sum1[0]/n;
for(i=1;i<m;i++)
cout<<' '<<fixed<<setprecision(2)<<sum1[i]/n;
cout<<endl;
int sum=0; //开始计算每门课都高于平均成绩的学生数
for(i=0;i<n;i++)
{
bool a=true;
for(j=0;j<m;j++)
if(student[i][j]<sum1[j]/n)
{
a=false;break;
}
if(a==true)
sum++;
}
cout<<sum<<endl<<endl;
}
}