铂金第二期第二题

题目:把一个字符三角形掏空,每行包含一个字符和一个整数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++;
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_43981315/article/details/84963151