程序如下:
#include<stdio.h>int main(){ int i; int a[10]; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++); printf("%d",a[i]); printf("\n"); for(i=9;i>=0;i--) printf("%d\ ",a[i]);}
结果如下:
有俩点疑惑:
for循环嵌套的顺序是第一个为真则暂停执行下一个,直到最下层的执行完才往回跳是吧,那么为什么在程序中输入“1”,回车,然后就可以继续输入“2”,那岂不是停在了printf("\n");的地方?第三个循环为什么要等到10个数字输入完成才 会一次性出来?
i++和i--是什么时候执行的,是下级循环完成后一次性执行的还是分部执行的。
3.为什么结果中会多出一个10呢?
按照我的理解是,i=0,然后i<10为真,执行scanf,然后赋值给a[0],进入第二个循环,打印出a[0]和换行,然后卡在这里了。
接这卡的那里,为什么又直接回到scanf了,最后一个for怎么办
哪里多了分号啊没看明白
意思是第二个for是空的,只是一直把第一个运行了,然后直接运行了第二个的printf运行了一次. 这里明白了,剩下就是假定那个分号没有,嵌套循环中两个i++分别是什么执行顺序? 然后还是那个为啥是空循环,依然从上之下都输出了输入的数字?
追答第一个for你如果不加大括号不会包括第一个for循环,也就是说假如没有大括号那么for循环体只是你接下来的一行代码。
另外,在多层循环里面不能同时使用同一个下标,可以第一层使用i,第二层要在定义一个变量j做循环;
如果for(i=0;i<10;i++);后面有个分号,那么这个循环体就是空的,分号直接就结束了
明白了,最后请教一下假如是嵌套for循环,都有i++ j++的话,是不是第一个for条件为真,执行下一句,第二个for为真,执行语句,一遍过后j++,这时候一直把这个for执行完再跳回还是直接跳回第一个for继续往下重复?(感觉是第二种好像…)
追答假如有以下二层循环:
for(i=0;i<10;i++)C语言是面向过程的语言,代码都是按顺序从上往下执行的:
第一个for执行:i=0
判断 i < 10是否成立,成立跳到3,若不成立则退出循环跳转到10
执行第二个for:j=0
判断 j<10是否成立,成立跳到5,不成立退出第二个for循环跳转到8
执行 printf语句
执行 j++
跳转到4
执行i++
跳转到2
循环结束
这样写明白了么?
追问没明白那几个跳转的数字,不知道是说的跳到哪里 先采纳吧非常感谢了 再看看书
追答跳转到第N步,不是写了1-10步么?
结合代码也应该能猜到那几个跳转指的是10步里面的第几步吧?囧
第二个for那多了个分号,既然是空循环那为什么在运行中依然正常输出了呢? 然后就是i++的执行点是在哪呢
意思是第二个for是空的,只是一直把第一个运行了,然后直接运行了第二个的printf运行了一次. 这里明白了,剩下就是假定那个分号没有,嵌套循环中两个i++分别是什么执行顺序? 然后还是那个为啥是空循环,依然从上之下都输出了输入的数字?