数组的问题,帮忙看看。
#include<stdio.h>//p69-2
int main()
{
double f(int n);
double sum=0;
int n ;
printf("input n:");
scanf("%d",&n);
sum=f(n);
printf("sum=%lf",sum);
return 0;
}
double f(int n)
{ double sum;
int a[n][n],i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=1;i<n-2;i++)
sum=sum+a[i][n-1-i];
for(i=0;i<n;i++)
sum=sum+a[n][i];
for(i=0;i<n;i++)
sum=sum+a[i][n];
return sum;
}
----------------------
--------------------Configuration: p69-2 - Win32 Debug--------------------
Compiling...
p69-2.cpp
f:\c++ source file\教程指导书\p69-2.cpp(15) : error C2057: expected constant expression
f:\c++ source file\教程指导书\p69-2.cpp(15) : error C2466: cannot allocate an array of constant size 0
f:\c++ source file\教程指导书\p69-2.cpp(15) : error C2057: expected constant expression
f:\c++ source file\教程指导书\p69-2.cpp(15) : error C2466: cannot allocate an array of constant size 0
f:\c++ source file\教程指导书\p69-2.cpp(15) : error C2087: '<Unknown>' : missing subscript
f:\c++ source file\教程指导书\p69-2.cpp(15) : error C2133: 'a' : unknown size
执行 cl.exe 时出错.
p69-2.obj - 1 error(s), 0 warning(s)
[解决办法]
#include <malloc.h>//别忘记加头double f(const int n){ double sum; int **a,i,j; a=(int **)malloc( n*sizeof(int *));//二维动态数组要这样分配才行 for(int i=0;i<n;i++) a[i]=(int *)malloc(n*sizeof(int )); //定义行