hdoj:求班级平均成绩的题目
题目描述:假设一个班有n(n<=50)个学生,每人考m(m<=5)门课,求每个学生的平均成绩和每门课的平均成绩,并输出各科成绩均大于等于平均成绩的学生数量。提交结果:Runtime Error(ACCESS_VIOLATION)
#include<stdio.h>
#include<math.h>
void main()
{
int m,n,i,j,num=0,flag=1;
double a[5][50],ave_m[5],ave_n[50],sum;//ave_m[5]:各科的平均成绩;ave_n[50]:每名学生所有功课的平均成绩
while(~scanf("%d%d",&m,&n))
{
//输入每个学生各科的成绩并求各科的平均成绩
for(i=0;i<m;i++)
{
sum=0;
for(j=0;j<n;j++)
{
scanf("%lf",&a[i][j]);
sum+=a[i][j];
}
ave_m[i]=sum/n;
}
//求每名学生m门功课的平均成绩
for(j=0;j<n;j++)
{
sum=0;
for(i=0;i<m;i++)
sum+=a[i][j];
ave_n[j]=sum/m;
}
//统计各门功课均不小于班级平均成绩的学生数目num
num=0;
for(j=0;j<n;j++)//n名学生
{
for(i=0;i<m&&flag;i++)//m门功课
{
if(a[i][j]<ave_m[i])
flag=0;
}
if(i==m-1)
num++;
}
//输出各科平均成绩
for(i=0;i<(m-1);i++)
printf("%.2lf ",ave_m[i]);
printf("%.2lf\n",ave_m[i]);
//输出每名学生所有功课的平均成绩
for(j=0;j<(n-1);j++)
printf("%.2lf ",ave_n[j]);
printf("%.2lf\n",ave_n[j]);
//输出各科成绩均不低于平均成绩的学生数
printf("%d\n",num);
}
}