为什么我定义的ROW和COL为3,而传过去的结果为10?

img

img

img


在编译三子棋的棋盘部分,曾经成功运行3X3,然后将数据改成10X10也能成功运行,但是现在改不回去了。

  • 这篇博客: 【C语言】扫雷—初学者也能写的小游戏中的 这里要强调的是传参的时候用的是ROW COL 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •     因为打印出来的是要给用户观察的
        ROW COL 定义的为9
        所以要打印9*9 的个格子 
        
        聪明的你要问了:怎么才能在11*11 的数组中打印9*9 的格子呢?
        
        你: 我才没问呢  我都知道!
        
        你: 只要在数组下标为1 的地方打印到下标10就可以啦
        
        你真是个机灵鬼!!!
    

    game.c

        //打印
        void DY(char LQu[ROWS][COLS], int row, int col)
        {
        	int i = 0;
        	for (i = 0; i <= row; 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 ", LQu[i][j]);
        		}
        		printf("\n");
        	}
        	printf("\n");
        }
    
        上述代码 第一个循环 是打印出了每行的编号 为了方便观察
        下面的代码 也在每一行的首元素打印了编号
        最后for循环打印的数组初始化的内容
        
        打印结果如下:DY(PCha, ROW, COL);
                共有10个雷
                0 1 2 3 4 5 6 7 8 9
                1 * * * * * * * * *
                2 * * * * * * * * *
                3 * * * * * * * * *
                4 * * * * * * * * *
                5 * * * * * * * * *
                6 * * * * * * * * *
                7 * * * * * * * * *
                8 * * * * * * * * *
                9 * * * * * * * * *
    
  • 以下回答由chatgpt基于相关博客总结生成:

    针对问题描述,参考资料中的代码无关,给出以下解决方案:

    1. 查找与修改代码中的行数和列数相关的部分,检查是否有错误。可以考虑使用调试工具进行查找,比如Visual Studio的调试工具。

    2. 可能出现的错误有:

    (1) 行列数值被修改为10,但没有对相应的部分进行修正导致传回的结果是10。

    (2) 代码中使用了全局变量或者存在指针问题,导致出现意外的结果。

    1. 如果找不到明显的错误,可以考虑重构代码,使用面向对象的方式进行开发,减少出错可能性。

    总之,出现此类问题,可以通过仔细排查代码进行修改,或者重新设计代码来解决。