C语言高手们,帮忙分析一下下面的题目,我需要详细的分析及它的答案

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

main()
{
int n[3],i,j,k; //定义变量
for(i=0;i<3;i++) n[i]=0; //把0分别赋值给n[0],n[1]和n[2]
k=2; //把2赋值给k
for(i=0;i<k;i++)
for(j=0;j<k;j++) n[j]=n[i]+1;

//这里是一个嵌套的for循环,注意,这里i每循环一次j要循环两次。
i第一次循环时i=0,由上面的n[0]=0可知n[i]=0
j第一次循环时j=0,n[j]=n[i]+1=1 即此时n[0]=1
j第二次循环时j=1,n[j]=n[i]+1=1+1=2 即此时n[1]=2
i第二次循环时i=1,由上一次循环可知n[i]=2
j第一次循环时j=0,n[j]=n[i]+1=2+1=3 即此时n[0]=3
j第二次循环时j=1,n[j]=n[i]+1=2+1=3 即此时n[1]=3

printf("%d\n",n[1]); //输出结果为3
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-03-20
main()
{
int n[3],i,j,k;
for(i=0;i<3;i++) n[i]=0;
k=2;
for(i=0;i<k;i++)
for(j=0;j<k;j++) n[j]=n[i]+1;
printf("%d\n",n[1]);
}
第2个回答  2008-03-20
定义整型变量n[3],i,j,k;
把0赋值给n[1],n[2]和n[3];
把2赋值给k;
n[0]自增大4(1×2×2);
n[1]自增大4(1×2×2);
n[2]自增大4(1×2×2);
输出n[1],即4。

还有什么疑问吗?请补充。
第3个回答  2008-03-20
输出是3

-----------------------------------------

#include"stdio.h" //头文件包含

main() //主函数
{
int n[3],i,j,k; //定义变量

for(i=0;i<2;i++) //循环
n[i]=0; //把n[0],n[1]都赋值为0

k=2; //k赋值2
for(i=0;i<k;i++) //循环k=2次
for(j=0;j<k;j++) //循环k=2次
n[j]=n[i]+1;
printf("%d\n",n[1]); //打印a[1]
}

-----------------------------------------
分析
只看这里
for(i=0;i<k;i++) //循环k=2次
for(j=0;j<k;j++) //循环k=2次
n[j]=n[i]+1;

第一次i=0j=0时,n[0]=n[0]+1; 之前n[0]=0,所以n[0]=1
之后i=0j=1时,n[1]=n[0]+1; 之前n[0]=1,所以n[1]=2
之后i=1j=0时,n[0]=n[1]+1; 之前n[1]=2,所以n[0]=3
之后i=1j=1时,n[1]=n[1]+1; 之前n[1]=2,所以n[1]=3

所以打印出来n[1]=3
第4个回答  2008-03-20
ain()
{
int n[3],i,j,k;
for(i=0;i<3;i++) n[i]=0; /*实现将n[0],n[1],n[2] 分别置0*/
k=2;
for(i=0;i<k;i++) /*当i=0时,n[0]=1,n[1]=1;当i=1时,n[0]=2,n[1]=2*/
for(j=0;j<k;j++) n[j]=n[i]+1;
printf("%d\n",n[1]); /* n[1]=2 */
} /* 最终输出的结果是 1和2 */
第5个回答  2008-03-20
定义整型变量n[3],i,j,k;
把0赋值给n[1],n[2]和n[3];
把2赋值给k;
n[0]自增大4(1×2×2);
n[1]自增大4(1×2×2);
n[2]自增大4(1×2×2);
输出n[1],即4。
相似回答