题目:把一个字符三角形掏空,每行包含一个字符和一个整数n(0<n<41),不同的字符表示不同的花纹,整数n表示等腰三角形的高。显然其底边长为2n-1。如果遇到@字符,则表示所做出来的样板三角形已经够了。每个样板三角形之间应空上一行,三角形的中间为空。显然行末没有多余的空格
题解:第一行空出空格与高相同,第二行开始逐渐递减,中间部分两个字符间隔2*(行数-1),最后一行则输出2n-1个字符,接着判断下个字符是否@,如果是则不换行
#include <iostream>
#include<string>
#include<iomanip>
using namespace std;
int main()
{
char a;
int b,d=0;
while (cin >> a >> b)
{
if (a == '@') break;
if (a != '@'&&d != 0) cout << endl;
int c = b;
for (int i = 1; i <=b; i++,c--)
{
if (i == 1) cout << setw(b) << a << endl;
else if(i==b)
{
for (int j = 0; j <2*b-1; j++)
{
cout << a;
}
cout << endl;
}
else cout << setw(c) << a << setw(2*i - 2) << a << endl;
}
d++;
}
}