在这段代码中,X 和 Y 数组应该是相同的,但由于某种原因,我终其一生都无法弄清楚,X[0] 始终为 1 而不是 0。我尝试将整个数组初始化为 0 ,直接将 X[0]=0 放入,使用一个常数,不管它总是 1 并且 Y 数组不会出现问题。任何见解都会很棒。这是代码:
#define N 3
#define M 3
#define A 0.0
#define B 1.0
#define C 0.0
#define D 1.0
int main()
double h_x;
h_x= (double) 1/(N+1);
double h_y;
h_y= (double) 1/(M+1);
double X[N+2];
double Y[M+2];
double xhalf[N+1];
double yhalf[M+1];
int i,j;
double o,k,l;
X[0]=C; X[N+2]=D; Y[0]=C; Y[M+2]=D; xhalf[0]=h_x/2; yhalf[0]=h_y/2;
for(i=1; i<=N; i++)
{
X[i]= X[i-1]+h_x;
xhalf[i]=xhalf[i-1]+h_x;
printf("%e\n", X[i]);
}
for(i=1; i<=M; i++)
{
Y[i]=Y[i-1]+h_y;
yhalf[i]=yhalf[i-1]+h_y;
printf("%e\n", Y[i]);
}
return 0;
}
输出:
1.25 1.50 1.75 2.5e-1 5.0e-1 7.5e-1