*三角图案设计问题

* Triangle Pattern design issue

本文关键字:问题 三角      更新时间:2023-10-16

我对编程比较陌生,我面临一个小困境,我试图打印一个三角形,像这样:

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

程序背后的思想是提示用户输入行数,因此在本例中,他们将输入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

也就是说,你正在使用c++,所以我建议你使用这种语言,这是setw的一个非常简单的问题:

int rows;
cin >> rows;
for(auto i = 1; i <= rows; ++i) {
    cout << setw(rows) << string(i, '*') << endl;
}
<<p> 生活例子/kbd>