嵌套循环的执行顺序

关玉楼 2014-03-10 10:09:19
for(i=1;i<=n;i++){
for(j=1;j<=i;j++){
for(k=1;k<=j;k++)
x +=delta;
}
请问三层for循环的执行顺序是怎样的?详解!!!
...全文
1193 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
cao_julians 2014-05-15
  • 打赏
  • 举报
回复
引用 楼主 u014028610 的回复:
for(i=1;i<=n;i++){ for(j=1;j<=i;j++){ for(k=1;k<=j;k++) x +=delta; } 请问三层for循环的执行顺序是怎样的?详解!!!
让程序自己说话: 在最内层,加一个输出 printf("%d-%d-%d\n",i, j, k); 不就能够看出循环的每一步中,各循环变量的变化规律? 不必运用debugger手段. 现在有些过了,从不知道”调试“到什么问题都要”调试“。 许多时候,设计出让代码自己说话的程序也是一种技能,这种技能与debugger技能相辅相成才是正理。
ForestDB 2014-05-14
  • 打赏
  • 举报
回复
debugger跟一遍。
lanlvy 2014-05-13
  • 打赏
  • 举报
回复
for(;;){
for(;;){
for(;;){
X++;
}
}
}
循环的次数是for的3次方
lm_whales 2014-05-13
  • 打赏
  • 举报
回复
引用 9 楼 lm_whales 的回复:
循环语句,分两个部分。 一部分是循环控制语句。 一部分是循环体。 for 循环: 循环控制语句有三个表达式 第一个表达式, 只执行一次,在循环所有其他代码执行前执行。 第二个表达式,每次循环体执行前,先执行,并与比较0(false) 比较非0 执行循环, 是0不执行结束循环 第三个表达式,每次循环体执行后执行一次。 while 循环: 循环控制语句只有一个表达式 每次循环体执行前先执行,并把结果和0(false) 比较,非0执行循环,是0 不执行结束循环。 do while循环: 只有一个表达式 ,先执行一遍循环体,然后执行表达式,并把结果和0(false) 比较,非0 执行循环,是0 不执行结束循环。 嵌套循环的内存循环,只是循环体中的一个语句。 执行顺序是:和外层循环的其他语句一起,按照顺序执行。 for 循环:while 循环: 先执行条件表达式,如果结果非0,执行循环体。 do while 循环,先执行循环体,然后执行条件表达式,如果结果非0,继续执行循环体。
条件问题写颠倒了,抱歉
bedynamic 2014-03-20
  • 打赏
  • 举报
回复
引用 1 楼 u012586257 的回复:
i=1,j=1,k=1 i=2,j=1,k=1 j=2,k=1,k=2 i=3,j=1,k=1 j=2,k=1,k=2 j=3,k=1,k=2,k=3 i=4,j=1,k=1 j=2,k=1,k=2 j=3,k=1,k=2,k=3 j=4,k=1,k=2,k=3,k=4 . . .
赵4老师 2014-03-20
  • 打赏
  • 举报
回复
for (A;B;C) D;
//等价于
{
 A;
 while (1) {
  if (!(B)) break;
  D;
  C;
 }
}
lm_whales 2014-03-20
  • 打赏
  • 举报
回复
只要知道,哪一部分是循环体,哪一部分是循环控制语句。 就能够知道循环如何执行的了。 C,C++语言中,代码执行的是表达式流程控制代码,而不是一个完整的语句。 语句只是一种语言成分,不是执行的最小单元。
lm_whales 2014-03-20
  • 打赏
  • 举报
回复
嵌套循环的内层循环,只是循环体中的一个语句。 循环,还有两个跳转语句 break,continue 可以写在循环体内,控制循环流程 break; 此后循环体的代码,(包括for 的第三个表达式)不再执行,跳出这一层循环的执行 continue ;跳过这一轮循环的循环体continue ;后面的其他代码的执行,转入下一轮循环的执行。 对于 for, 直接执行第三个表达式(可称为自增表达式),执行完成后, 执行第二个表达式(条件表达式),开始新一轮循环的执行。 对于 while(..)...; do ...while(); 直接执行, 循环控制语句的表达式(条件表达式) 循环每一轮的重新开始,都是从执行条件表达式开始的。
lm_whales 2014-03-20
  • 打赏
  • 举报
回复
循环语句,分两个部分。 一部分是循环控制语句。 一部分是循环体。 for 循环: 循环控制语句有三个表达式 第一个表达式, 只执行一次,在循环所有其他代码执行前执行。 第二个表达式,每次循环体执行前,先执行,并与比较0(false) 比较是0 执行循环,非0 不执行结束循环 第三个表达式,每次循环体执行后执行一次。 while 循环: 循环控制语句只有一个表达式 每次循环体执行前先执行,并把结果和0(false) 比较,是0 执行循环,非0 不执行结束循环。 do while循环: 只有一个表达式 ,先执行一遍循环体,然后执行表达式,并把结果和0(false) 比较,是0 执行循环,非0 不执行结束循环。 嵌套循环的内存循环,只是循环体中的一个语句。 执行顺序是:和外层循环的其他语句一起,按照顺序执行。 for 循环:while 循环: 先执行条件表达式,如果结果非0,执行循环体。 do while 循环,先执行循环体,然后执行条件表达式,如果结果非0,继续执行循环体。
赵4老师 2014-03-12
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试是程序员必须掌握的技能之一。 不要迷信书、考题、老师、回帖; 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实! 有人说一套做一套,你相信他说的还是相信他做的? 其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗? 不要写连自己也预测不了结果的代码!
关玉楼 2014-03-12
  • 打赏
  • 举报
回复
谢谢了,一楼的答案很清楚。。。
心态与习惯 2014-03-11
  • 打赏
  • 举报
回复
一楼是正确的
百曉生 2014-03-11
  • 打赏
  • 举报
回复
少一个大括号 这个。。。lz你应该能看懂一个for循环吧!建议自己在纸上一步步写出,这样的问题,仔细一点儿,花些时间,自己是可以看出的
threenewbee 2014-03-10
  • 打赏
  • 举报
回复
x +=delta; 被执行了 1+ 1+2+ 1+2+3+ ... 1+2+3+...+n 次
mangoalx 2014-03-10
  • 打赏
  • 举报
回复
每一次执行k=?都会执行一次 x+=delta
鱿鱼骚年 2014-03-10
  • 打赏
  • 举报
回复
原来不是执行最里面的一句啊~
mangoalx 2014-03-10
  • 打赏
  • 举报
回复
i=1,j=1,k=1 i=2,j=1,k=1 j=2,k=1,k=2 i=3,j=1,k=1 j=2,k=1,k=2 j=3,k=1,k=2,k=3 i=4,j=1,k=1 j=2,k=1,k=2 j=3,k=1,k=2,k=3 j=4,k=1,k=2,k=3,k=4 . . .

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧