2015-10-06 55 views
-1
for (int h = 5; h >= 1; --h) 
{ 
    for (int ah = 1; ah <= 5; ++ah) 
    { 
     cout << "*"; 
    } 
    cout << "\n"; 
} 

_getch(); 

我需要這個For循環顯示五顆星,然後在下一行四顆星,然後在接下來的三顆星,然後兩顆星,然後一顆星。但對於我的生活,我無法弄清楚。我是For循環的全新品牌。我需要改變什麼?這是我被允許的所有代碼。我只能改變for()旁邊的()內的內容。我該如何讓我的For循環工作?品牌新For循環

+5

Welp,它看起來像你需要讓你內在的'for'循環依賴於來自外部'for'循環的計數器。像'ah <= h'應該讓你開始。 –

回答

1

只要看看兩個循環:

for (int h = 5; h >= 1; --h) 
    for (int ah = 1; ah <= 5; ++ah) 

在他們兩個,你迭代倍,是什麼給你5 * 5 = 25分。你想要5 + 4 + 3 + 2 + 1 = 15顆星。要做到這一點,你只需要改變其中一個環路的一部分。它會是什麼?

0

這應該工作。它會根據外部for循環中的值使內部for循環更改的次數。

for (int h = 5; h >= 1; --h) 
{ 
    for (int ah = 1; ah <= h; ++ah) 
    { 
     cout << "*"; 
    } 
    cout << "\n"; 
} 

_getch(); 
2

當問題太複雜時,將其分解成小塊。

你想要做的一件事是「寫出一些明星」。例如你可以寫一個函數

void write_stars_and_newline(int n) 
{ 
    for (int ah = 1; ah <= n; ++ah) 
    { 
     cout << "*"; 
    } 
    cout << "\n"; 
} 

,然後請你三角形

for (int h = 5; h >= 1; --h) 
{ 
    write_stars_and_newline(h); 
} 

現在,因爲你必須保持嵌套for循環結構,你可以內嵌這個解決方案:可以用其內容替換呼叫write_stars_and_newline,確保用您傳遞給它的值替換參數nh):

for (int h = 5; h >= 1; --h) 
{ 
    for (int ah = 1; ah <= h; ++ah) 
    { 
     cout << "*"; 
    } 
    cout << "\n"; 
} 

一般來說,如果您已經編寫了第一個解決方案,通常不應該做最後一步,除非您相信它使代碼更易於閱讀和理解。但是我們必須做出補貼來完成你的任務。