1.1 代码:
#include <stdio.h>
#define N 3
#define M 5
double average(int score[M][N]);
int main ( )
{
int score[M][N],sum,sum1[M],sum2,i,j;
double average1[M],average2[N];
for(i=0;i<M;i++)
{
printf("请输入第%d名学生的成绩\n",i+1);
for(j=0;j<N;j++)
{
scanf("%d",&score[i][j]);
}
}
for(i=0;i<M;i++)
{
sum=0;
for(j=0;j<N;j++)
{
sum+=score[i][j];
}
sum1[i]=sum;
average1[i]=(double)sum/N;
}
for(i=0;i<N;i++)
{
sum2=0;
for(j=0;j<M;j++)
{
sum2+=score[j][i];
}
average2[i]=(double)sum2/M;
}
printf("语文\t数学\t英语\t总分\t平均分\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%d\t",score[i][j]);
}
printf(" %d\t%.2f\n",sum1[i],average1[i]);
printf("\n");
}
for(i=0;i<N;i++)
{
printf("平均分分别为%.2f\n",average2[i]);
}
return 0;
}
1.2 程序运行结果:


2.1 代码:
#include <stdio.h>
#define M 5
int main()
{
int a,i,j,score[M][M]={0},sum1,sum2,sum3,sum4;
printf("请输入行数(列数)\n");
scanf("%d",&a);
printf("请输入数字\n");
for(i=0;i<a;i++)
{
for(j=0;j<a;j++)
{
scanf("%d",&score[i][j]);
printf("%d",score[i][j]);
}
printf("\n");
}
for(i=0;i<a;i++)
{
sum1=0;
for(j=0;j<a;j++)
{
sum1+=score[i][j];
}
printf("第%d行的和为%d\n",i+1,sum1);
}
for(j=0;j<a;j++)
{
sum2=0;
for(i=0;i<a;i++)
{
sum2+=score[i][j];
}
printf("第%d列的和为%d\n",j+1,sum2);
}
sum3=0;
for(i=0;i<a;i++)
{
for(j=0;j<a;j++)
{
if(i==j)
{
sum3+=score[i][j];
}
}
}
printf("对角线的和为%d\n",sum3);
sum4=0;
for(i=0;i<a;i++)
{
for(j=0;j<a;j++)
{
if(i+j==a-1)
{
sum4+=score[i][j];
}
}
}
printf("副对角线的和为%d",sum4);
return 0;
}
2.2 程序运行结果:

1.计算每个变量的时候都要重新赋值。
2.函数不用返回值。因为平均值数组是通过参数数组传过来的,可以把函数计算的平均值带回去
3.如果对数组每行求平均,那么平均值是多个,应该存放在一个数组里面,函数参数应该有一个存放平均值的数组
原文:http://www.cnblogs.com/wei530/p/6159088.html