分析问题
本题拆解成三个步骤
1 输出直角三角形,且星形每行数量递增情况为1 3 5 7
2 输出空格,将星形三角形变成等腰三角形
3 将星形三角形从第二行开心替换中间的星形
建立模型
输出一个数字 n,代表边长
开始循环输出从1至n行数据
循环输出
1至2*行数-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;
}