题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2023
思路:将输入数据定义为数组,便于根据行或者列进行计算。 将 n个学生的总成绩sum1赋值为b[i],将m个课程的总成绩sum2赋值为c[i],将n个学生的各门成绩与平均成绩进行比较,若都大于或等于平均成绩,count加一。最后输出时在输出函数中把所需要的平均成绩直接计算输出,并在每个实例后跟一个空行。
代码:
#include "stdio.h"
int main()
{
int a[50][5],b[50],c[5],n,m,i,j,sum1,sum2,count;
while(scanf("%d %d",&n,&m)!=EOF)
{
for(i=0;i<n;i++)
{
sum1=0;
for(j=0;j<m;j++)
{
scanf("%d",&a[i][j]);
sum1+=a[i][j];
}
b[i] = sum1;
}
for(i=0;i<m;i++)
{
sum2=0;
for(j=0;j<n;j++)
{
sum2+=a[j][i];
}
c[i] = sum2;
}
count=0;
for (i = 0; i<n; i++)
{
for (j = 0;j<m;j++)
{
if (a[i][j]<c[j]*1.0/n)
break;
}
if (j == m)
count++;
}
for (i = 0; i < n - 1; i++)
printf("%.2lf ",b[i]*1.0/m);
printf("%.2lf\n",b[n-1]*1.0/m);
for (i = 0; i<m-1; i++)
printf("%.2lf ",c[i]*1.0/n);
printf("%.2lf\n",c[m-1]*1.0/n);
printf("%d\n\n",count);
}
return 0;
}
小结:题目要求中的每个实例后跟一个空行,其实跟换行符是一样的意思,然后就是需要有两个换行符来实现。