题目:http://acm.hdu.edu.cn/showproblem.php?pid=2023
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
开始提交老是不能被AC,试了很多次,最后试试改把本来定义成b[n],c[m]改成b[55],c[6],就过了,不知道为啥这样就过了,定义成那样有问题吗????
1 #include<iostream> 2 #include<iomanip> 3 using namespace std; 4 int main(){ 5 int n,m; //n为 学生数,m为课程数 6 double a[55][6]={0}; //设置二维数组用来存学生的各科成绩 7 while(cin>>n>>m){ 8 double b[55]={0}; //用来存每个学生成绩总分 9 double c[6]={0}; //用来存各科的平均分 10 for(int i=0;i<n;i++){ 11 for(int j=0;j<m;j++){ 12 cin>>a[i][j]; //输入学生的各科成绩 13 b[i]+=a[i][j]; //将二维数组每行加起来对应每个学生的各科成绩和 14 } 15 } 16 for(int i=0;i<n;i++){ 17 cout<<setiosflags(ios::fixed)<<setprecision(2)<<b[i]/m; 18 if(i!=n-1) cout<<" "; 19 } 20 cout<<endl; 21 for(int i=0;i<m;i++){ 22 for(int j=0;j<n;j++){ 23 c[i]+=a[j][i]; //将二维数组的每列加起来对应每科成绩的总分 24 } 25 } 26 for(int i=0;i<m;i++){ 27 cout<<setiosflags(ios::fixed)<<setprecision(2)<<c[i]/n; 28 if(i!=m-1) cout<<" "; 29 } 30 cout<<endl; 31 int count=0; //用来存每科成绩都超过各科平均分的学生人数 32 for(int i=0;i<n;i++){ 33 for(int j=0;j<m;j++){ 34 if(a[i][j]<c[j]/n) break; 35 if(j==m-1) 36 count++; 37 } 38 } 39 cout<<count<<endl; 40 cout<<endl; 41 } 42 return 0; 43 }