zoukankan      html  css  js  c++  java
  • HDU2023求平均成绩

     题目链接: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
    1
     
     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 
     5 int main()
     6 {
     7     double m,n;
     8     while(cin >> n >> m)//n个学生,m个科目 
     9     {
    10         double fenshu[51][6] = {0},fen[51] = {0};//fenshu二维数组记录每个学生的各科分数,fen一维数组记录某一学生的总分 
    11         for(int i = 0;i < n;i++)
    12         {
    13             for(int j = 0;j < m;j++)
    14             {
    15                 cin >> fenshu[i][j];//循环读入n*m个成绩数据 
    16                 fen[i] += fenshu[i][j];//对每个学生的成绩进行累加,并且记录在一维数组fen中 
    17             }
    18         }
    19         //输出第一行 
    20         for(int i = 0;i < n;i++) //注意控制输出格式,求出每个学生的平均成绩 
    21         {
    22             if(i == n - 1)
    23                 printf("%.2lf",fen[i] / m);
    24             else
    25                 printf("%.2lf ",fen[i] / m);
    26         }
    27         cout << endl;
    28         //输出第二行 
    29         double ave1[6] = {0},ave2[6] = {0};//ave1数组记录各科的总分,ave2数组记录各科的平均分,注意输出时的格式 
    30         for(int j = 0;j < m;j++)//外层循环为j 相当于对某一列求总和 
    31         {
    32             for(int i = 0;i < n;i++)//内层循环为i//首先对各科的分数累加 
    33                 ave1[j] += fenshu[i][j];
    34             ave2[j] = ave1[j] / n;//取平均 
    35             if(j == m - 1)
    36                 printf("%.2lf",ave2[j]);
    37             else
    38                 printf("%.2lf ",ave2[j]);
    39         }
    40         cout << endl;
    41         //计算有几个学生的各科成绩都大于平均成绩的 
    42         int temp,count = 0;
    43         for(int i = 0;i < n;i++)//依次遍历 
    44         {
    45             temp = 0;
    46             for(int j = 0;j < m;j++)
    47                 if(fenshu[i][j] >= ave2[j])//依题意,如果学生的某一学科的成绩会大于等于这个学科的平均成绩,那么临时变量temp加一 
    48                     temp++; 
    49             if(temp == m)//说明如果学生的m个学科的成绩都大于各个学科的平均成绩,则符合条件,计数器加一 
    50                 count++;
    51         }
    52         cout << count << endl << endl;//注意输出格式 
    53     }
    54     return 0;
    55 }

     这实际上是一道水题,在我们学校上的测试平台上是 萌新题,我做了2-3个小时,我哭了/(ㄒoㄒ)/~~

    思路是这样的,可将输入学生的成绩看成一个矩阵,最后只需对矩阵的行和列进行处理与判断就好了,太水了我/(ㄒoㄒ)/~~

  • 相关阅读:
    BZOJ1257:[CQOI2007]余数之和——题解+证明
    BZOJ3781:小B的询问——题解
    BZOJ2038:[2009国家集训队]小Z的袜子——题解
    BZOJ3052 & UOJ58:[WC2013]糖果公园——题解
    BZOJ1086:[SCOI2005]王室联邦——题解
    BZOJ1878:[SDOI2009]HH的项链——题解
    BZOJ2453:维护队列——题解
    美团新零售招聘-高级测试开发(20k-50k/月)
    Shopee招聘-测试开发leader(30k-60k/月)
    蚂蚁金服招聘-无线测试开发(20k-36k/月)
  • 原文地址:https://www.cnblogs.com/biaobiao88/p/11795823.html
Copyright © 2011-2022 走看看