Holey_yan

20140305_KUAS_VisualC++_PrintStar

Mar 5th, 2014
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.14 KB | None | 0 0
  1. /************************************/
  2. /** 20140305 Print Star            **/
  3. /** Maker  : Yan                   **/
  4. /** E-Mail : [email protected] **/
  5. /** Date   : 2014/03/05 pm.06:51   **/
  6. /************************************/
  7.  
  8. //一樣先引入標頭檔
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11.  
  12. /*種類一
  13.   *
  14.   **
  15.   ***
  16.   ****
  17.   ******/
  18. void species_1()
  19. {
  20.     /*先行定義變數
  21.       line_number 為輸出星星行數*/
  22.     int line_number = 0;
  23.  
  24.     //輸入欲列印出的星星行數
  25.     printf("input line numner: ");
  26.     scanf("%d", &line_number);
  27.  
  28.     /*巢狀迴圈開始
  29.       最外層迴圈為列印出每行的星星*/
  30.     for(int i = 1; i <= line_number; i++)
  31.     {
  32.         /*內層迴圈解析:
  33.           假設輸入五行, 且目前存在為 5 * 5 之框框
  34.           [*][ ][ ][ ][ ]
  35.           [*][*][ ][ ][ ]
  36.           [*][*][*][ ][ ]
  37.           [*][*][*][*][ ]
  38.           [*][*][*][*][*]
  39.  
  40.           規律為: 星星1 - 2 - 3 - 4 - 5                              
  41.           由此規律, 可得下述迴圈撰寫方式
  42.           下述迴圈功能即為[列印出每行星星數量]*/
  43.  
  44.         //內層迴圈: 寫入星星數量
  45.         for(int j = 1; j <= i; j++)
  46.         {
  47.             printf("*");
  48.         }
  49.  
  50.         //在每行星星列印結束後, 要輸入斷行字元進行斷行, 否則將連在一起
  51.         printf("\n");
  52.     }
  53. }
  54.  
  55. /*種類二
  56.       *
  57.      **
  58.     ***
  59.    ****
  60.   ******/
  61. void species_2()
  62. {
  63.     /*先行定義變數
  64.       line_number 為輸出星星行數*/
  65.     int line_number = 0;
  66.  
  67.     //輸入欲列印出的星星行數
  68.     printf("input line numner: ");
  69.     scanf("%d", &line_number);
  70.  
  71.     /*巢狀迴圈開始
  72.       最外層迴圈為列印出每行的星星*/
  73.     for(int i = 1; i <= line_number; i++)
  74.     {
  75.         /*內層迴圈解析:
  76.           假設輸入五行且目前存在為 5 * 5 之框框
  77.           [ ][ ][ ][ ][*]
  78.           [ ][ ][ ][*][*]
  79.           [ ][ ][*][*][*]
  80.           [ ][*][*][*][*]
  81.           [*][*][*][*][*]
  82.  
  83.           規律為: 空格4 - 3 - 2 - 1 - 0
  84.                   星星1 - 2 - 3 - 4 - 5
  85.  
  86.           得出規律後, 由下述第一段內層迴圈寫入空格, 第二段內層迴圈寫入星星數量*/
  87.  
  88.         //內層迴圈之一: 寫入空格
  89.         for(int j = 1; j <= (line_number - i); j++)
  90.         {
  91.             printf(" ");
  92.         }
  93.  
  94.         //內層迴圈之二: 寫入星星數量
  95.         for(int k = 1; k <= i; k++)
  96.         {
  97.             printf("*");
  98.         }
  99.  
  100.         //在每行星星列印結束後, 要輸入斷行字元進行斷行, 否則將連在一起
  101.         printf("\n");
  102.     }
  103. }
  104.  
  105. /*種類三
  106.      *
  107.     ***
  108.    *****
  109.   ******
  110.  *********/
  111. void species_3()
  112. {
  113.     /*先行定義變數
  114.       line_number 為輸出星星行數*/
  115.     int line_number = 0;
  116.  
  117.     //輸入欲列印出的星星行數
  118.     printf("input line numner: ");
  119.     scanf("%d", &line_number);
  120.  
  121.     /*巢狀迴圈開始
  122.       最外層迴圈為列印出每行的星星*/
  123.     for(int i = 1; i <= line_number; i++)
  124.     {
  125.         /*內層迴圈解析:
  126.           假設輸入五行, 星星列印最長為(1 + 2 + 2 + 2 + 2) 也就是9 顆
  127.           且目前存在為 5 * 9 之框框
  128.           [ ][ ][ ][ ][*][ ][ ][ ][ ]
  129.           [ ][ ][ ][*][*][*][ ][ ][ ]
  130.           [ ][ ][*][*][*][*][*][ ][ ]
  131.           [ ][*][*][*][*][*][*][*][ ]
  132.           [*][*][*][*][*][*][*][*][*]
  133.  
  134.           規律為: 空格4 - 3 - 2 - 1 - 0
  135.                   星星1 - 3 - 5 - 7 - 9
  136.  
  137.           在細拆星星數量將發現
  138.           星星數量分別為: (1 + 0) - (1 + 2) - (1 + 4) - (1 + 6) - (1 + 8)
  139.  
  140.           在二次細拆星星數量後, 會發現
  141.           星星數量分別為: (1 + 0) - (1 + 2^1) - (1 + 2^2) - (1 + 2^3) - (1 + 2^4)
  142.          
  143.           因此由下述第一段內層迴圈寫入空格, 第二段內層迴圈寫入星星數量*/
  144.  
  145.         //內層迴圈之一: 寫入空格
  146.         for(int j = 1; j <= line_number - i; j++)
  147.         {
  148.             printf(" ");
  149.         }
  150.  
  151.         //內層迴圈之二: 寫入星星數量
  152.         printf("*");
  153.         for(int k = 2; k <= i; k++)
  154.         {
  155.             printf("**");
  156.         }
  157.         printf("\n");
  158.     }
  159. }
  160.  
  161. void main()
  162. {
  163.     species_1();
  164.     printf("-----\n");
  165.     species_2();
  166.     printf("-----\n");
  167.     species_3();
  168.     system("pause");
  169. }
Advertisement
Add Comment
Please, Sign In to add comment