① 自定义矩阵阶数,函数间传递数组
#include <stdio.h>
main()
{
int i,j,n,s;
printf("请输入矩阵阶数:");
scanf("%d",&n);
int fun(int n,int a[][n]);
int a[n][n];
printf("请输入矩阵元素:\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
s=fun(n,a);
printf("该矩阵主对角线和为:%d\n",s);
}
int fun(int n,int a[][n])
{
int s=0,i;
for(i=0;i<n;i++)
s+=a[i][i];
return s;
}
② 自定义矩阵阶数,函数间传递指针
#include <stdio.h>
main()
{
int i,j,n,s;
printf("请输入矩阵阶数:");
scanf("%d",&n);
int fun(int n,int (*a)[n]);
int a[n][n];
printf("请输入矩阵元素:\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
s=fun(n,a);
printf("该矩阵主对角线和为:%d\n",s);
}
int fun(int n,int (*a)[n])
{
int s=0,i;
for(i=0;i<n;i++)
s+=a[i][i];
return s;
}
③ 规定函数阶数,函数间传递数组
#include <stdio.h>
#define N 4
int fun(int a[][N]);
main()
{
int a[N][N],i,j,s;
printf("矩阵阶数:%d\n",N);
printf("请输入矩阵元素:\n");
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
s=fun(a);
printf("该矩阵主对角线和为:%d\n",s);
}
int fun(int a[][N])
{
int s=0,i;
for(i=0;i<N;i++)
s+=a[i][i];
return s;
}
④ 规定函数阶数,函数间传递指针
#include <stdio.h>
#define N 4
int fun(int (*a)[]);
main()
{
int a[N][N],i,j,s;
printf("矩阵阶数:%d\n",N);
printf("请输入矩阵元素:\n");
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
s=fun(a);
printf("该矩阵主对角线和为:%d\n",s);
}
int fun(int (*a)[N])
{
int s=0,i;
for(i=0;i<N;i++)
s+=a[i][i];
return s;
}
以4阶为例,运行结果为:
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/c9fcc3cec3fdfc03132f966bdf3f8794a5c22689?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)