C中怎么定义N维数组,,我本来想做个N维数组对角线元素之和的,编译完之后发现定义函数时候,形参定义成arr[][]好像不对,所以想到定义N维数组怎么定义。是arr[][]...[]么......
顺便把失败的代码贴一下吧。
#include <stdio.h>
#include <stdlib.h>
int diasum(int arr[n][n]...[n])
{
int n;
int i,j;
int sum;
int arr[n][n]={{1,2,...,n},{1,2,...,n},...,{1,2,...,n}};
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(i==j||(i+j)==n-1)
{
sum+=arr[i][j];
}
}
}
printf("对角线元素之和是%d\n",sum);
return 0;
}
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int arr[5][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};
diasum(arr[5][5]);
return 0;
}
你做的不是n维数组,是n行n列的二维数组。
二维数组定义的时候,可以不指定行的数量,但是必须指定列的数量。
#include <stdio.h>
int diasum(int arr[][5],int n)
{
int i,j;
int sum = 0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(i==j||(i+j)==n-1)
sum+=arr[i][j];
}
}
printf("对角线元素之和是%d\n",sum);
return 0;
}
int main()
{
int arr1[][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};
diasum(arr1,5);
return 0;
}