简要题意:
输出字符型空心三角形。
解题思路:
定义字符,分类讨论当n=1时和n>1时,n>1时,每行空格加字符共2n-1个,且字符位置从第一行居中开始,每向下一行,就分别往左和往右移动一次,形如左上图。
细节处理:
- 当只输出1行时相当于输出所定义字符。
- 每两个空心三角形之间有一空行。
源代码:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char c;
int n;
int flag=0;
while(cin>>c)
{
if(c=='@') break;
cin>>n;
if(flag) cout<<endl; //在一个空心三角形前不空行
flag=1;
if(n==1) cout<<c<<endl;
else
{
cout<<string(n-1,' ')<<c<<endl;
for(int i=1;i<n-1;i++)
{
cout<<string(n-i-1,' ')<<c; //输出左侧字符前的空格和第一个字符
cout<<string(2*i-1,' ')<<c<<endl; //输出两字符间的空格和第二个字符
}
for(int i=0;i<2*n-1;i++) cout<<c; //单独输出最后一行
cout<<endl;
}
getchar();
}
return 0;
}