程序如下:
#include<stdio.h>
#define N 3
int main()
{
void c(int a[][],int r[][],int n);
int av(int a[][],int n);
int d(int a[][],int n);
int z(int a[][],int n);
int i,j,a[N][N],r[N][N];
printf("请输入%d个矩阵数据:\n",N*N);
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
printf("矩阵是:\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%4d",a[i][j]);
printf("\n");
}
//c函数表示矩阵转置,av函数表示求平均值,d函数表示对角线元素之和,z函数表示周边元素之和//
c(a,r,N);
printf("转置矩阵是:\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%4d",r[i][j]);
printf("\n");
}
printf("平均值是:%d\n",av(a,N));
printf("对角线元素之和和是:%d\n",d(a,N));
printf("周边元素之和是:%d\n",z(a,N));
return 0;
}
/*下面开始定义各个函数*/
void c(int a[][],int r[][],int n)/*定义第一个转置函数*/
{
int i,j;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
r[j][i]=a[i][j];
}
int av(int a[][],int n)//定义第二个求平均值函数
{
int i,j,sum=0,avg;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
sum+=a[i][j];
avg=sum/(N*N);
return avg;
}
//d函数表示对角线元素之和,z函数表示周边元素之和//
int d(int a[][],int n)//定义第三个求对角和函数
{
int i,j,sum;
for(i=0;i<N;i++)
{
sum+=a[i][i];
sum+=a[i][N-1-i];
}
if(N%2==1)
sum=sum-a[N/2][N/2];
return sum;
}
int z(int a[][],int n)//定义第三个求周边和函数
{
int i,j,sum=0;
for(j=0;j<N;j++)
{
i=0;
sum+=a[i][j];
}
for(j=0;j<N;j++)
{
i=N-1;
sum+=a[i][j];
}
for(i=1;i<N-1;i++)
{
j=0;
sum+=a[i][j];
}
for(i=1;i<N-1;i++)
{
j=N-1;
sum+=a[i][j];
}
return sum;
}
显示的错误在函数声明那一部分。。还有函数调用部分出了问题,不知怎么改,求解
我只有一个文件啊,放里面跟放外面好像是一样的吧
追答哎,我忘了在主函数里面声明对不对,我一般写在外面。另外[][]应该是不可以的,这个我记得哪个[]里必须是确定的数?应该是第二个[]吧。这样子不如用指针。
追问very good啊。。我说一下错在哪儿了,。就是二维数组第二个不能空,关于在哪儿声明是无所谓的,
声明为什么要放在外面,我只在main函数里面有用啊,局部变量就可以了啊,d确实忘了赋初值
追答在主函数里用才在主函数里写,既然你的函数不是主函数的,在主函数外的函数,肯定是在主函数外声明的啊!