题目:
输入正整数 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;
}