解题思路:
注意到这个沙漏是对称的,每层的个数是以1,3,5...这样的
方式递增递减的,可以用2*i-1来表示.要求剩余未用字符个数可
以用总个数-已用个数.空格个数每层+1或-1,所以整个体系结构
可以分为两部分输出,这样就比较简单了.
#include <stdio.h>
int main()
{
int n,sum=1,count=1,p=0,q=0;
char ch;
scanf("%d %c",&n,&ch);
while((sum+(count+2)*2)<=n)
{
sum+=(count+2)*2;
count=count+2;
}
for(int i=1;i<=count/2+1;i++)
{
for(int j=1;j<i;j++)
printf(" ");
q=count-(i-1)*2;
for(int k=1;k<=q;k++)
printf("%c",ch);
printf("\n");
}
p=count/2+2;
for(int i=p;i<=count;i++)
{
for(int j=1;j<=count-i;j++)
printf(" ");
for(int k=1;k<=1+(i-count/2-1)*2;k++)
printf("%c",ch);
printf("\n");
}
printf("%d",n-sum);
return 0;
}