【问题标题】:C++ Printing ArrayC++ 打印数组
【发布时间】:2014-05-20 10:44:12
【问题描述】:

所以我有一个二维数组用作网格图,其中每个数组块都是地图上的一个空间。

所以在我的 main() 中,我用

初始化了数组“地图”
char Map[ROWS][COLS]={'x'};

ROWS = 10 和 COLS = 20

后来我用函数 PrintMap 调用

void PrintMap(const char Map[ROWS][COLS], const bool showTreasure)
{


for (int countr=0; countr<ROWS;countr++){
    for (int countc=0; countc<COLS;countc++){      //print map
            if (!showTreasure){
                    if (Map[countr][countc]!='T')
                            cout << Map[countr][countc];
                    else
                            cout << '*';
            } else {

                    cout << Map[countr][countc];

            }
    }
cout << endl;
}



}

网格上的一个空间是游戏中的宝藏或目标所在的位置。在 PrintMap 的参数中是 bool showTreasure,即您是否希望在地图上显示“T”或是否要隐藏它。

因此,数组中的一个空格将是“T”,而所有其他空格将是“*”、“X”或“P”。

* 表示什么都没有。

所以 if 语句应该说:如果 showTreasure 为假(意味着您想隐藏“T”):如果不是“T”,则打印数组中的内容,如果不是,则打印“*”是一个T。

现在我的问题是,即使我已经用 200 *s 初始化了数组,当我运行程序时它只打印出 1 *。

【问题讨论】:

  • 好吧,如果您显示您所说的初始化代码会有所帮助。

标签: c++ arrays printing


【解决方案1】:

如果你的初始化是这一行:

char Map[ROWS][COLS]={'x'};

然后将矩阵初始化为单个 x 后跟 199 个 NULL 字符。

查看https://stackoverflow.com/a/201116/29157的精彩解释。

有关std::fill() 的更多信息,请参阅https://stackoverflow.com/a/3948314/29157

感谢您的提示,CantChooseUsernames

【讨论】:

  • 哦,我以为应该用它来填充所有字符。那它的语法是什么?
  • #include &lt;algorithm&gt;使用std::fill(&amp;Map[0][0], &amp;Map[Rows][Cols], 'X');
  • @CantChooseUsernames 没关系。我在链接中看到了答案。
猜你喜欢
  • 1970-01-01
  • 2013-09-23
  • 2018-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多