#include<stdio.h>
main(){
int i,a[3],j,k;
for(i=0;i<3;i++)
a[i]=0;
k=2;
for(i=0;i<k;i++)
for(j=0;j<k;j++)
a[j]=a[i]+1;
printf("%d",a[1]);}
请问这个程序最后输出的值为什么是3,a[1]赋的值不应该是0吗?
#include<stdio.h>
void main(){
int i,a[3],j,k;
for(i=0;i<3;i++)
{
a[i]=0;
}
k=2;
for(i=0;i<k;i++){
for(j=0;j<k;j++){
a[j]=a[i]+1;
}
}
printf("%d",a[1]);
}
加上每个for循环块的范围这样不知道你能不能看明白程序的运行顺序
#include <stdio.h>
main() {
int i, a[3], j, k;
// 下面for循环只管一句a[i] = 0;
for (i = 0; i < 3; i++)
a[i] = 0;
// 上面for循环结束后将k赋值
k = 2;
// 下面是两层循环
for (i = 0; i < k; i++)
for (j = 0; j < k; j++)
// 这两层循环对a[j]做操作
a[j] = a[i] + 1;
// 最后打印a[1]
printf("%d", a[1]);
}
供参考:
#include<stdio.h>
int main(){
int i,a[3],j,k;
for(i=0;i<3;i++)//将数组a[]元素循环初始化为0
a[i]=0; //a[0] = 0, a[1] = 0, a[2] = 0
k=2;
for(i=0;i<k;i++)
for(j=0;j<k;j++){
a[j]=a[i]+1;
}
printf("%d",a[1]);
return 0;
}
#if0
k=2;
for(i=0;i<k;i++) i = 0 --- 1
for(j=0;j<k;j++) j = 0 ---- 1
数组变化:
a[j=0]=1: a[i=0]= 0 + 1 ===> a[j=i=0] = 1
a[j=1]=2: a[i=0]= 1 + 1 ===> a[j = 1] = 2, a[i = 0] = 1
a[j=0]=3: a[i=1]= 2 + 1 ===> a[j = 0] = 3, a[i = 1] = 2
a[j=1]=3: a[i=1]= 2 + 1 ===> a[j=i=1] = 3
循环结束数组元素值:a[0] = 3 ,a[1] = 3 ,a[2] = 0;
最终输出:a[1]=3请按任意键继续. . .
#endif
i=1时候,a1=0+1
i=2的时候,a 1=a 1+1+1=3
最简单的,我问你
for(i=0;i<k;i++)
for(j=0;j<k;j++)
a[j]=a[i]+1;
当i = 0, j = 0 时,a[j] = a[i] +1;那么a[0] 现在变成几了?
当i = 1,j = 0呢?