放大的箭头

分析问题

先观察星号的规律,我们发现输出的星号与输入数字n相等,列数就确定了

再观察行数 也与输入的n相等,行数也就确定了

其次,就是解决空格的问题了,空格的规律是从行2行开始增加,但是到中位数以后,就每行减少

//解决空格问题思路
n=3 空格最大为1
n=5 空格最大为2
n=7 空格最大为3
发现规律 n/2=3 是最大空格数

​ 假设n为7

​ 继续列数据 并找规律
​ 第1行 0个空格 i-1=0
​ 第2行 1个空格 i-1=1
​ 第3行 2个空格 i-1=2
​ 第4行 3个空格 i-1=3
​ 第5行 2个空格 n-i=2
​ 第6行 1个空格 n-i=1
​ 第7行 0个空格 n-i=0

建立模型

输入数字n

循环输出行数n

​ 循环输出空格

​ 当行数小于n的一半时,输出 行数减1个空格

​ 当行数大于n的一半时,输出 数字n减去行数个空格

​ 循环输出列数n

编写代码

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    //打印行
    int tmp;
    tmp = n/2;
    for(int i=1;i<=n;i++){
        //解决空格问题
        /*
        n=3 空格最大为1
        n=5 空格最大为2
        n=7 空格最大为3
        发现规律 n/2=3 是最大空格数
        继续列数据
        第1行 0个空格    i-1=0
        第2行 1个空格    i-1=1
        第3行 2个空格    i-1=2
        第4行 3个空格    i-1=3
        第5行 2个空格    n-i=2 
        第6行 1个空格    n-i=1
        第7行 0个空格    n-i=0
        */

       if(i<=n/2+1){
            for(int k=1;k<=i-1;k++){
                cout<<" ";
            }
        }else{
            for(int k=1;k<=n-i;k++){
                cout<<" ";
            }
        }
        //打印列
        for(int j=1;j<=n;j++){
            cout<<"*";
        }
        cout<<"\n";//给每行进行换行
    }
    return 0;
}

保存 编译 运行