如图
第一种方法
暴力法
1.首先输入一个数n,判断是否为偶数,如果是就退出;
2.此方法先把第一层到(n+1)/2 层输出,然后再反向输出;
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
if(n%2==0)
{
cout<<"只能输入奇数!!!"<<endl;
return 0;
}
n = n+1>>1;
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++)
cout<<"*";
cout<<""<<endl;
}
for(int i=n-1;i>0;i--)
{
for(int k=n-i;k>0;k--)
cout<<" ";
for(int j=2*i-1;j>0;j--)
cout<<"*";
cout<<""<<endl;
}
return 0;
}
第二种方法
距离法
//此方法学自y总
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n;
cin>>n;
if(n%2==0)
{
cout<<"只能输入奇数!!!"<<endl;
return 0;
}
int cx = (n+1)/2 , cy = (n+1)/2;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(abs(i-cx)+abs(j-cy) <= n/2)
cout<<"*";
else
cout<<" ";
}
cout<<""<<endl;
}
return 0;
}