我想说这道题我还没弄明白我错哪了,交了20多遍一直都是Runtime Error,改了N次还是不对,后来搜了一下,说是数组开小了,又把数组开大,还不对,又改发现一个平均值求错,再改,还不对,洗洗睡吧。上午用了多个测试样例,结果第对的,可还是Runtime Error,于是就搜了一个跟自己差不多的代码,发现方法一样,输出有点差别,改完后就AC,难道真是输出错了,还是for循环多了?等我想明白了再说吧……

题意:给出N个同学(N<=50),M(M<=5)门课程的成绩,求每个学生的平均成绩和每门课的平均成绩,以及各科成绩都大于平均成绩的人数

输入:多个测试样例,第一行:n, m,接着输入n行,m个 成绩

输出:第一行:n个学生的平均成绩,结果保留两位小数。第二行:m门课的平均成绩,结果保留两位小数。第三行:每门课成绩都大于平均成绩的人数

题解:首先考虑到用二维数组来处理,然后分别求出每一行的平均值(即每个学生的平均成绩),每一列的平均值(即每一门课的平均成绩),再进行每个学生每一门课的成绩与该科平均成绩的比较,统计人数。需要注意的是,用二维数组需要多次双重循环,可能会超时,所以要尽力少使用循环,注意输出的格式控制。

难点:(1)在计算每门课的平均成绩时,要注意循环范围,计算的是每一列的平均值。(2)进行成绩与平均成绩比较时要注意循环控制,是每个学生的每一门成绩都大于该课平均成绩才能让标准符号++。(3)在每次计算平津值完后注意将求和变量置为0(无论是列还是行),以便计算下一个。

代码解释:刚开始我是用数组存储每一个学生的平均成绩和每一门课的平均成绩,然后单独输出,结果是Runtime Error,至于到底是输出错误还其他错误,容我再想想……

#include
int main()
{
int a[100][10]; //定义数组记录成绩,数组尽量开大
double b[10]; //因为后面要做比较,用b[10]来存放每门课的平均成绩
int n,m,count,c,k,i,j;
double avg1,avg2; //avg1每个人的平均成绩,avg2每门课的平均成绩
double sum1,sum2; //sum1每个人的总成绩,每门课的总成绩sum2,注意类型声明为double
while(scanf("%d%d",&n,&m)!=EOF)
{
c=0;
avg1=avg2=0;
sum1=sum2=count=0;
for( i=0;i<n;i++) //输入成绩
for( j=0;j<m;j++)
scanf("%d",&a[i][j]);
for( i=0;i<n;i++) //每个人的平均成绩,对每一行求和,除以科数m
{
for( j=0;j<m;j++)
{
sum1+=a[i][j];
}
avg1=sum1/m;
if(i!=0) printf(" "); //输出每个人的平均成绩,注意输出格式
printf("%.2lf",avg1);
sum1=0;
}
printf("\n");
for( i=0;i<m;i++) //每门课的平均成绩,注意i,j,的循环范围,求和是a[j][i];即对每一列求和
{
for( j=0;j<n;j++)
{
sum2+=a[j][i];
}
avg2=sum2/n; //除以人数n
if(i!=0) printf(" "); //输出每门课的平均成绩,注意输出格式
printf("%.2lf",avg2);
sum2=0;
b[c++]=avg2; //把每门课的平均成绩记录到b[10]
}
printf("\n");
for(i=0;i<n;) //把每个学生每门课的成绩与该课平均成绩进行比较
{
k=0;
for(j=0;j<m;j++) { if(a[i][j]>=b[j]) //如果该科成绩大于平均成绩则标志K++
k++;
else
break; //如果有一科不符合则跳出循环,执行下一个学生的判断
}
if(k==m) //如果该学生的所有课成绩都大于平均成绩,则标志count++
count++;
i++; //进行下一个学生的比较
} printf("%d\n",count);//输出人数并换行
printf("\n"); //注意题目要求是每一个实例后跟一个空行
}
return 0;
}

HDU 2023题解分析的更多相关文章

  1. HDU 2023 求平均成绩

    Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Practice HDU ...

  2. HDU - 5970 题解

    题目链接 HDU - 5970 分析 很显然\(f(x,y)\)与\(f(x+y*k,y)\)的结果相同,因为它们在第一次取模后会变成相同的式子 我们再看一下数据的范围,突破口肯定在\(m\)那里 那 ...

  3. 传递 HDU - 5961 题解

    题目传送门 分析 题目大意:给一个竞赛图,将图分成两部分,判断两部分的图是否符合传递闭包,a->b,b->c,则a->c 这道题用Floyd硬跑的显然n\({^3}\)会T 如果用b ...

  4. HDU1171:Big Event in HDU(多重背包分析)

    通过分析,要使A>=B并且差值最小.所以只要使sum/2的容量下,B最大就Ok了 #include<iostream> #include<cstdio> #include ...

  5. hdu 5185 动态规划 分析降低复杂度

    这题说的是 x[1]+x[2]+x[3]+…+x[n]=n, 这里 0 <= x[i] <= n && 1 <= i <= n x[i] <= x[i+1 ...

  6. 2014年北京网络赛 Instrusive HDU 5040 题解 优先队列

    网赛的时候看了这道题,发现就是平常的那种基础搜索题. 由于加了一个特殊条件:可以一次消耗3秒或原地停留1秒. 那就不能使用简单的队列了,需要使用优先队列才行. 题意 告诉一副地图:一个起点,一个终点, ...

  7. HDU 5984 题解 数学推导 期望

    Let’s talking about something of eating a pocky. Here is a Decorer Pocky, with colorful decorative s ...

  8. hdu 5418 题解

    第一眼看到这题,哇,这不是我刚做完的题吗?大水题!然后 这题表面很水,实际上有点坑. 题意 求经过 $ 1 - n $(不能遗漏) 并且回到 $ 1 $ 的最短路. 在看这题之前我们可以来看下这题 最 ...

  9. HDU 1231 题解

    题面: 最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem ...

随机推荐

  1. (iOS)Storyboard/xib小技巧

    1.选择被view覆盖住的view 当你想直接在view中选择自己想要的元素时,但是又碍于一个view上叠加的元素太多很难直接选中,那么在这时,你同时按住键盘上的shift和 control键,然后在 ...

  2. sql发邮件

    DROP PROCEDURE USP_CheckProductCodeRepeatAndSendMail go ---检查商家是否有重复的商品编号,如果有则发送给系统配置中接收的用户邮箱 CREATE ...

  3. 浅谈 android-query

    介绍:android-query他是在GitHub上的一个开源轻量级的封装库,它集成了网络 .图片加载等模块,可以应用在android中的一些异步应用以及UI的操纵上,通过使用这个框架,使androi ...

  4. Windows Azure 自动伸缩已内置

     WindowsAzure平台提供的主要优点之一是能够在有需要时快速缩放云中的应用程序以响应波动.去年7月以前,您必须编写自定义脚本或使用其他工具(如Wasabi或MetricsHub)来启用自动 ...

  5. Android系统JNI的实现方式

     Android系统JNI的实现方式 All rights reserved JNI(Java Native Interface)定义了一种Java代码调用C或者C++代码等其它代码的方式. 在A ...

  6. sharepoint 自定义字段实现省市联动

    最后实现效果如下:设置栏如下:解决方案结构如下: fldtypes_RoyCustomField.xml 内容如下: <?xml version="1.0" encoding ...

  7. bzoj 2763: [JLOI2011]飞行路线 分层图

    题目链接 n个点m条路, 每条路有权值,  给出起点和终点, 求一条路使得权值最小.可以使路过的路中, k条路的权值忽略. 其实就是多一维, 具体看代码 #include<bits/stdc++ ...

  8. 用PyRestful快速构建Tornado下REST APIs 的支持

    一.安装PyRestful库 $ pip install pyrestful 二.使用案例 (一)books_service.py # -*- coding: utf-8 -*- import tor ...

  9. [LeetCode]题解(python):097-Interleaving String

    题目来源: https://leetcode.com/problems/interleaving-string/ 题意分析: 给定字符串s1,s2,s3,判断s3是否由s1和s2穿插组成.如“abc” ...

  10. fork出的子进程和父进程的继承关系【转载】

    [原文地址]http://blog.163.com/dengjingniurou@126/blog/static/53989196200962924412524/ fork出的子进程和父进程的继承关系 ...