c语言高手们帮忙呀

来源:百度知道 编辑:UC知道 时间:2024/06/01 21:07:37
int i,j,x=0;
static int a[8] [8];
for (i=0;i<3;i++)
for (j=0;j<3;j++)
a[i][j]=2*i+j;
for (i=0;i<8;i++)
x+=a[i][j];
printf("%d",x);
这个题的答案是0,请问为什么???????????

从a[0][0]到a[2][2]赋了初值,a[2][2]之后的都为0。

for (i=0;i<8;i++)
x+=a[i][j];

到这个循环的时候,j=3;
a[i][3]显然范围已经在 a[2][2] 开外了,i的值再增大,再垒加,其值也是 0~`。

for (i=0;i<3;i++)
for (j=0;j<3;j++)
a[i][j]=2*i+j; 对a[0][0] a01 a02
a10 a11 a12 a20 a21 a22赋值完后 j还要自加
也就是说
循环结束后
j=3
所以 for (i=0;i<8;i++)
x+=a[i][j];
这个循环
其实是x=a[0][3]+ a[1][3]+...+a[7][3]
由于数组定义为static int a[8] [8];
static则数组所有元素自动初始化为0
当然x=0啦