C程序问题求助

来源:百度知道 编辑:UC知道 时间:2024/06/17 02:02:13
下面的程序段运行后,输出结果是
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=;i<8;i++)
x+=a[i][j];
printf("%d",x);

A 9 B 不确定值 C 0 D 18

答案为C,为什么????第三个for语句什么意思?为什么i可以从0到7?

第三个for语句中“i=”,i并未重新赋值,此时i从3开始循环,而a【3】【3】以后的都未赋值,所以全部是零,循环语句中x+=a【i】【j】执行完毕后当然为零。
LZ应明白:
1、for(i=;i<8;i++)中i是从3开始循环的;
2、数组初始化未赋值的元素自动为0;

public class As {

public static void main (String[] args) {
int i=0,j=0,x=0;
int [][]a;
a=new int[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];
System.out.println(x);

}
}
我用JAVA帮你编译了一下,是等于0
因为你for句没打括号,不算嵌套.
答案应该和1楼的一样,静态没有赋值,所以X=0

答案当然那个是C啊,第一次循环结束之后,j=3.
而a[n][3](n为任意值)没有被赋过值。所以x累加永远是0;
你也可以运行一下。

循环结束后,i的取值为3,j的取值为3,第三个for循环执行时取值其实是a[3][3],a[4][3]...a[7][3]的和,静态数组没有赋值,则初值为0,x值为0,结果自然是0.