C++编写程序,输出由n行*构成的等腰三角形

输入一个整数n则输出一个由n行构成的等腰三角形,第一行有1个第二行有3个第三行有5个,最后一行不能有空格

#include "iostream"
using namespace std;
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
     for(int j=n-i;j>0;j--)
       cout<<" ";
     for(int k=1;k<=2*i-1;k++)
       cout<<"*";
     if(i!=n)
       cout<<endl;
    }
}

输入n是行数


#include<iostream>
#include<string>
using namespace std;

string getstring(int n,int c)
{
    string _ret = "";
    _ret.insert(_ret.begin(),n-1,' ');
    _ret.insert(_ret.end(), c*2-1, '*');
    return _ret;
}
int main()
{
    int n = 0, cur = 1;
    cin >> n;
    while (n != 0)
    {
        cout << getstring(n, cur) << endl;
        n--;
        cur++;
    }
}

思路:每行的空格数是总行数-当前函数,/*的个数是当前行数/*2+1,拼装就行