考察知识点归纳:
1.探索数学规律
2.按题目格式输出
#include<stdio.h>
int main(void){
int i,t,n,m,N;
char wxx;
scanf("%d %c",&N,&wxx);
for(n=1;2*n*n-1<=N;n++);//求上(下)部分的层数(每层打印数为等差数列),最大沙漏满足N=2*n*n-1(n为整数)
for(i=n-1,m=0;i>=1;i--,m++){//两次打印(由i用等差数列公式可得到该层需打印的符号数)
for(t=0;t<m;t++)//设置递增变量打印空格
printf(" ");
for(t=0;t<2*i-1;t++)//打印该层的符号
printf("%c",wxx);
printf("\n");//注意换行
}
for(i=2,m-=2;i<n;i++,m--){//注意第二次i从2开始
for(t=0;t<m;t++)
printf(" ");
for(t=0;t<2*i-1;t++)
printf("%c",wxx);
printf("\n");
}
printf("%d",N-2*(n-1)*(n-1)+1);//输出剩余符号数
return 0;
}