关于c语言数组输出的问题 5
main{inta[2]={0};nti,j,k=2;.for(i=0;i<k;i++)for(j=0;j<k;i++)a[j]=a[i]+1;printf("%d",a...
main{
int a[2]={0};
nt i,j,k=2;
.for(i=0;i<k;i++)
for(j=0;j<k;i++)
a[j]=a[i]+1;
printf("%d",a[k]);
}
按照数组定义,int a[2]标明长度为了,包含两个元素:a[0]和a[1]。那a[k]即a[2]的输出值应该没有才对啊,为什么程序运行结果是2?
main{
int a[2]={0};
nt i,j,k=2;
.for(i=0;i<k;i++)
for(j=0;j<k;j++)
a[j]=a[i]+1;
printf("%d",a[k]);
} 展开
int a[2]={0};
nt i,j,k=2;
.for(i=0;i<k;i++)
for(j=0;j<k;i++)
a[j]=a[i]+1;
printf("%d",a[k]);
}
按照数组定义,int a[2]标明长度为了,包含两个元素:a[0]和a[1]。那a[k]即a[2]的输出值应该没有才对啊,为什么程序运行结果是2?
main{
int a[2]={0};
nt i,j,k=2;
.for(i=0;i<k;i++)
for(j=0;j<k;j++)
a[j]=a[i]+1;
printf("%d",a[k]);
} 展开
7个回答
展开全部
a[k]的值是随机的。
怎么说呢,这个2起始说起来也不是随机值,可以肯定的是你越界了。
按照内存分配。
你看你上面定义的变量。
int a[2]={0};
int i,j,k=2;
变量i是定义在你a[2]后面的,所以,你其实输出的是i的值。
怎么说呢,这个2起始说起来也不是随机值,可以肯定的是你越界了。
按照内存分配。
你看你上面定义的变量。
int a[2]={0};
int i,j,k=2;
变量i是定义在你a[2]后面的,所以,你其实输出的是i的值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
初始化时:a[0]=a[1]=0;
i=0时,a[0]=a[0]+1=0+1=1,a[1]=a[0]+1=1+1=2:
i=1时,a[0]=a[1]+1=2+1=3,a[1]=a[1]+1=2+1=3。
但a[2]是不确定的,因为越界了
main{
int a[2]={0};
nt i,j,k=2;
a[k]=4; //在这加一条试试,输出应该就变成4了,一直都是2应该是a[2]的这块内存一直没有被 使用
.for(i=0;i<k;i++)
for(j=0;j<k;j++)
a[j]=a[i]+1;
printf("%d",a[k]);
}
i=0时,a[0]=a[0]+1=0+1=1,a[1]=a[0]+1=1+1=2:
i=1时,a[0]=a[1]+1=2+1=3,a[1]=a[1]+1=2+1=3。
但a[2]是不确定的,因为越界了
main{
int a[2]={0};
nt i,j,k=2;
a[k]=4; //在这加一条试试,输出应该就变成4了,一直都是2应该是a[2]的这块内存一直没有被 使用
.for(i=0;i<k;i++)
for(j=0;j<k;j++)
a[j]=a[i]+1;
printf("%d",a[k]);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给你看下执行步骤:
第一次外循环时:
i 取值 a[i]取值 j取值 a[j]取值
0 0 0 a[0] = 1
1 a[1] = 1
1(此时数组a[2]内容已经为{1,1})
1 0 a[0] = 2
1 a[1] = 2
执行完以上步骤后a[2] = {2,2};
第一次外循环时:
i 取值 a[i]取值 j取值 a[j]取值
0 0 0 a[0] = 1
1 a[1] = 1
1(此时数组a[2]内容已经为{1,1})
1 0 a[0] = 2
1 a[1] = 2
执行完以上步骤后a[2] = {2,2};
更多追问追答
追问
执行循环后是a[2]={3,3}.
追答
对对,是{3,3},但是过程就是那样的,程序中还有一行错误。for(j=0;j<k;i++) 这行有错吧,应该是j++。正确的结果应该是
a[j] = a[i] + 1
i 取值 a[i]取值 j取值 a[j]取值
0 0 0 a[0] = a[0] + 1 = 1
1 a[1] = a[0] + 1 = 2
1(此时数组a[2]内容已经为{1,1})
1 0 a[0] = a[1] + 1 = 3
1 a[1] = a[1] + 1 = 3
执行完以上步骤后a[2] = {3,3};
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a[2] 的值是随机的. 这块内存是不可知的.有时候会报错,有时候会给你返回一个值.
追问
每次输出结果都是2,不是随机的。当去掉循环赋值部分的时候,才出现你说的问题。
追答
数组越界了。是随机的。由于编译器的问题,可能你执行的值都是2.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
大哥,你每个循环都是i++是几个意思啊?然后a[2] 的值是随机的。我真不知道你是如何运行处2来的。反正我把j里面的i++换成j++运行出来a[0]=a[1]=3。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询