题目:

输入正整数 n <= 20,输出一个倒三角形。例如, n = 5时输出如下:

# # # # # # # # #

  # # # # # # #

    # # # # #

      # # #

        #

思路:

观察可知,可以将上图分为三部分,左半部分都为#,中间部分为 1 排竖的#,右半部分与左半部分对称。

输出的时候,对于左半部分,先输出空格,再输出一排#,再输出最中间的#,对于右半部分,先输出一排#,再输出空格

当 n = 5时,观察可知,第一行共有9个#, 其中左半部分4个#,中间部分1个#,右半部分4个#。

假设总层数为 n 层, 当前层号为 i 层,则当前行左半部分,应先输出 (i - 1)个空格,再输出(n - i)个#,中间部分直接输出一个#,右半部分应先输出(n - i )个#,再输出(i - 1)个空格。

代码:

#include <iostream>
using namespace std;

int main()
{
int n = 0;
cin >> n;

for (int i = 1; i <= n; ++i) {
for (int j = 0; j < i - 1; ++j) {
cout << " ";
}
for (int k = 0; k < n - i; ++k) {
cout << "#";
}
cout << "#";
for (int k = 0; k < n - i; ++k) {
cout << "#";
}
for (int j = 0; j < i - 1; ++j) {
cout << " ";
}

cout << endl;
}

return 0;
}
02-10 16:40