在c语言中以下程序段运行后的输出结果是

int n[3], t, j, k;

for (t=0; t<3; t++)
{
n[t] = 0;
}
k = 2;
for (t=0; t<k; t++)
{
for (j=0; j<3; j++)
{
n[j] = n[t] + 1;
}
}
printf("%d\n", n[1]);

输出结果是3.
int n[3], t, j, k;
for (t=0; t<3; t++)
{
n[t] = 0; //这个相当于数组的初始化,全部初始化为0
}
k = 2;
for (t=0; t<k; t++) //执行for循环,当t=0时,j=0时,n[0] = n[0] + 1;得到n[j]=1,这里的n[t]的
{ 值也将从0变为1,因为n[t]跟n[j]此时t=j=0;所以表示的都是数组n的同
for (j=0; j<3; j++) 一元素,接着执行下一步t=0,j=1,n[1]=n[0]+1; n[1]= 2; 当t=0,j=2时,
{ n[2]=n[0]+1; n[2] = 1;接着跳出内层for循环,执行外层for循环,t=1时,
n[j] = n[t] + 1; j = 0,n[j] = n[t] + 1即相当于n[0] = n[1] + 1;前面算出n[1] = 2,所以这里
} n[0] = 3;
}
printf("%d\n", n[1]);追问

对的,但为什么呢?

追答

详细的执行步骤已经附加到旁边了,希望能帮到你!上面当t=0,j=2时,n[2]=n[0]+1; n[2] = 2,不小心打错了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-01
for (t=0; t<3; t++)
{
n[t] = 0;
}
开始时一维数组三个元素都被赋值为0
for (t=0; t<k; t++)
{
for (j=0; j<3; j++)
{
n[j] = n[t] + 1;
}
}
当t=0时
j=0 n[0]=n[0]+1=1
j=1 n[1]=n[0]+1=2
j=2 n[2]=n[0]+1=2
当t=1时
j=0 n[0]=n[1]+1=3
j=1 n[1]=n[1]+1=3
j=2 n[2]=n[1]+1=4
第2个回答  2012-12-01
3
相似回答