Holey_yan

20140401_KUAS_VisualC++_Exam06

Apr 1st, 2014
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.82 KB | None | 0 0
  1. /************************************/
  2. /** 20140401 Exam 06               **/
  3. /** Maker  : Yan                   **/
  4. /** E-Mail : [email protected] **/
  5. /** Date   : 2014/04/01 am.11:58   **/
  6. /************************************/
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10.  
  11. void main()
  12. {
  13.     /*先行定義變數
  14.     line_number 為輸出星星行數*/
  15.     int line_number = 0;
  16.  
  17.     //無窮迴圈開始
  18.     while(1)
  19.     {
  20.         //輸入欲列印出的星星行數
  21.         scanf("%d", &line_number);
  22.         //設立強制條件: 當輸入-1 時結束程式
  23.         if(line_number == -1)
  24.         {
  25.             break;
  26.         }
  27.  
  28.         /*巢狀迴圈開始
  29.           最外層迴圈為列印出每行的星星*/
  30.         for(int i = 1; i <= line_number; i++)
  31.         {
  32.             /*內層迴圈解析:
  33.               假設輸入五行, 星星列印最長為(1 + 2 + 2 + 2 + 2) 也就是9 顆
  34.               且目前存在為 9 * 5 之框框
  35.               [ ][ ][ ][ ][*][ ][ ][ ][ ]
  36.               [ ][ ][ ][*][*][*][ ][ ][ ]
  37.               [ ][ ][*][*][*][*][*][ ][ ]
  38.               [ ][*][*][*][*][*][*][*][ ]
  39.               [*][*][*][*][*][*][*][*][*]
  40.  
  41.               規律為: 空格4 - 3 - 2 - 1 - 0
  42.                       星星1 - 3 - 5 - 7 - 9
  43.  
  44.               在細拆星星數量將發現
  45.               星星數量分別為: (1 + 0) - (1 + 2) - (1 + 4) - (1 + 6) - (1 + 8)
  46.  
  47.               在二次細拆星星數量後, 會發現
  48.               星星數量分別為: (1 + 0) - (1 + 2^1) - (1 + 2^2) - (1 + 2^3) - (1 + 2^4)
  49.            
  50.               因此由下述第一段內層迴圈寫入空格, 第二段內層迴圈寫入星星數量           */
  51.  
  52.             //內層迴圈之一: 寫入空格
  53.             for(int j = 1; j <= line_number - i; j++)
  54.             {
  55.                 printf(" ");
  56.             }
  57.  
  58.             //內層迴圈之二: 寫入星星數量
  59.             printf("*");
  60.             for(int k = 2; k <= i; k++)
  61.             {
  62.                 printf("**");
  63.             }
  64.             printf("\n");
  65.         }
  66.     }
  67.     system("pause");
  68. }
Advertisement
Add Comment
Please, Sign In to add comment