#include<iostream>
using namespace std;
int main()
{
int n;
char c;
cin>>n;
getchar();
cin>>c;
//或者 scanf("%d %c",&n,&c);
//1.求最大层数
//如果层数为x,则最上面的个数为x
int neednum=1; //打印沙漏需要符号个数
int level=1; //层数
while(n/neednum)
{
level+=2;
neednum+=level*2;
}
//下面这两句话注意先后顺序
neednum-=level*2;
level-=2;
//2.打印输出:①打印空格 ②打印符号
for(int i=0;i<level/2+1;i++) //5->3
{
for(int a=i;a>0;a--) //0 1 2
{
printf(" ");
}
for(int b=2*(level/2+1-i)-1;b>0;b--)
{
printf("%c",c);
}
printf("\n");
}
for(int i=1;i<=level/2;i++)
{
for(int a=level/2-i;a>0;a--)
{
printf(" ");
}
for(int b=i*2+1;b>0;b--)
{
printf("%c",c);
}
printf("\n");
}
printf("%d",n-neednum);
return 0;
}
1.打印沙漏
最新推荐文章于 2024-08-09 13:35:44 发布