7-1 打印沙漏 (20 分)


本題要求你寫個程序把給定的符號打印成沙漏的形狀。例如給定17個“*”,要求按下列格式打印





所謂“沙漏形狀”,是指每行輸出奇數個符號;各行符號中心對齊;相鄰兩行符號數差2;符號數先從大到小順序遞減到1,再從小到大順序遞增;首尾符號數相等。

給定任意N個符號,不一定能正好組成一個沙漏。要求打印出的沙漏能用掉盡可能多的符號。

輸入格式:

輸入在一行給出1個正整數N(≤1000)和一個符號,中間以空格分隔。

輸出格式:

首先打印出由給定符號組成的最大的沙漏形狀,最后在一行中輸出剩下沒用掉的符號數。

輸入樣例:

19 *

輸出樣例:

*****
 ***
  *
 ***
*****
2

流程圖

實驗代碼

#include<stdio.h>
#include<math.h>
int main()
{
  int i=1,m,n,x=1,y,z,h,l,a;
  char c;
  scanf("%d %c",&m,&c);
  while(2x-1<=m)
  {
    i=i+2;
    x=x+i;
  }
     i=2-i;
     n=2-i;
   while(i<fabs(n))
   {
       for(z=1;z<(fabs(n)-fabs(i))/2;z++)
       {
          printf(" ");
       }
        for(h=1;h<=fabs(i);h++)
        {
           printf("%c",c);
        }
           printf("\n");
           if(i!=-1)
           {
             i=i+2;
           }
           else
           {
             i=i+4;
           }
   }
              a=m-2(x-fabs(i))+1;
      printf("%d",a);
    return 0;
}

解法

首先定義變量,再利用 循環 篩選出 給定值里的所有奇數,再把所有奇數再次用循環 逐個打印出符號,最后輸出余數。注意這里需要用到 絕對值函數,因為輸出的符號成對稱的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM