| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 968 人关注过本帖
标题:关于C语言for结构的小问题,新人被搞晕了。
只看楼主 加入收藏
zgluoyang12
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-11-9
收藏
 问题点数:0 回复次数:12 
关于C语言for结构的小问题,新人被搞晕了。
例子:#include <stdio.h>
void main(){ int,i,j,k;
for(i=1;i<=9;i++)
{for(j=1;j<=i;j++)
 k=i*j;
printf("%1d*%1d=%2d\n",i,i,k);}
printf("\n");····我主要是想问是不是在第一个for结构执行了i=1后,要等到j变到9了,i才变为2?以后一直重复这个过程,直到i变为9.最后就是问for的嵌套执行顺序是这么样的啊,是不是先是内存层的for条件都临界了,最外层的for才进行下一次变化?


ps:本人刚学到for结构,最近有点晕,看到那么多for我就不知道程序的代码执行顺序了,还有如果因为我没有组织好语言而另各位看不懂我提的问题的话,请见谅啊。
搜索更多相关主题的帖子: 结构 懂我 C语言 include 
2012-11-09 16:03
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
不是,第一层循环i的值要带到第二层循环的,也就是说第一层i取3,第二层也取3,第一层i增加了,第二层也增加



本人新手,,说错勿怪

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-09 17:00
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:0 
楼主的理解没问题。

www.qunxingw.wang
2012-11-09 17:15
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:0 
不好意思,此题j不是9,随i值变而变。

www.qunxingw.wang
2012-11-09 17:20
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:0 
内层循环的退出条件为j<=i;,可见执行了i=1后j并不是等到值为9时才退出内层循环执行i=2,而是等到j++使j>i时条件不满足时退出,确切的说就是每次都要等到j>i时内层循环才推出,外层循环执行一次,内层循环就要执行i次。

对于这个程序来说,嵌套循环的执行顺序是:
先执行i=1;,然后判断外层循环的退出条件i<=9是否满足,满足则进入外层循环,不满足则退出执行最后的printf("\n")程序结束。i=1当然满足了,就进到外层循环,执行j=1,判断j<=i;是否满足,满足则进入内层循环,不满足则跳过内层循环执行下面的语句。当然j=1满足,进入内层循环执行k=i*j,k的值为1,再j++,j的值变为2,如果j还满足内层循环退出条件则继续进入内层循环执行,直到j>i退出内层循环,执行printf("%1d*%1d=%2d\n",i,i,k);打印出1*1= 1换行,执行i++后i变成2,整个第一次循环算是执行完了。
这时i的值为2,再重复上面的步骤,直到程序结束!OK!

这个程序执行结果为:
1*1= 1
2*2= 4
3*3= 9
4*4=16
5*5=25
6*6=36
7*7=49
8*8=64
9*9=81
可见每个i值对应一次打印结果,第一列数字是i值,第二列数字是内层循环使j值达到最大值时的j值,内层循环最大j值就是每次外层循环的i值,第三列数字就是i和最大j值的乘积了

[ 本帖最后由 小小战士 于 2012-11-9 18:58 编辑 ]

小小战士,战士中的战斗机!
2012-11-09 17:23
小小小火柴
Rank: 5Rank: 5
来 自:江西赣州
等 级:职业侠客
威 望:3
帖 子:141
专家分:337
注 册:2012-9-28
收藏
得分:0 
  对的。

   好好学习!
2012-11-09 18:14
kalvinyu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:61
专家分:188
注 册:2012-10-31
收藏
得分:0 
for 的嵌套循环一般为外循环执行一次,内循环执行一周,以此类推,所以我们可以总结,但循环次数越多我们的循环也就越复杂,不过我们可以总结出循环的次数也就是循环次数相乘
2012-11-10 16:08
枫叶飘落
Rank: 2
等 级:论坛游民
帖 子:35
专家分:66
注 册:2012-10-27
收藏
得分:0 
J值随I而变受I控制
2012-11-10 16:43
cuqa
Rank: 2
等 级:论坛游民
帖 子:21
专家分:26
注 册:2012-10-10
收藏
得分:0 
你的内循环(也就是第二个for语句)执行条件是j<=i,也就是说当j自增到j>i时就是内循环本轮的终止,
当第一轮外循环i=1时,内循环为 j=1,判断将j<=i,1<=1,条件成立
                                   执行循环体 k=i*j;
                                   printf("%1d*%1d=%2d\n",i,i,k)
                                   执行完成  j++(也就是说j变成2)
                             j=2, 判断将j<=i ,2<=1,条件不成立无法执行
              i=2时,内循环  j=1,判断将j<=i,1<=2,条件成立
                                   执行循环体...
                                   执行完成i自增 j++(j变成2)
                             j=2, 判断将j<=i 条件成立   
                                    执行循环体...
                                   执行完成i自增 j++(j变成3)
                             j=3,判断将j<=i 条件不成立
              i=3 ...
              
                                 .
                                 .
                                 .
              i=9...
     
    多理解就好,学计算机很抽象,编程尤其刚刚接触时很抽象,重在理解,多多练习                     
      


[ 本帖最后由 cuqa 于 2012-11-10 18:20 编辑 ]
2012-11-10 17:27
cuqa
Rank: 2
等 级:论坛游民
帖 子:21
专家分:26
注 册:2012-10-10
收藏
得分:0 
  上面有一处不小心打错了

你的内循环(也就是第二个for语句)执行条件是j<=i,也就是说当j自增到j>i时就是内循环本轮的终止,
当第一轮外循环i=1时,内循环为 j=1,判断将j<=i,1<=1,条件成立
                                   执行循环体 k=i*j;
                                   printf("%1d*%1d=%2d\n",i,i,k)
                                   执行完成  j++(也就是说j变成2)
                             j=2, 判断将j<=i ,2<=1,条件不成立无法执行
              i=2时,内循环  j=1,判断将j<=i,1<=2,条件成立
                                   执行循环体...
                                   执行完成j自增 j++(j变成2)
                             j=2, 判断将j<=i 条件成立   
                                    执行循环体...
                                   执行完成i自增 j++(j变成3)
                             j=3,判断将j<=i 条件不成立
              i=3 ...
              
                                 .
                                 .
                                 .
              i=9...
     
    多理解就好,学计算机很抽象,编程尤其刚刚接触时很抽象,重在理解,多多练习
2012-11-10 18:23
快速回复:关于C语言for结构的小问题,新人被搞晕了。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020979 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved