c++,for迴圈列印菱形圖
阿新 • • 發佈:2019-02-12
#include<iostream> using namespace std; int main() { int n = 0; cout << "輸入菱形的邊長:"; cin >> n; cout << "圖形如下:" << endl; //上半層 for (int i = 0; i < n; i++) // 外層控制迴圈次數,輸入的數字就是上半層迴圈的次數 { // (n-1)比外層迴圈少一次,減去i就是每行少一個空格 for (int j = 0; j < (n - 1) - i; j++) // 內層迴圈列印空格的個數 外層迴圈n次 內層迴圈n-1次 { // 迴圈幾次幾個空格 cout << " "; // 第n層的時候 i=n-1 空格為0 所以這層不用迴圈 所以迴圈次數可以變成n-1 } // 或者j<n-1-i //星星的個數是 1 3 5 7 9 12...2*n+1 的等差數列形式遞增的 for (int j = 0; j < (2 * i + 1); j++) // 內層迴圈列印行星的個數 i=0時 j<=0 迴圈1次 列印一顆星 // 迴圈幾次幾個星星 i=1時 j<=2 迴圈3次 列印三顆星 以此類推 { // 也可以寫成 j<2*i+1 一樣 cout << "*"; } cout << endl; } //下半層 for (int i = 0; i < n - 1; i++) { for (int j = 0; j < i + 1; j++) // 下半層從上往下 空格個數越來越多 迴圈次數也就跟著增多 { cout << " "; } for (int j = 0; j < 2 * ( n - 1 ) - (1 + 2 * i); j++)//下半層從上往下 星星個數依次遞減 迴圈次數也就跟著減少 { cout << "*"; // 星星的個數是 2*n-1 2*n-3 .....2*n-(1+2*i) 等差數列遞減 // 因為是下半層從n-1開始的 所以這裡的N=n-1 } cout << endl; // 和上面一樣、 迴圈幾次幾個星星 } return 0; }
執行結果: