懒的抄题了,贴个图。
这一题我只想提醒一点,先依据 n 求出对应的层数、最顶层的个数(最大个数)、及剩余个数,然后直接打印即可。
#include <iostream>
using namespace std;
int n;
char ch;
int main()
{
int p = 1, s, r = 3;
scanf("%d %c", &n, &ch);
s = n - 1;
while(s >= 2 * r)
{
s -= 2 * r;
r += 2;
p += 2;
}
r -= 2;
for(int i = 1; i <= p / 2; ++i)
{
for(int j = i - 1; j > 0; --j) putchar(' ');
for(int j = 1; j <= r; ++j) printf("%c", ch);
putchar('\n');
r -= 2;
}
for(int i = 1; i <= p / 2; ++i) putchar(' ');
printf("%c\n", ch);
r += 2;
for(int i = 1; i <= p / 2; ++i)
{
for(int j = p / 2 - i; j > 0; --j) putchar(' ');
for(int j = 1; j <= r; ++j) printf("%c", ch);
putchar('\n');
r += 2;
}
printf("%d\n", s);
return 0;
}