读书人

杭电ACM2023求解解决办法

发布时间: 2012-03-09 21:42:55 作者: rapoo

杭电ACM2023求解
[code=C/C++][/code]
#include"stdio.h"
int main()
{
int a[6][51];
int flag = 0, i, j, m, n, num;
double c[6], d[51];
double sum1 = 0, sum2 = 0;
while(scanf("%d%d", &n, &m) != EOF)//n表示学生人数,m表示学科门数
{
if(n==0||m==0)continue;
for(i = 0; i < n; i++)//输入
for(j = 0; j < m; j++)
{
scanf("%d", &a[i][j]);
//printf("a[][]=%d ", a[i][j]);
}
for(i = 0; i < m; i++)//求每门的平均分
{
sum1 = 0;
for(j = 0; j < n; j++)
sum1 = sum1 + a[j][i];
c[i] = sum1 / n;
//printf("c[i]=%lf ", c[i]);
}

for(i = 0; i < n; i++)//学生平均成绩
{
sum2 = 0;
for(j = 0; j < m; j++)
sum2 = sum2 + a[i][j];
d[i] = sum2 / m;
//printf("c[i]=%lf ", d[i]);
}
num = 0;
for(i = 0; i < n; i++)//计算每门成绩大于该课程平均分的学生人数
{
flag = 1;
for(j = 0; j < m; j++)
if(a[i][j] < c[j])
{
flag=0;
break;
}
if(flag)
num++;
}
for(i = 0; i < n; i++)//输出学生平均成绩
printf("%.2lf ", d[i]);
printf("\n");

for(i = 0; i < m; i++)//输出每门平均成绩
printf("%.2lf ", c[i]);
printf("\n");

printf("%d\n\n", num);//输出达到要求的学生人数
}
return 0;
}


不知道哪里错了,求解

[解决办法]
以下声明与后面的使用不符:
int a[6][51];
改为
int a[51][6];

每行输出结尾多了空格。要改为:
for(i = 0; i < n; i++)//输出学生平均成绩
{
printf("%.2lf", d[i]);
if(i < n-1) printf(" ");
}
printf("\n");

for(i = 0; i < m; i++)//输出每门平均成绩
{
printf("%.2lf", c[i]);
if(i < m-1) printf(" ");
}
printf("\n");
[解决办法]
4L说得对

读书人网 >C语言

热点推荐