鱼C论坛

 找回密码
 立即注册
查看: 2543|回复: 12

我快被循环嵌套折磨疯了!

[复制链接]
发表于 2012-2-12 16:42:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 花落、莫相离 于 2012-2-12 17:25 编辑
  1. #include <stdio.h>
  2. main()
  3. {
  4. int i, j, k;
  5. for(i=0;i<2;i++)
  6. for(j=0;j<2;j++)
  7. for(k=0;k<2;k++)
  8. printf("%d,%d,%d\n",i,j,k);
  9. }
复制代码

得出的结果   
0,0,0
0,0,1
0,1,0
0,1,1
1,0,0
1,0,1
1,1,0
1,1,1


我快疯了,谁能用最简单易懂的人类语言帮我解释下 这些都是怎么来的啊  我刚看到视频第5章 循环嵌套这

之前看的几章  没感觉这么难弄明白,就这章循环嵌套,已经卡了一天了   楞是不明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-12 16:46:32 | 显示全部楼层
时间你知道吧?小甲鱼老师说你当他是时钟看就行了.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-12 16:51:03 | 显示全部楼层
本帖最后由 猪好大 于 2012-2-12 16:54 编辑

当 i=0 j=0 k的变化是0 1 然后进1,
I=0 j=1   K又 0 1进1
I=1 j=0 k=0
这道题你可以想想二进制就懂了吧

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-12 16:53:59 | 显示全部楼层
本帖最后由 believeme 于 2012-2-12 16:54 编辑

不要太纠结于这种问题,以后慢慢就懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-2-12 17:03:34 | 显示全部楼层
我都怀疑我是不是病态,一个问题闹不明白 就一直琢磨 一直琢磨,根本没心思去学下面的课程!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-2-12 17:04:33 | 显示全部楼层
这个循环嵌套  套着套着就把我套蒙了!  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-2-12 17:13:03 | 显示全部楼层
不想了  套来套去的套的我头疼,休息休息再想!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-12 17:15:12 | 显示全部楼层
这道题你就理解成二进制,
或者理解一个FOR就是十位加一个FOR就成了百位再加一个FOR就理解成千位,
十个一才能变成一个十  十个十就变成一个一百啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-13 20:03:39 | 显示全部楼层
本帖最后由 xiezutao 于 2012-2-13 20:06 编辑
  1. # include <stdio.h>
  2. int main(void)
  3. {
  4.         int i, j, k;

  5.         for(i=0;i<2;i++)
  6.         {
  7.                 for(j=0;j<2;j++)
  8.                 {
  9.                         for(k=0;k<2;k++)
  10.                                 printf("%d,%d,%d\n",i,j,k);
  11.                         printf("-------万恶的分割线-------\n");
  12.                 }
  13.                 printf("~~~~~可爱的分隔线~~~~~~\n");
  14.         }

  15.         return 0;
  16. }
复制代码
这样子比较便于理解。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-13 20:19:27 | 显示全部楼层
:loveliness: 这都疯的话 递归什么的你就连看都不想看了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-13 20:54:48 | 显示全部楼层
  1. #include <stdio.h>

  2. void main()
  3. {

  4. int i, j, k;

  5. printf("------------- while ---------------\n");

  6. i = 0;

  7. while(i < 2)
  8. {       
  9.         j = 0;
  10.        
  11.         while(j < 2)
  12.         {
  13.                 k = 0;
  14.                
  15.                 while(k < 2)
  16.                 {                       
  17.                         printf("%d,%d,%d\n",i,j,k);               
  18.                        
  19.                         k++;
  20.                 }
  21.        
  22.                 j++;
  23.         }
  24.        
  25.         i++;
  26. }

  27. printf("-------------- for ----------------\n");
  28.        
  29. for(i=0;i<2;i++)   // 0,0,0 | 0,0,1 | 0,1,0 | 0,1,1 | 1,0,0 | 1,0,1 | 1,1,0 | 1,1,1 |个人推算结果!
  30.         {
  31.                 for(j=0;j<2;j++)
  32.                 {
  33.                         for(k=0;k<2;k++)
  34.                         {
  35.                                 printf("%d,%d,%d\n",i,j,k);               
  36.                         }
  37.                 }
  38.         }       

  39.        

  40. }
复制代码
朋友给你个看循环的好方法!你去单步调试!看电脑是怎么计算的!然后你就明白了!
先进第一层循环!然后第二层!第三层!然后输出!这时候 i,j,k是要循环完毕才会加1的 结果是0.0.0 然后第三层循环还没有结束!条件还满足!直到条件不满足 就开始第二层循环!然后进第三层循环 初始化K = 0 !三层循环完毕!二层完毕!然后一层!就照着这个逻辑推理!就行了!
上面两种选其一理解然后其他方法就好理解了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-2-13 22:51:05 | 显示全部楼层

嗯  谢谢啊   今天刚学完单步调试    看完调试 一下就明白是怎么算的了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-2-13 22:51:46 | 显示全部楼层
ever.g 发表于 2012-2-13 20:19
这都疯的话 递归什么的你就连看都不想看了

我只是一时没纳过闷来它是怎么执行程序的,今天学了单步调试  一下就明白了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 04:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表