• 求平均成绩


    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
     
    code:

    #include<stdio.h>
    int main()
    {
                int n,m,i,j,e,count,flag,a[50][5];
                double aver[50],sum;                                    //sum 必须为 double型
                while(scanf("%d%d",&n,&m)!=EOF)
                {
                       for(i=0;i<n;i++)
                             for(j=0;j<m;j++)
                                  scanf("%d",&a[i][j]);
                           for(e=0,i=0;i<n;i++)
                          {
                                 sum=0;
                                 for(j=0;j<m;j++)
                                         sum=sum+a[i][j];
                                 aver[i]=sum/m;
                                 if(e!=0)
                                         printf(" ");
                                 printf("%.2lf",aver[i]);
                                 e++;
                        }
                        printf(" ");
                       for(e=0,j=0;j<m;j++)
                       {
                                sum=0;
                                for(i=0;i<n;i++)
                                        sum=sum+a[i][j];
                               aver[j]=sum/n;
                               if(e!=0)
                               printf(" ");
                               printf("%.2lf",aver[j]);
                               e++;
                     }
                      printf(" ");
              count=0;
              for(i=0;i<n;i++)
              {
                   flag=1;
                   for(j=0;j<m;j++)
                   if(a[i][j]<aver[j])
                   {
                         flag=0;
                         break;
                   }
              if(flag==1)
                   count++;
             }
            printf("%d ",count);     // 作用:每个测试实例后面跟一个空行。
           }
            return 0;
    }

     
     
     
     
     
     
  • 相关阅读:
    SDUT-3376_数据结构实验之查找四:二分查找
    SDUT-3375_数据结构实验之查找三:树的种类统计
    SDUT-3373_数据结构实验之查找一:二叉排序树
    深度优先遍历和广度优先遍历
    SDUT-2498_AOE网上的关键路径
    SDUT-2140_判断给定图是否存在合法拓扑序列
    SDUT-2144_最小生成树
    SDUT-3364_欧拉回路
    SDUT-3363_驴友计划
    Java练习 SDUT-2271_Eddy的难题
  • 原文地址:https://www.cnblogs.com/gongpulin/p/3892997.html
Copyright © 2020-2023  润新知