运用动态数组做,就麻烦了一点。
#include <iostream>
using namespace std;
int main()
{
int m,n;
while(cin>>n>>m)
{ double **a=new double *[n];
for(int i=0;i<n;i++)
{
a[i]=new double [m];
} //创建动态二维数组
double *Student=new double[n];//存储每个学生总成绩
double *Subject=new double[m];//存储每门课程成绩总和
for(int i=0;i<n;i++)Student[i]=0.0; //初始化数组
for(int i=0;i<m;i++)Subject[i]=0.0; //必须初始化数组
int Number=0; //存储人数
for(int i=0;i<n;i++)
{
for(int k=0;k<m;k++)
{
cin>>a[i][k]; //创造行列
Student[i]+=a[i][k]; //存储每个学生的总成绩
Subject[k]+=a[i][k]; //存储每个学科的总成绩
}
}
for(int i=0;i<n;i++)
{
for(int k=0;k<m;k++)
{
if(a[i][k]<Subject[k]/n)break; //比较每个学生各科成绩 。。。SB如我看成平均成绩
else if(k==m-1) Number++; //判断
}
}
//输出数据
for(int i=0;i<n;i++){//输出学生平均成绩
printf("%.2f",Student[i]/m);if(i<n-1)cout<<" "; }
cout<<endl;
for(int i=0;i<m;i++){//输出每门课程平均成绩
printf("%.2f",Subject[i]/n);if(i<m-1)cout<<" "; }
cout<<endl<<Number<<endl<<endl; //输出人数
for(int i=0;i<m;i++) //释放空间,养成好习惯
{
delete [] a[i];
}delete [] a;
delete [] Student;
delete [] Subject;
}
return 0;
}