如何在 C++ 中打印正方形

How to print a square in c++

我想制作一个函数来打印正方形,如下所示。 用户输入正方形 (N) 的边。 N的总长度必须是奇数。

int main()
{
    int n, i, j;
    cin >> n;
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= n; j++)
        {
            if (i == 1 || i == n || j == 1 || j == n || i == j || i + j - 1 == n)
                cout << "#";
            else
                cout << " ";
        }
        cout << endl;
    }

n = 7 的预期输出:

#######
##   ##
# # ###
#  ####
# # ###
##   ##
#######

n = 9 的预期输出:

#########
##     ##
# #   ###
#  # ####
#   #####
#  # ####
# #   ###
##     ##
#########

这是我的实际输出 (n = 9):

#########
##     ##
# #   # #
#  # #  #
#   #   #
#  # #  #
# #   # #
##     ##
#########

但是我无法在右侧添加#。

您已经写下了每个场景的条件(first/last 行,first/last 列,primary/secondary 对角线)。现在您需要为该直角三角形添加条件。

提示:这个三角形有一个简单的条件:

      #
     ##
    ###
   ####
  #####
 ######
#######

这个三角形有一个简单的条件:

#######
 ######
  #####
   ####
    ###
     ##
      #

而你想要的三角形就是这两个的交点。

添加|| i <= j && i + j - 1 >= n

#include <iostream>
using namespace std;

int main() {
    // your code goes here
    

    int n, i, j;
    cin >> n;
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= n; j++)
        {
            if (i == 1 || i == n || j == 1 || j == n || i == j || i + j - 1 == n || i <= j && i + j - 1 >= n)
                cout << "#";
            else
                cout << " ";
        }
        cout << endl;
    }
    return 0;
}

IDEONE