打印空心等腰三角形

分析问题

本题拆解成三个步骤

1 输出直角三角形,且星形每行数量递增情况为1 3 5 7

2 输出空格,将星形三角形变成等腰三角形

3 将星形三角形从第二行开心替换中间的星形

建立模型

输出一个数字 n,代表边长

开始循环输出从1至n行数据

​ 循环输出12*行数-1列数据

​ 如果是第1行或最后1行正常输出

​ 否则 如果第1列或最后一列输出*,其它输出空格

编写代码

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;  
    //输出直角三角形
    for(int i=1;i<=n;i++){
        //加入空格
        for(int k=1;k<=n-i;k++){
            cout<<" ";
        }
        for(int j=1;j<=2*i-1;j++){
            //替换
            if(i==1 || i==n){ //如果是第一行或最后一行 输出*
                cout<<"*";
            }else{//否则 需要替换空格
                if(j==1 || j==2*i-1){//如果第1列或最后一列,输出*
                    cout<<"*";
                }else{//非第1 最2*i-1列,输出空格(替换*)
                    cout<<" ";
                }
            }
        }
        cout<<"\n";
    }
    return 0;
}

保存 编译 运行