杭电oj 第2023题 求平均成绩,我这程序错哪里了?

#include<stdio.h>#include<string.h>intmain(){doublea[50][5];doublen_cj[50],m_cj[5],su... #include <stdio.h>
#include<string.h>
int main ()
{
double a[50][5];
double n_cj[50],m_cj[5],sum=0;
int i,j,m,n,num=0,t=0;
while (scanf ("%d%d",&n,&m)!=EOF)
{
memset(a,0,sizeof(a));
for (i=0;i<n;i++)
for (j=0;j<m;j++)
scanf ("%lf",&a[i][j]);

for (i=0;i<n;i++) //求每个学生的平均成绩
{
for (j=0;j<m;j++)
{
sum+=a[i][j];
}
n_cj[i]=sum/m;
sum=0;
}

for (i=0;i<m;i++) //求每门课的平均成绩
{
for (j=0;j<n;j++)
{
sum+=a[j][i];
}
m_cj [i]=sum/n;
sum=0;
}

for (i=0;i<n;i++) //求学生数
{
for (j=0;j<m;j++)
{
if (a[i][j]>=m_cj[j])
t++;
}
if (t==m)
{
num++;
t=0;
}
}

for (i=0;i<n;i++)
{
printf ("%.2lf",n_cj[i]);
if (i!=n-1)
printf (" ");
}
printf ("\n");

for (i=0;i<m;i++)
{
printf ("%.2lf",m_cj[i]);
if (i!=m-1)
printf (" ");
}
printf ("\n");
printf ("%d\n\n",num);

t=num=sum=0;
}
return 0;
}

假设一个班有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
展开
 我来答
nanhay
2013-12-13 · TA获得超过1173个赞
知道小有建树答主
回答量:824
采纳率:0%
帮助的人:997万
展开全部
//******************************************************************************
// 杭电2023 求平均成绩 代码已AC
// 注意看看t=0 这一句即可。。。
// 另外,程序还可以简化一些:比如输入成绩时顺带计算每个学生的平均成绩
//******************************************************************************
#include <stdio.h>
#include<string.h>
int main ()
{
double a[50][5];
double n_cj[50],m_cj[5],sum=0;
int i,j,m,n,num=0,t=0;
while (scanf ("%d%d",&n,&m)!=EOF)
{
memset(a,0,sizeof(a));
for (i=0;i<n;i++)
for (j=0;j<m;j++)
scanf ("%lf",&a[i][j]);
for (i=0;i<n;i++) //求每个学生的平均成绩
{
for (j=0;j<m;j++)
{
sum+=a[i][j];
}
n_cj[i]=sum/m;
sum=0;
}
for (i=0;i<m;i++) //求每门课的平均成绩
{
for (j=0;j<n;j++)
{
sum+=a[j][i];
}
m_cj [i]=sum/n;
sum=0;
}
for (i=0;i<n;i++) //求学生数
{
for (j=0;j<m;j++)
{
if (a[i][j]>=m_cj[j])
t++;
}
if (t==m) // *********************************************
{ // 把 t=0;这句放在if后面,
num++; //不然只有在t==m的情况下,t才归零
}
t=0; //*********************************************
}
for (i=0;i<n;i++)
{
printf ("%.2lf",n_cj[i]);
if (i!=n-1)
printf (" ");
}
printf ("\n");
for (i=0;i<m;i++)
{
printf ("%.2lf",m_cj[i]);
if (i!=m-1)
printf (" ");
}
printf ("\n");
printf ("%d\n\n",num);
t=num=0,sum=0;
}
return 0;
}
//******************************************************************************
// 祝学习进步,更上一层楼 *(^-^)*
//******************************************************************************
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式