要輸出的星號圖是:算法
將一個圖,看做爲6行,完成了第一級的分解,提到的算法框架爲:
框架
i=1; While(i<=6) //須要輸出6行 { 輸出第i行; 換行; ++i; }
先輸出若干空格(多少個空格?第1行0個,第2行1個,第3行2……第6行5個); 再輸出若干個星號(多少星號?第一行11個,第2行9個……第6行1個)其實把空格數和星號數和表示行數的變量 i 掛起鉤來,上面的「若干個」能夠用 i 表示出來,簡單地作些推算能夠寫出式子。
先輸出 i-1 個空格; 再輸出 2*(6-i)+1 個星號;因而,算法就是:
i=1; While(i<=6) //須要輸出6行 { //輸出第i行 先輸出 i-1 個空格; 再輸出 2*(6-i)+1 個星號; 換行; ++i; }將輸出若干個空格/星號等寫成代碼,獲得了下面的代碼
//參考解答一 #include <stdio.h> int main( ) { int i,j; i=1; while(i<=6) //須要輸出6行 { //輸出第i行 for(j=1; j<=i-1; ++j) printf(" ");; for(j=1; j<=2*(6-i)+1; ++j) printf("*");; printf("\n"); ++i; } return 0; }
//參考解答二 #include <stdio.h> int main( ) { int i,j,n=15; //用n來靈活對待可能的行數 for(i=1;i<=n;++i) //將上一種解法中的while循環改造爲for循環 { //輸出第i行 for(j=1; j<=i-1; ++j) //內層的這個for循環能夠寫做while循環 printf(" ");; for(j=1; j<=2*(n-i)+1; ++j) //這兒也能夠用其餘循環,可嘗試改造 printf("*");; printf("\n"); } return 0; }
//參考解答三 #include <stdio.h> int main( ) { int i,j,n=6; for(i=n;i>=1;--i) //i由大變小 { //輸出第i行 for(j=1; j<=n-i; ++j) //關鍵:輸出的是n-i個空格 printf(" ");; for(j=1; j<=2*i-1; ++j) //關鍵:輸出的是2*i-1個星號 printf("*");; printf("\n"); } return 0; }其餘的星號圖,思路相似。