switch...case语句嵌套问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了switch...case语句嵌套问题相关的知识,希望对你有一定的参考价值。

main()
int x,y,a=0,b=0;
scanf("%d%d",&x,&y);
switch(x)
case 1:
switch(y)
case 0:a++;break;
case 1:b++;break;

case 2:a++;b++;break;
case 3:a++;b++;

printf("a=%d,b=%d",a,b);

_______________________________________________________
运行后
假如输入 1 0
结果是 a=2,b=1

但自己算感觉结果应该是a=1,b=0
求高人详细讲解

输入 1 0
先运行:
case 1:
switch(y)
case 0:a++;break;
case 1:b++;break;

因为y=0,所以运行:case 0:a++;break;
因为
case 1:
switch(y)
case 0:a++;break;
case 1:b++;break;

没有break;所以继续运行
case 2:a++;b++;break;
在这里break掉了,所以最后的执行有 a++ a++ b++;

要想得到:
a=1,b=0
改成这样:
case 1:
switch(y)
case 0:a++;break;
case 1:b++;break;

break;
case 2:a++;b++;break;
case 3:a++;b++;
参考技术A #include <stdio.h>
void main()

int x,y,a=0,b=0;
scanf("%d%d",&x,&y);
switch(x)

case 1: //x = 1,那么执行
switch(y) //y = 0 那么执行

case 0:a++;break; //执行这句之后a的值已经变成了1,这个时候a = 2 ,b=0,还是原来的是没变
case 1:b++;break;

case 2:a++;b++;break; //注意这个时候你并没有写break那么这句话是要执行的那么执行后a = 2 b =1然后跳出,输出
case 3:a++;b++;

printf("a=%d,b=%d.\n",a,b);
参考技术B switch(x)中的case 1: 没有break
所以程序会执行到 switch(x) 中的 case 2:
注意 break 只会跳出离它最近的
建议设置断点调试 break 流向。
参考技术C break跳出的是嵌套里面的那个switch,
跳出后a=1;
顺序执行了语句: 这里没有判断switch(x)没有作用
case 2:a++;b++;break;跳出循环
可以用下面的测试

int x,y,a=0,b=0;
cin>>x>>y;
switch(x)
case 1:
switch(y)
case 0:a++;break;
case 1:b++;break;

case 2:a++;b++;
cout<<a<<b;
break;
case 3:a++;b++;

cout<<a<<b;
参考技术D 这样你就明白了
main()
int x,y,a=0,b=0;
scanf("%d%d",&x,&y);
switch(x)
case 1:
printf("a=%d,b=%d\n",a,b);
switch(y)
case 0:a++;break;
case 1:b++;break;
printf("a=%d,b=%d\n",a,b);

case 2:a++;b++;
printf("a=%d,b=%d\n",a,b);break;
case 3:a++;b++;
printf("a=%d,b=%d\n",a,b);

printf("a=%d,b=%d\n",a,b);

急急急!switch case嵌套

如何在一个switch中自由的转换case
目前我在一个switch中想通过输入在菜单中的序号来进行转换功能,直至输入退出指令才程序终止
System.out.println("请输入操作的序号:");
System.out.println("1、插入新元素");
System.out.println("2、删除元素");
System.out.println("3、查询表长");
System.out.println("4、查询定值");
System.out.println("5、查找第i个位置元素");
System.out.println("6、退出程序");
Scanner aa=new Scanner(System.in);
bb=aa.nextInt();
switch(bb)


case 1:
。。。。。。。。。。。。。
break;
case 2:
。。。。。。。。。。。
break;
case 3:
。。。。。。。。。。。
break;
case 4:
。。。。。。。。
break;
case 5:
。。。。。。。。
break;
case 6:
System.out.println("欢迎下次使用!");
break;
default:
if(bb>6||bb<1)

System.out.println("数值超出范围,请重新输入!");

while(true) bb=aa.nextInt();
      switch(bb)
     

      case 1:
   。。。。。。。。。。。。。
       break;
      case 2:
。。。。。。。。。。。
       break;
      case 3:
  。。。。。。。。。。。
       break;
      case 4:
。。。。。。。。
            break;
      case 5:
。。。。。。。。
            break;
      case 6:
        System.out.println("欢迎下次使用!");
        break;
      default:
        if(bb>6||bb<1)
        
           System.out.println("数值超出范围,请重新输入!");           
        
        这样在外层加一个循环就可以实现循环输入了

参考技术A 用菜单的级联不就好了吗 输入1 就调用插入新元素的方法 或者 实例化别的类再调用方法

以上是关于switch...case语句嵌套问题的主要内容,如果未能解决你的问题,请参考以下文章

Switch case 语句怎么使用

第二次 实验报告

急急急!switch case嵌套

关于switch case语句的问题

第二次试验报告

分支结构实验