这是杭电oj上的2023题,求高手解答,为什么是wrong answe

#include<stdio.h>main(){intn,m,i,j,k,count;doubleA[50][5],sum1,sum[5];while(scanf("%d... #include <stdio.h>

main()
{
int n,m,i,j,k,count;
double A[50][5],sum1,sum[5];
while(scanf("%d%d",&n,&m)!=-1)
{
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
scanf("%lf",&A[i][j]);
}
}
for (i=0;i<n;i++)
{
sum1=0;
for (j=0;j<m;j++)
{
sum1+=A[i][j];
}
printf("%.2lf ",sum1/(double)m);
}
printf("\n");
for (i=0;i<m;i++)
{
sum[i]=0;
for (j=0;j<n;j++)
{
sum[i]+=A[j][i];
}
sum[i]=sum[i]/(double)n;
printf("%.2lf ",sum[i]);
}
printf("\n");
count=0;
for (i=0;i<n;i++)
{
k=0;
for (j=0;j<m;j++)
{
if(A[i][j]>sum[j])
k++;
}
if(k==m)
count++;
}
printf("%d\n\n",count);
}
return 0;
}
展开
 我来答
百度网友cb7ef91
2012-07-03 · TA获得超过435个赞
知道小有建树答主
回答量:216
采纳率:0%
帮助的人:232万
展开全部
首先你定义了A[50][5],而在输入中没有判断如果输入的n和m值超过了50和5该怎么办,就是错误检测

再有,那个输入你可以给点提示吧(这个可以无视我的。。。哦,貌似题里有要求),还有不知道你第二个循环干啥的?

不是要输出每科的成绩超过平均分的学生吗?你怎么只输出了一个。。。

题太多了,我没看完,只看了问题的描述,然后看的你的函数

我自己改了一下:
main()
{
int n,m,i,j,k,count;
double A[50][5],sum1,sum[5];
printf("输入学生数n和课程数m: ");
while(scanf("%d%d",&n,&m)!=-1)
{
printf("输入成绩:\n");
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
scanf("%lf",&A[i][j]);
}
}
printf("\n");
for (i=0;i<m;i++)
{
sum[i]=0;
for (j=0;j<n;j++)
{
sum[i]+=A[j][i];
}
sum[i]=sum[i]/(double)n;
printf("课程%d平均分%.2lf ",i+1, sum[i]);
}
printf("\n");
count=0;
for(i=0; i<m; i++)
{
k=0;
for(j=0; j<n; j++)
{
if(A[j][i] >= sum[i])
k++;
}
printf("课程%d>=平均分的人数:%d\n",i+1, k);
}
}
return 0;
}

结果
输入学生数n和课程数m: 3 2

输入成绩:
90
98
67
98
89
99
课程1平均分82.00 课程2平均分98.33
课程1>=平均分的人数:2
课程2>=平均分的人数:1

希望对你有帮助
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaot1021
2012-07-03 · TA获得超过326个赞
知道小有建树答主
回答量:274
采纳率:0%
帮助的人:232万
展开全部
if(A[i][j]>sum[j]) 题目要求是大于等于 所以应改成 if(A[i][j]>=sum[j])。

其他的没有看出来有什么问题。

至于while(scanf("%d%d",&n,&m)!=-1)貌似不能退出啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
porker2008
2012-07-03 · TA获得超过1.4万个赞
知道大有可为答主
回答量:7066
采纳率:62%
帮助的人:1.1亿
展开全部
#include <stdio.h>

main()
{
int n,m,i,j,k,count;
double A[50][5],sum1,sum[5];
while(scanf("%d%d",&n,&m)!=-1)
{
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
scanf("%lf",&A[i][j]);
}
}
for (i=0;i<n;i++)
{
sum1=0;
for (j=0;j<m;j++)
{
sum1+=A[i][j];
}
printf("%.2lf%c",sum1/(double)m,i==n-1?'\n':' ');
}
for (i=0;i<m;i++)
{
sum[i]=0;
for (j=0;j<n;j++)
{
sum[i]+=A[j][i];
}
sum[i]=sum[i]/(double)n;
printf("%.2lf%c",sum[i],i==m-1?'\n':' ');
}
count=0;
for (i=0;i<n;i++)
{
k=0;
for (j=0;j<m;j++)
{
if(A[i][j]>=sum[j]) // 注意这里使用 >=
k++;
}
if(k==m)
count++;
}
printf("%d\n\n",count);
}
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
z00o00
2012-07-03
知道答主
回答量:17
采纳率:0%
帮助的人:5.2万
展开全部
我想可能是输出的格式错误,每一行的最后是没有空格的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式