Problem Description
假设一个班有n(n<=50)个学生,每人考m(m<=5)门课,求每个学生的平均成绩和每门课的平均成绩,并输出各科成绩均大于等于平均成绩的学生数量。
Input
输入数据有多个测试实例,每个测试实例的第一行包括两个整数n和m,分别表示学生数和课程数。然后是n行数据,每行包括m个整数(即:考试分数)。
Output
对于每个测试实例,输出3行数据,第一行包含n个数据,表示n个学生的平均成绩,结果保留两位小数;第二行包含m个数据,表示m门课的平均成绩,结果保留两位小数;第三行是一个整数,表示该班级中各科成绩均大于等于平均成绩的学生数量。
每个测试实例后面跟一个空行。
每个测试实例后面跟一个空行。
Sample Input
2 2
5 10
10 20
Sample Output
7.50 15.00
7.50 15.00
1
分析:
注意点:
1 #include <stdio.h> 2 int main() 3 { 4 int m,n,i,j,x,f; 5 int s[50][5]; 6 double sum,aver[5]; 7 while(~scanf("%d %d",&n,&m)) 8 { 9 for(i=0;i<n;i++) 10 for(j=0;j<m;j++) 11 scanf("%d",&s[i][j]); 12 for(i=0;i<n;i++) 13 { 14 for(sum=j=0;j<m;j++) 15 { 16 sum+=s[i][j]; 17 } 18 printf("%.2f",sum*1.0/m); 19 if(i!=n-1) 20 printf(" "); 21 } 22 printf(" "); 23 for(j=0;j<m;j++) 24 { 25 for(sum=i=0;i<n;i++) 26 { 27 sum+=s[i][j]; 28 } 29 aver[j]=sum/n*1.0; 30 printf("%.2f",aver[j]); 31 if(j!=m-1) 32 printf(" "); 33 } 34 printf(" "); 35 for(x=i=0;i<n;i++) 36 { 37 for(f=j=0;j<m;j++) 38 { 39 if(s[i][j]<aver[j]) 40 { 41 f=1; 42 break; 43 } 44 } 45 if(!f) 46 x++; 47 } 48 printf("%d ",x); 49 } 50 return 0; 51 }