int a[4]={1,2,3,4}; int i,j; for(int i=0;i<4;i++) for(int j=0;j<i;j++) printf(" %d "
答案:1 悬赏:50 手机版
解决时间 2021-03-29 10:18
- 提问者网友:贪了杯
- 2021-03-28 12:53
int a[4]={1,2,3,4}; int i,j; for(int i=0;i<4;i++) for(int j=0;j<i;j++) printf(" %d ",a[i]); 初学者
最佳答案
- 五星知识达人网友:北城痞子
- 2021-03-28 13:18
for循环在不加大括号的时候,只执行后面的一条语句。一条语句并不是一行,两个分号“;”之间是一条语句。所以你这个程序的两个for是嵌套的,相当于:
for(int i=0;i<4;i++)
{
for(int j=0;j {
printf(" %d ",a[i]);
}
}现在你明白了为什么在后面加上其他语句只会输出一个了吗?
所以,写for循环和if循环之类的语句,一定要加上大括号。这样,逻辑更清晰,也方便阅读代码和改错。
追问谢谢大神,你第一个问题解释了,也就是说for接for没有分号,就是嵌套结构。这个我明白了,但是剩下三个问题还是不明白,就是变量j的加入为什么会对i有影响呢?还有第三第四的问题,麻烦您能解释下吗?越详细越好,兄弟我实在是想不明白追答第二个问题,为什么加入了for(int j=0;j不知道你用的什么编译器,你这种写法居然可以通过编译,根据你的描述,当时的代码应该是这样的:
int i,j;
int a[4]={1,2,3,4};
for(int i=0;i<4;i++)
for(int j=0;j a[i]=a[j]-a[i];
printf("%d ",a[i]);你这样写的话,for循环括号里的i,j是局部变量,只在循环内部生效,a[i]=a[j]-a[i];是循环内部语句,而printf("%d ",a[i]);不是循环内部语句,使用的是int i,j;那一句里面的i,是没有被赋初始值的,找不到i的值,你输出a[i]当然会报错。这种写法在VC++6.0是不能通过编译的,在VS2010上能通过,但编译时警告了使用了未赋值的变量i。
结果是1,-1,1,-1,而不是1,-1,-1,1吧?那这个时候
for(int i=0;i<4;i++)
for(int j=0;j a[i]=a[j]-a[i];是一个语句,而下面是另一个语句,
for(int i=0;i<4;i++)
printf("%d ",a[i]);很明显,上面的那个语句执行的操作改变了数组a的值,那你输出数组a,结果肯定也变了。
一定要理解,for语句的作用域是从for关键字开始直到第一个分号“;”结束。后面的就不属于for循环了。另外,a[i],a[j]并不一定就是两个不同的数,当i=j时,它们就是同一个数。
for(int i=0;i<4;i++)
{
for(int j=0;j {
printf(" %d ",a[i]);
}
}现在你明白了为什么在后面加上其他语句只会输出一个了吗?
所以,写for循环和if循环之类的语句,一定要加上大括号。这样,逻辑更清晰,也方便阅读代码和改错。
追问谢谢大神,你第一个问题解释了,也就是说for接for没有分号,就是嵌套结构。这个我明白了,但是剩下三个问题还是不明白,就是变量j的加入为什么会对i有影响呢?还有第三第四的问题,麻烦您能解释下吗?越详细越好,兄弟我实在是想不明白追答第二个问题,为什么加入了for(int j=0;j不知道你用的什么编译器,你这种写法居然可以通过编译,根据你的描述,当时的代码应该是这样的:
int i,j;
int a[4]={1,2,3,4};
for(int i=0;i<4;i++)
for(int j=0;j a[i]=a[j]-a[i];
printf("%d ",a[i]);你这样写的话,for循环括号里的i,j是局部变量,只在循环内部生效,a[i]=a[j]-a[i];是循环内部语句,而printf("%d ",a[i]);不是循环内部语句,使用的是int i,j;那一句里面的i,是没有被赋初始值的,找不到i的值,你输出a[i]当然会报错。这种写法在VC++6.0是不能通过编译的,在VS2010上能通过,但编译时警告了使用了未赋值的变量i。
结果是1,-1,1,-1,而不是1,-1,-1,1吧?那这个时候
for(int i=0;i<4;i++)
for(int j=0;j a[i]=a[j]-a[i];是一个语句,而下面是另一个语句,
for(int i=0;i<4;i++)
printf("%d ",a[i]);很明显,上面的那个语句执行的操作改变了数组a的值,那你输出数组a,结果肯定也变了。
一定要理解,for语句的作用域是从for关键字开始直到第一个分号“;”结束。后面的就不属于for循环了。另外,a[i],a[j]并不一定就是两个不同的数,当i=j时,它们就是同一个数。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯