Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /************************************/
- /** 20140401 Exam 06 **/
- /** Maker : Yan **/
- /** E-Mail : [email protected] **/
- /** Date : 2014/04/01 am.11:58 **/
- /************************************/
- #include <stdio.h>
- #include <stdlib.h>
- void main()
- {
- /*先行定義變數
- line_number 為輸出星星行數*/
- int line_number = 0;
- //無窮迴圈開始
- while(1)
- {
- //輸入欲列印出的星星行數
- scanf("%d", &line_number);
- //設立強制條件: 當輸入-1 時結束程式
- if(line_number == -1)
- {
- break;
- }
- /*巢狀迴圈開始
- 最外層迴圈為列印出每行的星星*/
- for(int i = 1; i <= line_number; i++)
- {
- /*內層迴圈解析:
- 假設輸入五行, 星星列印最長為(1 + 2 + 2 + 2 + 2) 也就是9 顆
- 且目前存在為 9 * 5 之框框
- [ ][ ][ ][ ][*][ ][ ][ ][ ]
- [ ][ ][ ][*][*][*][ ][ ][ ]
- [ ][ ][*][*][*][*][*][ ][ ]
- [ ][*][*][*][*][*][*][*][ ]
- [*][*][*][*][*][*][*][*][*]
- 規律為: 空格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");
- }
- }
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment