| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 982 人关注过本帖
标题:continue和break的一道题目(和switch,循环结合)
只看楼主 加入收藏
cherryljr
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-10-25
结帖率:100%
收藏
 问题点数:0 回复次数:10 
continue和break的一道题目(和switch,循环结合)
#include <stdio.h>
int main()
{
int x=1,y=2,z=3;
do
{switch(y++)
{case 1:x++;break;
case 3:x+=3;break;
default:x=x%2;continue;
}
z++;
}
while (y<5);
printf("%d,%d,%d",x,y,z);
return 0;
}
这是程序,大家运行一下就知道结果是:0,5,4
关键在z的值,我想为什么不是6呢?continue跳出的事switch还是do这个循环呢?如果是do的话就能解释了,可是不是跳出的应该是switch吗?
起码break是这样的吧。
不知道我有没有理解错,求大家指正。解释一下这个题目
搜索更多相关主题的帖子: continue default include 
2013-01-13 21:26
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
continue是继续下一次循环,也就是楼主代码中的do while。

My life is brilliant
2013-01-13 21:47
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
所以跳过了一次z++

My life is brilliant
2013-01-13 21:49
唐兵
Rank: 2
来 自:四川泸州合江
等 级:论坛游民
帖 子:150
专家分:12
注 册:2012-12-1
收藏
得分:0 
continue跳出的事switch,只有当y=2和4的时候z才++,只有执行coninu时才执行do,while循环,

一个人如果不比自己一把,你永远不知道自己究竟有多厉害
2013-01-13 22:06
cherryljr
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-10-25
收藏
得分:0 
回复 3楼 lz1091914999
是continue的用法就只有继续下次循环的意思吗?
然后break是用于:和switch使用时跳出switch和循环结构使用时,表示结束此循环。
我这样理解有模有样错啊
2013-01-13 22:06
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
回复 5楼 cherryljr
continue是结束本次循环,继续下一次循环。你这样理解也行。

My life is brilliant
2013-01-13 22:47
YoungerK
Rank: 2
来 自:浙江
等 级:论坛游民
帖 子:9
专家分:25
注 册:2013-1-6
收藏
得分:0 
continue是针对循环设计的吧,跟switch没什么关系吧,switch又不是循环

遗憾往往发生在不经意间!
2013-01-13 23:32
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
回复 7楼 YoungerK
对啊。所以这些问题尽量在书上去找,

My life is brilliant
2013-01-14 01:10
light24
Rank: 1
等 级:新手上路
帖 子:3
专家分:7
注 册:2013-1-3
收藏
得分:0 
continue的原因,第二次循环用了continue,忽略z++,直接下一个循环
2013-01-14 10:20
liujia586
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-12-9
收藏
得分:0 
程序代码:
#include <iostream>
class stack
{
    private:
        int counter;
        char *pt,*begin;
    public:
        stack()
        {
            counter = 0;                // 标记栈里的元素多少;
            begin = pt = new char [10000];      //在堆里给栈分配10000字节的空间;

        }
        ~stack()
        {
            delete [] begin;            //析构函数;
        }
        bool pop(char c)                //入栈;
        {
            if(counter<10000)
            {
                
                pt++;
                *pt=c;
                counter ++;
                return true;
            }
            else
                return false;
        }
        bool push(char &c)                //出栈,注意用的是引用类型;
        {
            if(counter)
            {
                c=*pt;
                pt--;
                counter--;
                return true;
            }
            else 
                return false;
        }
        int getcounter()            //取得当前栈里的元素多少;
        {
            return counter;
        }


};
void main()
{
    using namespace std;
    int count,i;
    char* org[100];                    //定义最大存储字符串的大小,这里是100个;
    cin >> count;
    for(i=0;i<count;i++)
    {
        org[i]=new char [10000];
        
    }                                //给字符串分配空间,大小为10000字节;
    cin.get();
    for(i=0 ;i < count ; i++)
    {
        cin.getline(org[i],10000);
    }                                //输入字符串;
    for(i=0 ; i < count ; i++)
    {
        stack st;                    //实例化一个栈;
        char *porg=org[i];            
        if(*porg==')' || *porg==']')
        {
            cout<<"NO"<<endl;
            continue;
        }                            //如果第一个字符为']'或')',那么肯定不符合要求。直接输出"NO";
        else
        {
            char tem = ' ';            //初始化中间变量为空格,其实只要不为括号就可以了,可任选;
            while(*porg)
            {
                
                if(st.getcounter())        
                {
                    st.push(tem);    //取得栈顶的字符;
                    st.pop(tem);    //再入栈,注意:这里只是为了取得栈顶的元素,不是为了出栈;
                }
                if((*porg==')' && tem =='(') || (*porg== ']' && tem == '[') ) //将栈顶的元素和即将入栈的元素比较;
                {
                    st.push(tem);            //如果匹配,那么出栈,并且即将入栈的字符也不入栈;
                    porg++;
                    tem=' ';
                }
                else
                {
                    st.pop(*porg);        //如果不匹配,那么入栈,指针加1;
                    porg++;
                }
            }
            if(!st.getcounter())        //如果最后栈里没有元素,说明完全匹配,输出"YES",否者输出"NO";
                cout<<"Yes"<<endl;
            else cout<<"NO"<<endl;
        }    
        
    }
    for(i=0;i<count;i++)                //释放内存
    {
        delete [] org[i];
        
    }
}
2013-01-14 21:35
快速回复:continue和break的一道题目(和switch,循环结合)
数据加载中...
 
   



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

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