思路:通过输入的符号个数去判断输出的行数。
#include <stdio.h>
#include <math.h>
int main()
{
int n;
char ch;
while(scanf("%d %c",&n,&ch)!=EOF)
{
int i,j,k,h,end1=0;
h=sqrt((n+1)/2);//2*h*h-1=n;
for(i=h;i>0;i--)
{
for(k=0;k<end1;k++)
printf(" ");
for(j=2*i-1;j>0;j--)
printf("%c",ch);
printf("\n");
end1++;
}
for(i=2;i<=h;i++)
{
for(k=end1-1;k>1;k--)
printf(" ");
for(j=0;j<2*i-1;j++)
printf("%c",ch);
printf("\n");
end1--;
}
int num=n-(2*h*h-1);
printf("%d\n",num);
}
return 0;
}