思路:
我其实觉得我的方法有点笨的2333
我把沙漏上端下端的输出分开了
觉得比较好找规律
简单点讲就是倒三角和没有顶的正三角
觉得图形输出这种题 就是找规律的题 还挺有意思的
#include <cstdio>
#include <cmath>
int main()
{
int N;
int shengyu;
char a;
scanf("%d %c",&N,&a);
if(N==1) //特判1
{
printf("%c\n",a);
}
else if(N==2) //特判2
{
printf("%c\n%c\n",a,a);
}
int n=sqrt((N-1)/2);
int k=n; //用k记录沙漏上端行数
for(int i=1; i<=n; i++)
{
for(int j=0; j<i-1; j++) //沙漏上端空格输出
{
printf(" ");
}
for(int m=0; m<2*k-1; m++) //沙漏上端字符输出
{
printf("%c",a);
}
k--; //k与n建立联系 主管字符输出
printf("\n");
}
for(int l=2; l<=n; l++) //l是下端除第一行以外的行数 这个就是输出没有顶的正三件
{
for(int p=0; p<(n-l); p++) //沙漏下端空格输出
{
printf(" ");
}
for(int q=0; q<2*l-1; q++) //沙漏下端字符输出
{
printf("%c",a);
}
printf("\n");
}
if(N==1||N==2)
{
shengyu=0;
}
else shengyu=N-(2*n*n-1);
printf("%d",shengyu);
return 0;
}