C语言之switch计算a,b的值

a,b的值为多少

#include
int main()
{
int x=1, y=0, a=0, b=0;
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\n”, a, b);
return 0;
}

​

```

a=2,b=1

  • x = 1, y = 0
    • case 1:
      • case 0 : a++; a = 1,退出这个swtich
    • case 2: a++; b++;
      • a = 2 , b = 1 , 退出外层switch
  • 最后打印 a=2,b=1

输出为a=2,b=1
因为第一个case 1并没有break,导致case 2也会执行

a=1,b=0

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7560661
  • 你也可以参考下这篇文章:C语言:(switch运用)输入a+(或-或*或/)b,并运算相应结果
  • 除此之外, 这篇博客: C语言之switch语句中的 三、经典例子 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    • 问题1:根据用户输入一个数字判断星期,1~5为工作日,6~7为休息日
    • 问题2:根据用户输入一个数字判断该月季节

    代码实现如下(示例):

    //问题 1:
    #include <stdio.h>
    
    int main(){
    	int week;
    	printf("请输入星期时间对应的数字:");
    	scanf("%d", &week);
    	switch (week)
    	{
    	case 1:
    	case 2:
    	case 3:
    	case 4:
    	case 5:
    		printf("工作日\n");
    		break;
    	case 6:
    	case 7:
    		printf("休息日\n");
    		break;
    	default:
    		printf("输入有误!\n");
    		break;
    	}
    	return 0;
    }
    
    //问题 2:
    #include <stdio.h>
    
    int main(){
    	int month;
    	printf("请输入月份时间对应数字:");
    	scanf("%d", &month);
    	switch (month)
    	{
    	case 3:
    	case 4:
    	case 5:
    		printf("春季\n");
    		break;
    	case 6:
    	case 7:
    	case 8:
    		printf("夏季\n");
    		break;
    	case 9:
    	case 10:
    	case 11:
    		printf("秋季\n");
    		break;
    	case 12:
    	case 1:
    	case 2:
    		printf("冬季\n");
    		break;
    	default:
    		printf("输入有误!");
    		break;
    	}
    	return 0;
    }
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^