C语言实现带边框的3个二维数组棋盘打印问题求助
解决三个并排棋盘的打印问题
嘿,我一眼就瞅出问题所在了——你已经写好了三个棋盘的表头和底部边框,但在循环打印每一行的时候,只输出了第一个棋盘的内容,另外两个棋盘的对应行完全没处理,所以自然看不到后面两个棋盘啦!
要实现三个棋盘横向并排打印,核心是在每一行循环(也就是遍历每一行的i循环)里,依次打印三个棋盘的当前行(第i行)的所有列,然后再换行。这样才能保证三个棋盘在同一水平线上对齐,不会出现第一个棋盘占满所有行,后面两个没地方放的情况。
下面是修正后的完整代码,我还帮你调整了几个细节:
void imprimir_3_tableros(char tablero1[10][10], char tablero2[10][10], char tablero3[10][10]) { int i; int j; // 打印三个棋盘的表头,中间加空格分隔开 printf(" A B C D E F G H I J A B C D E F G H I J A B C D E F G H I J\n"); // 打印三个棋盘的顶部边框 printf("╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╗ ╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╗ ╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╗\n"); for (i = 0; i < 10; ++i) { // 打印行之间的分隔线,第一行之前不需要 if (i != 0) { printf("╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣\n"); } // 先打印第一个棋盘的第i行所有列 for (j = 0; j < 10; ++j) { printf("║ %c ", tablero1[i][j]); // 注意:你的数组是char类型,用%c才会显示字符,%d会打印ASCII码哦 } printf("║ "); // 第一个棋盘行尾加空格,和第二个棋盘分隔开 // 接着打印第二个棋盘的第i行所有列 for (j = 0; j < 10; ++j) { printf("║ %c ", tablero2[i][j]); } printf("║ "); // 第二个棋盘行尾加空格,和第三个棋盘分隔开 // 最后打印第三个棋盘的第i行所有列 for (j = 0; j < 10; ++j) { printf("║ %c ", tablero3[i][j]); } printf("║\n"); // 第三个棋盘行尾换行,进入下一行循环 } // 打印三个棋盘的底部边框 printf("╚════╩════╩════╩════╩════╩════╩════╩════╩════╩════╝ ╚════╩════╩════╩════╩════╩════╩════╩════╩════╩════╝ ╚════╩════╩════╩════╩════╩════╩════╩════╩════╩════╝\n"); }
几个关键的修改点:
- 打印顺序调整:从先打完整第一个棋盘,改成在每一行循环里同时输出三个棋盘的当前行,确保横向对齐。
- 格式符修正:因为你的棋盘是
char数组,之前用%d会打印字符的ASCII数值,改成%c才能正确显示棋盘上的符号(比如空格、棋子标记等)。如果你的数组存的是数字状态(比如0/1),再改回%d就行。 - 分隔空格补充:在每个棋盘的行尾加了空格,让三个棋盘之间的视觉分隔更清晰,不会挤在一起。
这样修改后,三个棋盘就能整齐地并排打印出来啦!
内容的提问来源于stack exchange,提问作者Puntogris
相关产品推荐
相关产品推荐

