| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1022 人关注过本帖, 1 人收藏
标题:求详解for循环
只看楼主 加入收藏
xuzejia_love
Rank: 2
等 级:论坛游民
帖 子:41
专家分:49
注 册:2010-12-5
收藏
得分:0 
怎么感觉这程序差了个分号

学的是语法,要的是算法。
2012-05-19 23:28
hailong_1988
Rank: 1
等 级:新手上路
帖 子:3
专家分:8
注 册:2012-5-19
收藏
得分:0 
6!!!
2012-05-19 23:30
wei849690454
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-5-19
收藏
得分:0 
#include <stdio.h>
main()
{  
      int i, j, x = 0;
      for(i=0; i<5; i++)   //i循环 循环5次取值i=0 i=1 i=2... 结束循环i=5      
   {
           if (i%3==2)     //判断是否能被3整除余2 能则跳出i循环到下个i的值         
                  break;
              x++;    //若不能被3整除则进行x++循环,进行
         for(j=0; j<4; j++)
            {
                if(j%2)
                break;//判断j是否被2整除么?行则循环到下个i的值
              x++;          //否则进行x+1
            }
      }      
        x++;         
        printf("x=%d\n",x);
        return 0;
        
}  
2012-05-19 23:59
xuzejia_love
Rank: 2
等 级:论坛游民
帖 子:41
专家分:49
注 册:2010-12-5
收藏
得分:0 
程序代码:
#include <stdio.h>
int main()
{ 
    int i,j,x=0;

    for(i=0;i<5;i++)        
    {
        if(i%3==2)                     
            break;
        x++;               
        for(j=0;j<4;j++)
        {
            if(j%2)
                break;       
            x++;           
        }
    }     
    x++;        
    printf("x=%d\n",x);

    return 1;     
} 

x=5。如果我没猜错的话:从第一个for里面的if来看,第一个for只能用两次,i=2的时候是第三次,可是它已经跳出来了;第二个for每次只能用一次,当j=1的时候是第二次,可是被break掉;也就是说,第一个for(也就是全局的for)里面,x++了四次,有两次循环,出了for循环之后还有一个x++,所以x=5。

[ 本帖最后由 xuzejia_love 于 2012-5-20 08:51 编辑 ]

学的是语法,要的是算法。
2012-05-20 16:50
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
看不到干嘛不调试一下呀

                                         
===========深入<----------------->浅出============
2012-05-20 16:59
jue_1012
Rank: 1
等 级:新手上路
帖 子:15
专家分:4
注 册:2012-5-18
收藏
得分:0 
#include <stdio.h>
 main(){
 int i, j, x=0;
 for(i=0; i<3; i++)
 { if (i%3==2) break;
 x++;
 for(j=0; j<4; j++)
 { if(j%2) break;
 x++;
 }
 x++;
 }
 printf("x=%d\n",x);
 }

这个运行出来是x=6;求解??不是j=2时跳出循环的啊???为什么是j=1时???
2012-05-20 17:23
xuzejia_love
Rank: 2
等 级:论坛游民
帖 子:41
专家分:49
注 册:2010-12-5
收藏
得分:10 
一样道理,第一个for循环因为有它里面的if(),循环两次而已,所以第一个x++和最后一个x++都有两次同等的机会让它们都自加1,对于for循环里面的那个for循环,也是只有两次机会让他们x++。也就是说,全局来看,x++共能执行3*2次。请问1%2==?不是等于1吗?2%2==?不是等于0吗?if(0)会执行下去吗?

学的是语法,要的是算法。
2012-05-20 21:55
kingofhevil
Rank: 1
等 级:新手上路
帖 子:37
专家分:6
注 册:2012-3-7
收藏
得分:0 
回复 楼主 kingofhevil
调试出来的答案是6 啊。。。。。。。。。。。。。。以后看到这样的一定要先调试了再来回答啊
2012-05-21 19:18
kingofhevil
Rank: 1
等 级:新手上路
帖 子:37
专家分:6
注 册:2012-3-7
收藏
得分:0 
回复 5楼 qq383264679
嵌套循环里的break执行时是跳出其所在的循环呢还是跳出整个循环啊?程序执行结果是6,所以你的分析肯定在某个地方出了问题,请再帮我耐心找找吧
2012-05-21 19:24
kingofhevil
Rank: 1
等 级:新手上路
帖 子:37
专家分:6
注 册:2012-3-7
收藏
得分:0 
回复 7楼 Elambaby
1%2=1,执行break跳出,这你都不懂么?
2012-05-21 19:27
快速回复:求详解for循环
数据加载中...
 
   



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

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