一开始看OJ上的成绩都为整型,故在开辟数组时定义了int型。虽然在Dev-C++运行的结果是正确的,但是在OJ上的答案都为0.00,可见OJ上不同的格式之间不能相互转化(要求十分严格)。这也要求以后写代码时要严谨,不能不求甚解。
回归到这道题:此题较为简单,也没必要单独定义一个函数(此题不用函数,更简洁)。主要考察二维数组的灵活运用。
#include"stdio.h"
double a[1000][10];//定义为double类型,不然在OJ上不能通过(OJ较为严格)
int main()
{
int C(double a[1000][10],int m,int n);//定义一个函数
int m,n,i,j;
scanf("%d %d",&m,&n);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
scanf("%lf",&a[i][j]);
}
C(a,m,n);//调用函数
return 0;
}
int C(double a[1000][10],int m,int n)
{
int i,j;
double subject[n];//借用数组
for(i=0;i<n;i++)
{
double sum=0;
for(j=0;j<m;j++)
{
sum=sum+a[j][i];//行变列不变
}
subject[i]=sum;
}
for(i=0;i<n;i++)
printf("%.2lf ",subject[i]/m);
}