这段代码输出什么?求解

int c=5,k;

for(k=1;k<3;k++)

switch(k)

{

default:c+=k;

case 2: c++;break;

case 4: c+=2;break;

}

printf("%d\n",c);

这个还是比较好理解的,输出结果为7。

循环两次,第一次k=1,进入default语句,执行c+=k,即c=5+1=6;第二次k=2,进入case 2语句,执行c++,即c=6+1=7。由于没有case 3,所以不会进入任何语句。最后输出c的值为7。

输出结果为7


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

看代码要一层一层看
显然switch是包含在循环里面的
那么先看循环,k=1;k<3,很显然循环2次,k的值分别是1和2
k是1时,进入default:分支,执行c+=k,c=6,由于default分支没有break,会贯穿标签,继续执行下面的c++,所以c=7
k是2时,进入case 2,c++,c=8
最终c的值是8

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/699764
  • 你也可以参考下这篇文章:格式化输入输出和按位运算
  • 除此之外, 这篇博客: 要啥有啥?扫雷代码全解来也!中的 打印界面 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 代码展示📜:

    void PrintBoard(char Board[ROWS][COLS], int row, int col)
    {
    	printf("----------扫雷游戏----------\n");
    	int i = 0;
    	for (i = 0; i <= col; i++)//列号
    	{
    		printf("%d ", i);
    	}
    	printf("\n");
    	for (i = 1; i <= row; i++)//行号
    	{
    		int j = 0;
    		printf("%d ", i);
    		for (j = 1; j <= col; j++)
    		{
    			printf("%c ", Board[i][j]);//打印数组中的内容
    		}
    		printf("\n");
    	}
    	printf("----------扫雷游戏----------\n");
    }
    

    说明:

    在打印界面最上面和最下面都需要打印分隔线,打印数组中的内容时为了让玩家能够快速识别坐标位置,所以需要打印行号、列号

    代码效果👀:

    在这里插入图片描述

  • 您还可以看一下 覃秉丰老师的机器学习算法基础课程中的 代价函数小节, 巩固相关知识点