C语言,矩阵问题。。大神求解。。。跑过后上面显示只有一个错误,可查看详细错误时有十几条错了,求解

程序如下:
#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;
}
显示的错误在函数声明那一部分。。还有函数调用部分出了问题,不知怎么改,求解

函数声明是写在main外面的吧?另外d函数sum不用初始化吗?追问

我只有一个文件啊,放里面跟放外面好像是一样的吧

追答

哎,我忘了在主函数里面声明对不对,我一般写在外面。另外[][]应该是不可以的,这个我记得哪个[]里必须是确定的数?应该是第二个[]吧。这样子不如用指针。

追问

very good啊。。我说一下错在哪儿了,。就是二维数组第二个不能空,关于在哪儿声明是无所谓的,

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-21
函数声明是写在main外面的,sum是局部变量,每个函数里面都要赋初值,d函数忘了赋追问

声明为什么要放在外面,我只在main函数里面有用啊,局部变量就可以了啊,d确实忘了赋初值

追答

在主函数里用才在主函数里写,既然你的函数不是主函数的,在主函数外的函数,肯定是在主函数外声明的啊!

相似回答