簡體   English   中英

*三角形圖案設計問題

[英]* Triangle Pattern design issue

我是編程新手,正面臨一個小難題,我正在嘗試打印一個三角形,如下所示:

     *
    **
   ***
  ****
 *****

該程序的思想是提示用戶輸入行數,因此在此示例中,他們將輸入5作為行數。

到目前為止,這是我所做的。

#include <iostream>


using namespace std;
int main(){

int i, j, rows;

    printf("Enter the maximum number of stars (between 1 and 10 inclusive):\n");
    scanf("%d",&rows);

    for(i=1; i<=rows; i++)
    {
        for (j=1; j<=10-i; j++) // for space
        printf(" ");

        for(j=1; j<=i; j++)
        {
            printf("*");
        }
        printf("\n");
    }

}

它接近正確的間距,但是所有的'*'字符均以5個空格開頭。

 _____    *
 _____   **
 _____  ***
 _____ ****
 _____*****

_代表空格,我不確定如何解決這個問題,我希望它從執行窗口的最左端開始。

如果需要,很高興詳細說明這個問題。

干杯。

循環生成的輸入之前有空格:

for (j=1; j<=10-i; j++) // for space
printf(" ");

請注意, 無論rows包含什么內容 ,此循環都會運行到10。

要修復代碼,您需要創建最大rows而不是循環中的10 rows

也就是說,您正在使用C ++,所以我建議您使用該語言,這對於setw是一個非常簡單的問題:

int rows;

cin >> rows;

for(auto i = 1; i <= rows; ++i) {
    cout << setw(rows) << string(i, '*') << endl;
}

現場例子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM