c语言 数组长度

为什么我取N=320的时候可以算,N=3200的时候就不出结果了,N=32000的时候提示十足长度太大,我是c的初学者,请高人指点
#include<stdio.h>
#include<math.h>
#define NUM 3200
#define N NUM+7
#define dx (double) 2.0/(double) NUM
#define dt pow(dx,5.0/3.0)
#define time 1.0

void pos_flux(double arr2[N])
{
int ii,jj;
double ow[3]={0.1,0.6,0.3},array1[N];
for(ii=3;ii<N-3;ii++)
{
array1[ii]=(arr2[ii-3]/3.0-7.0*arr2[ii-2]/6.0+11.0*arr2[ii-1]/6.0)*ow[0]+(-arr2[ii-2]/6.0+5.0*arr2[ii-1]/6.0+arr2[ii]/3.0)*ow[1]+(arr2[ii-1]/3.0+5.0*arr2[ii]/6.0-arr2[ii+1]/6.0)*ow[2];
}
for(ii=0;ii<3;ii++) arr2[ii]=array1[N-7+ii];
for(ii=N-3;ii<N;ii++) arr2[ii]=array1[ii-(N-7)];
}

void flux(double arr[N])
{
int i;
double temp1[N],arr1[N];
for(i=0;i<N;i++) temp1[i]=arr[i];
pos_flux(temp1);
for(i=0;i<N;i++) arr1[i]=temp1[i];
for(i=0;i<N;i++) arr[i]=-(arr1[i+1]-arr1[i]);
}

void L1(double v1[N])
{
int j;
double l1=0.0;
for(j=3;j<N-3;j++) l1=l1+fabs(v1[j]-pow(sin(M_PI*((j-(N-1)/2)*dx-time)),9));
printf("L1-norm is %e,",l1/(double) NUM);
}

void Linfinite(double v2[N])
{
int j;
double linfinite=0.0;
for(j=3;j<N-3;j++)
{
if(fabs(v2[j]-pow(sin(M_PI*((j-(N-1)/2)*dx-time)),9))>linfinite) linfinite=fabs(v2[j]-pow(sin(M_PI*((j-(N-1)/2)*dx-time)),9));
else linfinite=linfinite;
}
printf("L-infinity-norm is %e,",linfinite);
}

void main()
{
int i,j;
double u[N],u0[N],u1[N],u2[N],temp[N],mesh_ratio,t=0.0;
for(j=3;j<N-3;j++) u0[j]=pow(sin(M_PI*(j-(N-1)/2)*dx),9);
for(j=0;j<3;j++) u0[j]=u0[N-7+j];
for(j=N-3;j<N;j++) u0[j]=u0[j-(N-7)];
while(t<time)
{
for(i=0;i<N;i++)temp[i]=u0[i];
mesh_ratio=(dt)/(dx);
t=t+dx*mesh_ratio;
printf("%f,",t);
if(t>time) mesh_ratio=(time-t)/(dx)+mesh_ratio;
flux(temp);
for(i=0;i<N;i++) u1[i]=u0[i]+mesh_ratio*temp[i];
for(i=0;i<N;i++) temp[i]=u1[i];
flux(temp);
for(i=0;i<N;i++) u2[i]=0.75*u0[i]+0.25*u1[i]+0.25*mesh_ratio*temp[i];
for(i=0;i<N;i++) temp[i]=u2[i];
flux(temp);
for(i=0;i<N;i++) u[i]=u0[i]/3.0+2.0*u2[i]/3.0+2.0*mesh_ratio*temp[i]/3.0;
for(i=0;i<N;i++) u0[i]=u[i];
}
L1(u);
Linfinite(u);
}
我用的编译器是TC2.0

vc++6.0编译器下,int型可以定义到char a[100000]但是double是不可以这么长的,你可以定义一个结构体,结构体可以定义到100000个元素。
建议源程序文件扣缀名.cpp结尾,C++支持纯C的,C有很多bug过不去!
温馨提示:答案为网友推荐,仅供参考
相似回答