这是杭电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;
} 展开
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;
} 展开
4个回答
展开全部
首先你定义了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
希望对你有帮助
再有,那个输入你可以给点提示吧(这个可以无视我的。。。哦,貌似题里有要求),还有不知道你第二个循环干啥的?
不是要输出每科的成绩超过平均分的学生吗?你怎么只输出了一个。。。
题太多了,我没看完,只看了问题的描述,然后看的你的函数
我自己改了一下:
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
希望对你有帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if(A[i][j]>sum[j]) 题目要求是大于等于 所以应改成 if(A[i][j]>=sum[j])。
其他的没有看出来有什么问题。
至于while(scanf("%d%d",&n,&m)!=-1)貌似不能退出啊。
其他的没有看出来有什么问题。
至于while(scanf("%d%d",&n,&m)!=-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;
}
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;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我想可能是输出的格式错误,每一行的最后是没有空格的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询