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思路在代码中:恶心的格式。#include<stdio.h> #include<string.h> int main() { double a[100][10]; double p1[100],p2[10]; int n,m; int i,j,k,flag; double sm,sn; while(scanf("%d%d",&n,&m)!=EOF) { memset(a,0,sizeof(a[0][0])); memset(p1,0,sizeof(p1[0])); memset(p2,0,sizeof(p2[0])); for(i=0; i<n; i++) { sm=0; for(j=0; j<m; j++) { scanf("%lf",&a[i][j]); sm+=a[i][j]; } p1[i]=sm/m; //把每个学生的平均成绩放入p1数组中 } for(j=0; j<m; j++) { sn=0; for(i=0; i<n; i++) { sn+=a[i][j]; } p2[j]=sn/n; //把每个科目平均成绩放入p2数组中 } for(i=0; i<n; i++) { printf("%.2lf",p1[i]); if(i<n-1) printf(" "); //注意 } printf("\n"); for(i=0; i<m; i++) { printf("%.2lf",p2[i]); if(i<m-1) printf(" "); //注意 } printf("\n"); flag=0; for(i=0; i<n; i++) { k=0; for(j=0; j<m; j++) { if(a[i][j]>=p2[j]) //比较每个学生每一科与这一科目平均值大小 { k++; } } if(k==m) flag++; } printf("%d\n\n",flag); //注意格式 } return 0; }