1.实验代码
1 #include <stdio.h> 2 int main(int argc, char *argv[]) 3 { 4 int i,su,k,j,m,n,kong,ge; 5 char fuhao; 6 while(1) 7 { 8 scanf("%d %c",&su,&fuhao); 9 if(su>0&&su<=1000) 10 break; 11 } 12 k=su-1; 13 for (i=3;k>=2*i;i+=2) 14 { 15 k=k-2*i; 16 } 17 i-=2; 18 n=i; 19 for (kong=0;i>=1;i-=2,kong++) 20 { 21 for (j=0;j<kong;j++) 22 printf(" "); 23 for (j=0;j<i;j++) 24 printf("%c",fuhao); 25 printf("\n"); 26 } 27 ge=kong-2; 28 for(m=3;m<=n;m+=2,ge--){ 29 for(j=0;j<ge;j++) 30 printf(" "); 31 for(j=0;j<m;j++) 32 printf("%c",fuhao); 33 printf("\n"); 34 } 35 printf("%d",k); 36 return 0; 37 }
2.设计思路
将沙漏分成三部分,上中下,发现空格和符号规律符合等差数列,然后用公式一步处理完。
3.实验过程中遇到的问题
之前没有找到规律想整体解决,后面发现要分部解决
4.运行结果截图