Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /************************************/
- /** 20140305 Print Star **/
- /** Maker : Yan **/
- /** E-Mail : [email protected] **/
- /** Date : 2014/03/05 pm.06:51 **/
- /************************************/
- //一樣先引入標頭檔
- #include <stdio.h>
- #include <stdlib.h>
- /*種類一
- *
- **
- ***
- ****
- ******/
- void species_1()
- {
- /*先行定義變數
- line_number 為輸出星星行數*/
- int line_number = 0;
- //輸入欲列印出的星星行數
- printf("input line numner: ");
- scanf("%d", &line_number);
- /*巢狀迴圈開始
- 最外層迴圈為列印出每行的星星*/
- for(int i = 1; i <= line_number; i++)
- {
- /*內層迴圈解析:
- 假設輸入五行, 且目前存在為 5 * 5 之框框
- [*][ ][ ][ ][ ]
- [*][*][ ][ ][ ]
- [*][*][*][ ][ ]
- [*][*][*][*][ ]
- [*][*][*][*][*]
- 規律為: 星星1 - 2 - 3 - 4 - 5
- 由此規律, 可得下述迴圈撰寫方式
- 下述迴圈功能即為[列印出每行星星數量]*/
- //內層迴圈: 寫入星星數量
- for(int j = 1; j <= i; j++)
- {
- printf("*");
- }
- //在每行星星列印結束後, 要輸入斷行字元進行斷行, 否則將連在一起
- printf("\n");
- }
- }
- /*種類二
- *
- **
- ***
- ****
- ******/
- void species_2()
- {
- /*先行定義變數
- line_number 為輸出星星行數*/
- int line_number = 0;
- //輸入欲列印出的星星行數
- printf("input line numner: ");
- scanf("%d", &line_number);
- /*巢狀迴圈開始
- 最外層迴圈為列印出每行的星星*/
- for(int i = 1; i <= line_number; i++)
- {
- /*內層迴圈解析:
- 假設輸入五行且目前存在為 5 * 5 之框框
- [ ][ ][ ][ ][*]
- [ ][ ][ ][*][*]
- [ ][ ][*][*][*]
- [ ][*][*][*][*]
- [*][*][*][*][*]
- 規律為: 空格4 - 3 - 2 - 1 - 0
- 星星1 - 2 - 3 - 4 - 5
- 得出規律後, 由下述第一段內層迴圈寫入空格, 第二段內層迴圈寫入星星數量*/
- //內層迴圈之一: 寫入空格
- for(int j = 1; j <= (line_number - i); j++)
- {
- printf(" ");
- }
- //內層迴圈之二: 寫入星星數量
- for(int k = 1; k <= i; k++)
- {
- printf("*");
- }
- //在每行星星列印結束後, 要輸入斷行字元進行斷行, 否則將連在一起
- printf("\n");
- }
- }
- /*種類三
- *
- ***
- *****
- ******
- *********/
- void species_3()
- {
- /*先行定義變數
- line_number 為輸出星星行數*/
- int line_number = 0;
- //輸入欲列印出的星星行數
- printf("input line numner: ");
- scanf("%d", &line_number);
- /*巢狀迴圈開始
- 最外層迴圈為列印出每行的星星*/
- for(int i = 1; i <= line_number; i++)
- {
- /*內層迴圈解析:
- 假設輸入五行, 星星列印最長為(1 + 2 + 2 + 2 + 2) 也就是9 顆
- 且目前存在為 5 * 9 之框框
- [ ][ ][ ][ ][*][ ][ ][ ][ ]
- [ ][ ][ ][*][*][*][ ][ ][ ]
- [ ][ ][*][*][*][*][*][ ][ ]
- [ ][*][*][*][*][*][*][*][ ]
- [*][*][*][*][*][*][*][*][*]
- 規律為: 空格4 - 3 - 2 - 1 - 0
- 星星1 - 3 - 5 - 7 - 9
- 在細拆星星數量將發現
- 星星數量分別為: (1 + 0) - (1 + 2) - (1 + 4) - (1 + 6) - (1 + 8)
- 在二次細拆星星數量後, 會發現
- 星星數量分別為: (1 + 0) - (1 + 2^1) - (1 + 2^2) - (1 + 2^3) - (1 + 2^4)
- 因此由下述第一段內層迴圈寫入空格, 第二段內層迴圈寫入星星數量*/
- //內層迴圈之一: 寫入空格
- for(int j = 1; j <= line_number - i; j++)
- {
- printf(" ");
- }
- //內層迴圈之二: 寫入星星數量
- printf("*");
- for(int k = 2; k <= i; k++)
- {
- printf("**");
- }
- printf("\n");
- }
- }
- void main()
- {
- species_1();
- printf("-----\n");
- species_2();
- printf("-----\n");
- species_3();
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment