杭电2023

题目: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 }
1

猜你喜欢

转载自www.cnblogs.com/zjl192628928/p/9205563.html