在C++中打印 2D 字符数组
Printing a 2D char array in C++
所以我的代码有问题,我无法确定。简而言之,我想以网格格式打印出 c++ 中的 2D 字符数组的内容。我的代码如下(请记住,我不想更改代码的结构,只需找到为什么我没有得到想要的结果(:
#include <iostream>
#include <string>
using namespace std;
void drawBoard(char board[3][4])
{
int j = 0;
for (int i = 1; i < 12; i++)
{
if ((i % 4) == 1 || (i % 4) == 2)
{
cout << " " << board[i][j] << " |";
}
else if ((i % 4 == 3))
{
cout << " " + board[i][j] << endl;
}
else
{
cout << "---+---+---" << endl;
j += 1;
}
}
}
int main()
{
char board[3][4] = { {' ', ' ', ' ', ' '}, {' ', ' ', ' ', ' '}, {' ',
' ', ' ', ' '} };
drawBoard(board);
cin.get();
}
我期望这给我的是一个基本的井字游戏网格,其中有 X 和 O 的空白区域。相反,我得到的是一个网格,如预期的那样,随机字符放置在一些正方形中,无论我进行多少调整都会给出相同或相似的结果,但我不明白为什么。任何帮助将不胜感激(最好也不要包括基本 c++ 以外的任何内容,如函数、循环等,因为我还没有学过这些,即使我们知道它们,我们也不能在作业中使用它们(。
检查数组范围:
char board[3][4]
然后你有:
board[i][j] -> board[1,2,3,5,6,7,9,10,11][j]
无论i%4
是什么,放在board
里的东西i
不是i%3
.
使用以下任一结构:
for i
for j
board[i][j]
或
for i
((char*)board)[i]
我已经编辑了您的代码:
#include <iostream>
#include <string>
using namespace std;
void drawBoard(char board[3][4])
{
for (int i = 0; i < 12; i++)
{
if(i%4!=3)
{
cout<<" "<<board[i/4][i%4]; // board[0 to 2][0 to 2, 3 skept]
if(i%4<2)
cout<<" |";
}
else
{
if(i/4<2)
cout<<endl<< "---+---+---";
cout<<endl; // new line
}
}
}
int main()
{
char board[3][4] = { {'x', 'o', 'x', ' '}, {'o', 'x', 'x', ' '}, {'o',
'o', 'x', ' '} };
drawBoard(board);
cin.get();
}
结果:
x | o | x
---+---+---
o | x | x
---+---+---
o | o | x
相关文章:
- 指向指向字符数组的指针数组的指针
- 比较字符数组
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 使用无符号字符数组有效存储内存
- 错误:字符数组的初始值设定项太多
- 对字符数组中的元素执行逐位操作
- C++ 无法在字符数组中使用 for 循环打印字母模式
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- C++ 传递二维字符数组
- 无法在 C++ 中输入字符数组
- 字符数组中的元素数
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 使用字符数组作为 Map 中的键
- C++:__aligned(__alignof__) 导致字符数组数据出现问题?
- 按顺序声明的字符数组重叠
- 在 C++ 中字符串的大小与字符数组的大小
- 寻找一种更好的方法来表示无符号字符数组
- 如何打印 2D 字符数组C++
- 从字符数组的元素中减去'a'是什么意思
- 我是否不正确地集中了这些字符数组?