杭电2020,为什么总是WA?
原题地址:
http://acm.hdu.edu.cn/showproblem.php?pid=2023
我的代码:
#include <stdio.h>
int main(void)
{
int i, j, n, m, s, prime, st[50][5];
double ave_body[50], ave_class[5];
while (scanf("%d %d", &n, &m) != EOF)
{
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
scanf("%d", &st[i][j]);
}
}
//求每个人的总分、平均分
for (i = 0; i < n; i++)
{
ave_body[i] = 0;
for (j = 0; j < m; j++)
{
ave_body[i] += st[i][j];
}
ave_body[i] /= m;
}
//求每门课的总分、平均分
for (j = 0; j < m; j++)
{
ave_class[j] = 0;
for (i = 0; i < n; i++)
{
ave_class[j] += st[i][j];
}
ave_class[j] /= n;
}
//求各门成绩都及格的学生人数
s = 0;
for(i = 0; i < n; i++)
{
prime= 0;
for (j = 0; j < m; j++)
{
if (st[i][j] < ave_class[j])
prime = 1;
break;
}
if (prime == 0)
s++;
}
//输出结果:
for (i = 0; i < n; i++)
{
printf("%.2lf", ave_body[i]);
if (n != n - 1)
printf(" ");
}
printf("\n");
for (j = 0; j < m; j++)
{
printf("%.2lf", ave_class[j]);
if (j != m - 1)
printf(" ");
}
printf("\n%d\n\n", s);
}
return 0;
}
有两个小错误,看注渣帆释。
#include <stdio.h>
int main(void)
{
int i, j, n, m, s, prime, st[50][5];
double ave_body[50], ave_class[5];
while (scanf("%d %d", &n, &m) != EOF)
{
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
scanf("%d", &st[i][j]);
}
}
/*求每个人的总分、平均分*/
for (i = 0; i < n; i++)
{
ave_body[i] = 0;
for (j = 0; j < m; j++)
{
ave_body[i] += st[i][j];
}
ave_body[i] /= m;
}
/*求每门课的总分、平均分*/
for (j = 0; j < m; j++)
{
ave_class[j] = 0;
for (i = 0; i < n; i++)
{
ave_class[j] += st[i][j];
}
ave_class[j] /= n;
}
/*求各门成绩都及格的学生人数*/
s = 0;
for(i = 0; i < n; i++)
{
prime= 0;
for (j = 0; j < m; j++)
{
if (st[i][j] < ave_class[j])
{ prime = 1; /* 把这两行括起来*/
break;} /* 把这两行括起来*/
}
if (prime == 0)
s++;
}
/*输出结果:*/
for (i = 0; i <渣梁羡 n; i++)
{
printf("%.2lf", ave_body[i]);
if (i != n - 1) /* 把if (n != n - 1)改为if (i != n - 1) */
printf(" "如拍);
}
printf("\n");
for (j = 0; j < m; j++)
{
printf("%.2lf", ave_class[j]);
if (j != m - 1)
printf(" ");
}
printf("\n%d\n\n", s);
}
return 0;
}
下面的是以前ac的,你自己看看
#include<stdio.h>
int main()
{
int n, m, b, i, j;
double a[51][6], sum;
while(scanf("%d%d", &n, &m) != EOF)
{
for(i = 0; i < n; i++)
{
for(j = 0; j < m; j++)
scanf("%lf", &a[i][j]);
}
for(i = 0; i < n; i++)
{
sum = 0;
for(j = 0; j < m; j++)
{
sum = sum + a[i][j];
}
a[i][m] = sum / m;
if(i == 0)
printf("%.2lf", a[i][m]);
else
printf(" %.2lf"橘春樱, a[i][m]);
}
printf("\n");
for(j = 0; j <森碰 m; j++)
{
sum = 0;
for(i = 0; i < n; i++)
sum = sum + a[i][j];
a[n][j] = sum / n;
if(j == 0)
printf("%.2lf", a[n][j]);
else
printf(" %.2lf", a[n][j]);
}
printf("\圆丛n");
for(b = i = 0; i < n; i++)
{
for(j = 0; j < m; j++)
if(a[i][j] < a[n][j])
break;
if(j == m)
b++;
}
printf("%d\n\n", b);
}
}