打印沙漏

#include<stdio.h>
int main()
{
       int n,i,j,k,sum,a;
       char ch;
       sum=1;
       scanf("%d",&n);
       scanf("%c",&ch);
       for(i=1;sum<=n;i++)
       {
              sum+=2*(2*(i+1)-1);
        }
        i=i-1;
        for(j=0;j<i;j++)
        {
               for(k=0;k<j;k++);
               {
                       printf(" ");
               }
               for(a=0;a<=2*(i-j)-1;a++)
               {
                       printf("%c",ch);
                }
               printf(" ");
         }
         for(j=2;j<=i;j++)
         {
                for(k=0;k<i-j;k++);
                {
                        printf(" ");
                }
                for(a=0;a<=2*j-1;a++)
                {
                       printf("%c",ch);
                 }
                 printf(" ");
           }
           printf("%d",n-(sum-2*(2*(i+1)-1);
           return 0;
}
设计思路

     
本题调试过程碰到问题及解决办法
     注意1:打印沙漏的上半部分时,无思路。
     解决办法:在百度上参考参考别人的,从中获取灵感,上半部分打印不是特别难。
     注意2:打印沙漏下半部分时,不知道怎么打印空格
     解决办法:请教了那些写完的同学,下半部分打印从符号着手,因为符号可以按等差数列打印,再推出j=2,从而一次往下推。
 
原文地址:https://www.cnblogs.com/hunan-hengyang/p/10398914.html