如何在 C++ 中打印等腰三角形

How to print an Isosceles triangle in C++

我正在尝试根据用户在 C++ 中的输入创建一个带有“*”符号的等腰三角形。

例如,用户输入5,我必须得到:

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

我只得到:

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

我的 C++ 代码:

void askData(int &n){
    cout<<"Enter a number: ";
    cin>>n;
}

void print(int A){
    for(int j=1;j<=A;j++)
    cout<<"*";
    cout<<endl;
}

void createIsoscTriangle(int n){

    for(int i=1;i<=n;i++){
    print(i);
}

int main()
{
    int n;
    askData(n);
    createIsoscTriangle(n);
    return 0;
}

如何得到等腰三角形的正确形式?

星星的图案是1, 2, 3, ..., n, n - 1, n - 2, ..., 1. 正如 Brian 在评论中提到的那样。因此,每行的星星数将为 n - abs(n - i),其中 abs 是 n - i 的绝对值,这应该适用于任何 n 而不仅仅是 5

我已将您的 createIsoscTriangle 函数修改为如下内容:

void createIsoscTriangle(int n) {

    for(int i = 1; i <= n * 2 - 1; i++)
        print(n - abs(n - i)); 
}

让我们试试 n = 5。它会打印你提到的数字。

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

您只打印序列 1 2 3 4 5。您还需要一个倒计时循环。

void createIsoscTriangle(int n) {
    for(int i = 1; i <= n; i++)
      print(i);
    for(int i = n-1; i >= 1; i--)
      print(i);
}