读书人

c数组输出有关问题

发布时间: 2012-09-13 09:51:53 作者: rapoo

c数组输出问题
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

[解决办法]
引用:
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];//j==3
printf("%d",x);


[解决办法]

探讨
x+=a[i][j];
可以告诉我这个j是多少吗?应该这里有错

[解决办法]
分为几部分来说明:
1、static int a[8][8]; a是静态变量那么在定义的时候由于没有初始化默认情况下他和全局变量一样都将全部被初始化为0.
2、for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=2*i+j;
这里只对前 3*3 赋值。
3、for(i=0;i<8;i++)
x+=a[i][j];
执行到这里的时候 j = 3; 而 j = 3 这部分你还没给他重新赋值所以他的值还是初始值 0 所以你的结果必然是0
[解决办法]
C/C++ code
    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];        // j = 3        printf("%d",x);    }
[解决办法]
就是这样的
探讨

分为几部分来说明:
1、static int a[8][8]; a是静态变量那么在定义的时候由于没有初始化默认情况下他和全局变量一样都将全部被初始化为0.
2、for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=2*i+j;
这里只对前 3*3 赋值。
3、for(i=0;i<8;i++)
x+=a[i][j];
执行到这里的时候 j = 3; ……

[解决办法]
分析的很正确。
探讨

C/C++ code

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[……

[解决办法]
探讨

分为几部分来说明:
1、static int a[8][8]; a是静态变量那么在定义的时候由于没有初始化默认情况下他和全局变量一样都将全部被初始化为0.
2、for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=2*i+j;
这里只对前 3*3 赋值。
3、for(i=0;i<8;i++)
x+=a[i][j];
执行到这里的时候 j = 3; ……

[解决办法]
在做这个循环的时候
C/C++ code
for(i=0;i<8;i++)x+=a[i][j]; 

读书人网 >C语言

热点推荐