求平均成绩 【杭电-HDOJ-2023】 附题+详解

/*

求平均成绩

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 62086    Accepted Submission(s): 14888

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<stdio.h>

#include<string.h>

int main()

{

int a[55][10];

double b[55],c[10];       //注意类型

int i,j,n,m,k,t;

double p,q;

while(~scanf("%d%d",&n,&m))   //要以!=EOF结尾,不能用while(scanf("%d%d",&n,&m),n+m) 题目中没有明确要求时,默认为EOF

{

memset(b,0,sizeof(b));

memset(c,0,sizeof(c));

for(i=0;i<n;i++)

{

p=0;

for(j=0;j<m;j++)

{

scanf("%d",&a[i][j]);

p+=a[i][j];

}

b[i]=p/m;

}

for(j=0;j<m;j++)

{

q=0;

for(i=0;i<n;i++)

{

q+=a[i][j];

}

c[j]=q/n;

}

t=0;

for(i=0;i<n;i++)

{

k=1;

for(j=0;j<m;j++)

{

if(a[i][j]<c[j])

{

k=0;

break;

}

}

if(k)   t++;

}

for(i=0;i<n-1;i++)

{

printf("%.2lf ",b[i]);

}

printf("%.2lf\n",b[n-1]);

for(j=0;j<m-1;j++)

{

printf("%.2lf ",c[j]);

}

printf("%.2lf\n",c[m-1]);

printf("%d\n\n",t);       //勿忘:题目最后一句话--每个测试实例后面跟一个空行

}

return 0;

}

想我所想:

解题思路:定义三个数组,进行加,乘运算

难点详解:输出格式要注意 一个数组分两次输出,注意.2lf  还有k的位置,discuss里面很多时候都是不完整的代码。

关键词:  EOF  .2lf

解题人: 杨圣洁

解题时间:2014.8.5

解题体会:被discuss坑了一次 ,还有EOF

求平均成绩 【杭电-HDOJ-2023】 附题+详解

时间: 2024-10-20 18:20:43

求平均成绩 【杭电-HDOJ-2023】 附题+详解的相关文章

最小公倍数 【杭电-HDOJ-1108】 附题+详解

/* 最小公倍数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 32933    Accepted Submission(s): 18398 Problem Description 给定两个正整数,计算这两个数的最小公倍数. Input 输入包含多组测试数据,每组只有一行,包括两个不大于1000的正整数. Output 对于每个测试用

两分数求和化最简【杭电-2503】 附题

/* a/b + c/d Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7731    Accepted Submission(s): 4462 Problem Description 给你2个分数,求他们的和,并要求和为最简形式. Input 输入首先包含一个正整数T(T<=1000),表示有T组测试数据,然后是T行数据,每行包含四

最大公约数的最小倍数 【杭电-2504】 附题

/* Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 148   Accepted Submission(s) : 19 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description 有三个正整数a,b,c(0<a,b,c<10^6),其中c不等于

偶数求和 【杭电-2015】 附题

/* 偶数求和 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 45172    Accepted Submission(s): 19724 Problem Description 有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值.

循环多少次? 【杭电--HDOJ-1799】 附题

/* 循环多少次? Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2839    Accepted Submission(s): 1028 Problem Description 我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分.例如, 如果代码中出现 for(i=1;i<=n;i++) OP ; 那么做了n次O

整除的尾数 【杭电-2099】 附题

/* 整除的尾数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 23096    Accepted Submission(s): 9792 Problem Description 一个整数,只知道前几位,不知道末二位,被另一个整数除尽了,那么该数的末二位该是什么呢? Input 输入数据有若干组,每组数据包含二个整数a,b(0<a<

大菲波数 【杭电-HDOJ-1715】 附题

/* 大菲波数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 11168    Accepted Submission(s): 3782 Problem Description Fibonacci数列,定义如下: f(1)=f(2)=1 f(n)=f(n-1)+f(n-2) n>=3. 计算第n项Fibonacci数值. Input

2^x mod n = 1 【杭电-HDOJ-1395】 附题

/* 2^x mod n = 1 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 11800    Accepted Submission(s): 3673 Problem Description Give a number n, find the minimum x(x>0) that satisfies 2^x mod n = 1.

与众不同 【杭电-2095】 附题

/* find your present (2) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/1024 K (Java/Others) Total Submission(s): 15255    Accepted Submission(s): 5780 Problem Description In the new year party, everybody will get a "special present&qu