首页 > 试题广场 >

有以下程序 main() { int i; for(

[单选题]
有以下程序
int main()
{
    int i;
    for(i = 0; i < 3; i++)
    {
        switch(i)
        {
        case 0:
            printf("%d",i);
        case 2:
            printf("%d",i);
        default:
            printf("%d",i);
        }
    }
    return 0;
}

程序运行后的输出结果是()

  • 022111
  • 021021
  • 000122
  • 012
switch语句中没有break会执行满足条件的和之后的所有条件,i=0,case0,2,default均会执行;i=1,执行default;i=2,执行case2和default.综上,000 1 22
发表于 2017-10-25 09:24:46 回复(1)
switch语句后不加break,那么代码会一直顺序执行下去(忽略后面的case条件判断),直到break或是end语句
以前只知道会继续执行,但不知道会“忽略case判断条件而执行case后面的语句”!
发表于 2018-02-07 09:47:46 回复(0)
首先switch里面没有break,一旦执行第一个语句就顺序执行,所以就可以解释了
发表于 2017-08-27 13:54:59 回复(0)
switch语句不会在执行判断为真后的语句之后跳出循环,而是继续执行后面所有case语句。在每一case语句之后增加break 语句,                            使每一次执行之后均可跳出switch语句,从而避免输出不应有的结果。
发表于 2018-05-08 20:58:41 回复(1)
本题关键点:循环,没有break。
没有break,swith会从满足条件处开始执行到最后结束。
发表于 2020-11-24 16:48:17 回复(0)
必须加break,不加break会忽略后面的条件判断,执行所有后面的case语句
发表于 2019-11-24 06:54:27 回复(0)
case后面没有break语句。
发表于 2022-04-17 13:53:51 回复(0)
复制到2019的c++中答案是012,我觉得也是000 1 22。有哪个大神可以指导一下为什么会这样
发表于 2021-12-20 14:24:26 回复(0)
<p>注意没有break语句</p>
发表于 2020-08-29 08:50:32 回复(0)
如果switch没有匹配的标签,如果有default标签,就跳转至该行。
发表于 2017-08-27 22:35:03 回复(0)