看一看这个,switch语句中的

int s=0
s+=1
s+=2
s+=3
switch循环后s等于6
为什么?

s=0
s+=1,此时s=0+1=1
s+=2,此时s=1+2=3
s+=3,此时s=3+3=6

题主把全部代码给出啊!你这说谁能看出来问题啊!

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/790695
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:使用switch语句来进行程序中的加减乘除运算
  • 除此之外, 这篇博客: 分支语句和循环语句中的 switch语句 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • switch适用于多分支语句

    #include<stdio.h>
    int main()
    {
    	int day = 0;
    	scanf("%d", &day);
    	switch(day)
    	{
    	case 1:
    	case 2:
    	case 3:
    	case 4:
    	case 5:
    		printf("weekday\n");
    		break;
    	case 6:
    	case 7:
    		printf("weekend\n");
    		break;
    	default:
    		printf("选择错误\n");
    		break;
    	}
    }
    

    需要强调的是,switch后面的必须是整形表达式,浮点型就会出错。

    case 后面只能放常量表达式,必须是整形,也必须是常量。

    #include<stdio.h>
    int main()
    {
    	int n = 1;
    	int m = 2;
    	switch (n)
    	{
    	case 1:m++;
    	case 2:n++;
    	case 3:
    		switch (n)
    		{//switch允许嵌套使用
    		case 1:	n++;
    		case 2:m++;n++;	break;
    		}
    	case 4:m++;break;
    	default:
    		break;
    	}
    	printf("m = %d, n = %d\n", m, n);
    	system("pause");
    	return 0;
    }
    //结果是m=5,n=3;
    
  • 您还可以看一下 李南江老师的零基础学会C语言课程中的 选择结构switch练习一(理解) 小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    在上述参考资料中给出的代码中,switch语句是根据输入的整数i的值,决定执行哪一个case里面的代码块。每一个case后面的整形常量表达式与i的值相等时,就会执行对应的代码块。如果没有一个case的表达式与i的值相等,则默认执行最后的default代码块。而每一个case代码块的最后是没有break语句的,这意味着不管case语句块执行完毕与否,都会继续执行下一个case块的代码。因此,当i的值为3时,会执行case 3、case 4、case 5、case 6和case 7中的全部代码块,最终将s的值增加到6。要解决这个问题,只需要给每一个case语句块加上break语句,表示执行完case语句块后跳出switch循环。修改后的代码如下:

    #include <stdio.h>
    
    int main() {
        int i = 0;
        scanf("%d", &i);
        int s = 0;
    
        switch (i) {
            case 1:
                s++;
                break;
            case 2:
                s++;
                break;
            case 3:
                s++;
                break;
            case 4:
                s++;
                break;
            case 5:
                s++;
                break;
            case 6:
                s++;
                break;
            case 7:
                s++;
                break;
            default:
                break;
        }
    
        printf("s = %d\n", s);
        return 0;
    }