以某种格式输出

时间:2018-03-24 21:13:32

标签: c++ output ascii

我想以这种格式打印输出,但我不知道该怎么做:

       0   1   2   3   4   5   6   7   8   9

     ----------------------------------------

   0 |   |   |   |   |   | a |   | a |   |   |

     ----------------------------------------

   1 |   |   |   | a |   | a |   | X | a |   |

     ----------------------------------------

   2 |   |   |   |   | X |   |   | X | a | a |

     ----------------------------------------

   3 |   |   | a | a |   | a |   |   |   | a |

     ----------------------------------------

   4 |   |   |   |   |   | X |   |   | a |   |

     ----------------------------------------

   5 |   |   | a | a |   |   |   | X | a |   |

     ----------------------------------------

   6 |   |   |   | a | a |   |   |   |   | a |

     ----------------------------------------

   7 |   |   |   |   |   | a |   | a |   |   |

     ----------------------------------------

   8 |   |   |   |   |   |   |   | a |   |   |

     ----------------------------------------

   9 | a |   | a |   |   | a |   |   | a |   |

     ----------------------------------------

目前我正在这样做:

      int arr[10][10];
      for(int i = 0; i < 10; i++) {
          cout << i;
          for(int j = 0; j < 10; j++) {
              cout << "| ";
          }
          cout << endl;
      }

这是我得到的输出:

     0| | | | | | | | | | 
     1| | | | | | | | | | 
     2| | | | | | | | | | 
     3| | | | | | | | | | 
     4| | | | | | | | | | 
     5| | | | | | | | | | 
     6| | | | | | | | | | 
     7| | | | | | | | | | 
     8| | | | | | | | | | 
     9| | | | | | | | | |

我不确定如何在列顶部打印数字,也不知道如何在2&#34;之间使用字符。 |&#34;

1 个答案:

答案 0 :(得分:0)

关于这些角色,我不知道你什么时候想要打印,但一个好方法就是:

int arr[10][10];

      for(int i = 0; i < 10; i++) {
          bool last_was_character = false;
          cout << i;
          for(int j = 0; j < 10; j++) {
              cout << "| ";
              last_was_character = false;
              if(has_to_print_character)
              {
                  cout << some_character;
                  last_was_character = true;
              }
          }
          if (last_was_character) cout << "|";
          cout << endl;
      }

注意使用last_was_character布尔值。当我们打印一个不是|的字符时,这被设置为true,并且在每次迭代开始时我们将它重置为false。如果我们碰巧在last_was_character bool仍然设置为true的情况下退出循环,我们将不得不输出一个额外的|使其成为网格的最后一个字符。

你可能不得不用空格做一些格式化,但我现在还没有看过,因为你应该能够解决这个问题。

编辑: 为了打印您在评论中解释的字符,我建议您存储一系列坐标,说明要在哪里打印。像:

map<pair<int, int>, char> characters[SIZE]

现在您可以设置:

characters[{1, 2}] = 'a';

这会将坐标(1,2)的值设置为“a”。打印时,您可以这样做:

last_was_character = false;
cout << characters[{i, j}];

注意你的坐标是零,而不是一个!

重要提示:您必须

#include <map> and <utility>