【发布时间】:2013-12-10 00:32:50
【问题描述】:
下面我有一个我写的多维数组,它输出一个 8x8 块并显示国际象棋游戏中所有棋子的起始位置。
我想知道两个问题:
如何将数字 1 到 8 从两侧相加,字母 A-H 从左到右相加?
当打印到控制台时,数组中所有未填充的空格保持空白。如果我想手动移动一个棋子说皇后典当一个,我怎样才能再次显示屏幕但这次将典当的原始位置保留为空白,就像棋盘的其余部分一样?
感谢您的宝贵时间,
标记
#include <iostream>
#include <string>
#include<iomanip>
using namespace std;
int main()
{
string chess[8][8];
for (int j=0;j<8;j++)
{
chess [1][j]= "P";
chess [6][j]= "P";
chess [0][0]="R";
chess [7][0]="R";
chess [0][7]="R";
chess [7][7]="R";
chess [0][1]="Kn";
chess [7][1]="Kn";
chess [0][6]="Kn";
chess [7][6]="Kn";
chess [0][2]="B";
chess [7][2]="B";
chess [0][5]="B";
chess [7][5]="B";
chess [0][3]="Q";
chess [7][3]="Q";
chess [0][4]="Ki";
chess [7][4]="Ki";
}
for (int a=0;a<8;a++)
{
for (int b=0;b<8;b++)
{
cout<<setw(4)<<chess[a][b];
}
cout<<endl;
}
system ("pause");
return 0;
}
【问题讨论】:
-
chess第 3-6 行尚未初始化。 C/C++ 不会自动在堆栈变量中放置空格。你必须这样做。 -
我相信 C++ 会调用堆栈变量的默认构造函数,即使在数组中也是如此。 std::string(相对于 POD 类型)很可能在字符串 chess[8][8] 中正确初始化;
标签: c++ types multidimensional-array