c语言中for循环嵌套的执行顺序疑问

程序如下:#include<stdio.h>intmain(){inti;inta[10];for(i=0;i<10;i++)scanf("%d",&a[i]);for(... 程序如下:
#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怎么办
展开
 我来答
kevin_sxw
2015-03-09 · TA获得超过165个赞
知道小有建树答主
回答量:80
采纳率:0%
帮助的人:36.4万
展开全部
/* 你的程序有错,改过来之后就好理解了 */

#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]);
修改如下: */
for(i=0;i<10;i++)
printf("%d",a[i]);

printf("\n");

for(i=9;i>=0;i--)
printf("%d\ ",a[i]);

return 0;
}
更多追问追答
追问
哪里多了分号啊没看明白
意思是第二个for是空的,只是一直把第一个运行了,然后直接运行了第二个的printf运行了一次.  这里明白了,剩下就是假定那个分号没有,嵌套循环中两个i++分别是什么执行顺序?   然后还是那个为啥是空循环,依然从上之下都输出了输入的数字?
zxjfay
2015-03-09 · TA获得超过106个赞
知道小有建树答主
回答量:118
采纳率:0%
帮助的人:92万
展开全部
for(i=0;i<10;i++); 这个循环后面跟的是空语句,什么也没做,printf("%d",a[i]);这里i已经是10了,a[10]是一个不确定的值,这里是10,你下次执行就不一定是10了。多的那个10是a[10],数组已经越界了。
追问
第二个for那多了个分号,既然是空循环那为什么在运行中依然正常输出了呢? 然后就是i++的执行点是在哪呢
意思是第二个for是空的,只是一直把第一个运行了,然后直接运行了第二个的printf运行了一次.  这里明白了,剩下就是假定那个分号没有,嵌套循环中两个i++分别是什么执行顺序?   然后还是那个为啥是空循环,依然从上之下都输出了输入的数字?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式