c语言 函数 数组 问题

来源:百度知道 编辑:UC知道 时间:2024/07/07 18:40:59
看看我的程序哪儿错了。
题目:以下程序中有一个自定义函数,其功能是求2阶矩阵的所有靠外侧的各元素值之和。例如矩阵为:
3 0 0 3
2 5 7 3
1 0 4 2则所有靠外侧的各元素之和为18.
#define M 3
#define N 4
#include <stdio.h>
add (int m, int n, int a[][n])
{int i, j, sum =0;
for(i=0;i<m;i=i+m-1)
for(j=0;j<n;j++)
sum=sum+a[i][j];
for(j=0;j<n;j=j+n-1)
for(i=1;i<m-1;i++)
sum=sum+a[i][j];
return (sum);
}
void main ()
{int a[M][N],i,j,s;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
s=add(M,N,a);
printf("S=%d\n",s);
}

#include<stdio.h>
#define M 3
#define N 4

/*add函数要加返回值类型int*/
int add(int m,int n,int a[][N]) /*这里的a[][n]要改成a[][N],因为n是变量,不行*/
{
int i,j,sum=0;

for(i=0;i<m;i=i+m-1)
for(j=0;j<n;j++)
sum=sum+a[i][j];

for(j=0;j<n;j=j+n-1)
for(i=1;i<m-1;i++)
sum=sum+a[i][j];

return (sum);
}

void main ()
{
int a[M][N],i,j,s;

for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
s=add(M,N,a);
printf("S=%d\n",s);
}

#define M 3
#define N 4
#include <stdio.h>

int add (int m, int n, int a[][N])
{
int i, j, sum =0;
for(i=0;i<m;i=i+m-1)
for(j=0;j<n;j++)
sum=sum+a[i][j];
for(j=0;j<n;j=j+n-1)
for(i=1;i<m-1;i++)
sum=sum+a[i][j];
return (sum); <