提问者:小点点

我无法获得以下代码的输出


我想打印这样的数字:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

所以,我使用这样的代码:

#include<iostream>
> #include<conio.h>
> #include<cstdlib>
> #include<stdio.h>
> #include<time.h>
> #define GRID_SIZE 4 using namespace std;
> 
> class Game { private: char grid[GRID_SIZE][GRID_SIZE]; public: void
> generateGrid(); void showGrid(); Game(); };
> 
> void Game::generateGrid() { int n = 1;
>        for( int x=0; x<GRID_SIZE; x++)
>       {
>              for( int y= 0; y<GRID_SIZE; y++)
>              {
>                  grid[x][y] = to_string(n).c_str()[0];
>                  n++;
>              }
>       } }
> 
> void Game::showGrid() {
>       printf("------------\n");
>       for(int x=0; x<GRID_SIZE; x++)
>      {
>               for(int y=0; y<GRID_SIZE; y++)
>               {
>                      cout<< " " << grid[x][y] << " |";
>               }
>       cout << "\n------------\n";
>      }
> 
> }
> 
> 
> Game
> 
>     ::Game()
>     {
>              generateGrid()
> 
> ;
>          showGrid(); }
> 
> int main() {
>        Game game;
> 
>       return 0;
> 
> }

我使用了to_string(number).c_str()[0]; 将其转换为char数据类型。 这样我以后就能改变了。

但在这里,我收到的输出结果是:1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1

对于这样的代码很抱歉,我不知道如何在堆栈溢出中编写代码。


共1个答案

匿名用户

所以问题就在这里

char grid[GRID_SIZE][GRID_SIZE];

您是说网格仅由单个字符组成。

既然你想让网格由数字构成,为什么不写这个呢?

int grid[GRID_SIZE][GRID_SIZE];

还有这个

grid[x][y] = n;
n++;

如果您确实希望网格是多个字符,那么您需要string而不是char,如下所示

string grid[GRID_SIZE][GRID_SIZE];

还有这个

grid[x][y] = to_string(n);
n++;