首页 > 试题广场 >

以下程序的输出结果是

[单选题]
以下程序的输出结果是:
#include <iostream.h>
int main()
{
    int x=3,y=3;
    switch(x%2)
    {
    case 1:
        switch (y)
        {
        case 0:
            cout<<"first";
        case 1:
            cout<<"second";
            break;
        default:
            cout<<"hello";
        }
    case 2:
        cout<<"third";
    }
    return 0;
}
  • second third
  • hello
  • first second
  • hellothird
推荐
【正确答案】D
【解析】第一个 switch,x % 2 的结果为 1,所以进入第一个 switch 的 case 1;
然后进入第二个 switch,y 的值为 3,但是第二个 switch 中没有匹配的,所以执行 default 中的语句,输出 "hello",此时第二个 switch 执行结束,第一个 switch 的 case 1 执行完毕;
由于第一个 switch 的 case1 后没有 break,所以会继续向下执行 case 2,输出 "third";
所以最终结果为 "hellothird"。
 
switch 语句知识点讲解】
更多C++基础专业知识讲解,点击链接即可查看
https://www.nowcoder.com/link/zxyl-cpp85
编辑于 2021-11-18 08:35:49 回复(0)
这里有陷阱,MD
switch(x%2) {//switch(1)
        case1:
            switch(y) {//这里为毛是y,看错
        case0:cout<<"first";
        case1:cout<<"second";break;
        default: cout<<"hello";
    }

发表于 2018-06-12 15:01:20 回复(0)
不仅第一个满足switch的那个case里面的东西会被执行,而且只要没有遇到break,这个case下面的所有case都会被执行 case1的最后面没有break,所以没有跳出最外面的switch,输出了third。case1里面的switch,满足条件时恰好是最后一个case,输出了hello,因此没break也只输出了一个
发表于 2016-02-19 14:21:30 回复(3)

case语句后面没有break,顺序执行。

发表于 2015-09-05 14:41:44 回复(0)
swich语句从哪进直到break退出 x=3.swich(x%2)语句,x%2取余是1,逻辑语句为真,进入case1:swich(y)语句,此时y=3,进入default语句,输出hello,但此没有break程序没结束,再次进入swich(x%2)语句中的case 2: 输出third程序才结束
发表于 2017-08-20 18:36:12 回复(1)
switch在遇到满足条件的case前不会进入,遇到之后会进入,并进入之后的所有case
发表于 2019-03-11 22:25:39 回复(0)
我相信,switch(y%2)的不止我一个
发表于 2018-09-12 15:33:39 回复(0)
case break一定要配合使用啊,记住了了啊。
发表于 2019-07-01 22:39:43 回复(0)
原来是没有break。。。
发表于 2015-09-05 13:45:07 回复(0)
没有break,就会执行下面的所有case
发表于 2021-07-01 10:59:32 回复(0)
hello后面没有break,继续往后面执行
发表于 2021-02-19 12:45:01 回复(0)

那为什么不输出first呢

发表于 2019-07-27 19:05:26 回复(0)
switch(表达式)
{
case 常量1:语句1
case 常量2:语句2
..........
default:语句n
}
(1)switch后面括号内,其值类型应该为整数类型(包括字符型)
(2)花括号内为复合语句,包含多个以case开头的语句行和最多一个以default开头的行,case后面跟一个常量,他们和default一样都是起标号的作用,用来标志一个位置
(3)执行switch语句时,先计算表达式的值,然后依次和各标号比较,如果与某一个标号相同,流程转到此标号后面的代码,如果没有则去执行default后面的语句。
发表于 2018-06-30 21:52:20 回复(0)
这个程序能不能写写整齐
发表于 2018-03-27 10:09:39 回复(0)
无break
发表于 2018-02-07 13:41:44 回复(0)
没遇到break其他的都会被执行
发表于 2017-08-30 17:20:21 回复(0)
对于x,case执行完并没有break
发表于 2017-02-26 10:23:49 回复(0)