1. 程式人生 > >hdu-求平均成績

hdu-求平均成績

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 <iostream>
#include <iomanip>
#include <cstring>
using namespace std;
int main()
{
    int m,n;
    double sum1[200],sum2[200];
    double a[200][200];
    while (cin>>n>>m)
    {
         memset(sum1,0,sizeof(sum1));
         memset(sum2,0,sizeof(sum2));
         int i,j;
        for(int i=0; i<n; i++)
        {
            for(int j=0; j<m; j++)
            {
                cin>>a[i][j];
                sum1[i]+=a[i][j];
                sum2[j]+=a[i][j];
            }
        }
        for( i=0; i<n; i++)
        if(i==0)
        cout<<fixed<<setprecision(2)<<sum1[i]*1.0/m;
        else
        cout<<" "<<fixed<<setprecision(2)<<sum1[i]*1.0/m;
        cout<<endl;
        for( j=0; j<m; j++)
        if(j==0)
        cout<<fixed<<setprecision(2)<<sum2[j]*1.0/n;
        else
            cout<<" "<<fixed<<setprecision(2)<<sum2[j]*1.0/n;
        cout<<endl;
        int count=0;
        bool yes;
        for( i=0; i<n; i++)
        {
            yes=true;
            for( j=0; j<m; j++)
            {
                if(a[i][j]<sum2[j]*1.0/n)
                {
                    yes=false;
                    break;
                }
            }

            if(yes)
                count++;
        }
        cout<<count<<"\n"<<endl;
    }
    return 0;
}