#include<iostream>
using namespace std;
int main()
{
int n,a;
cin>>n;
while(n--)
{
cin>>a;
for(int i=1;i<=a;i++)//a行
{
for(int k=a-i;k>=0;k--)//第a-i个空格
{
cout<<" ";
}
for(int j=1;j<=2*i-1;j++)
{
if(j==1||j==2*i-1)第一个和最后一个输出*
cout<<"*";
else
cout<<" ";
}
cout<<"\n";
}
for(int i=a-1;i>=1;i--)
{
for(int k=a-i;k>=0;k--)
{
cout<<" ";
}
for(int j=1;j<=2*i-1;j++)
{
if(j==1||j==2*i-1)
cout<<"*";
else
cout<<" ";
}
cout<<"\n";
}
}
}
首先要找上半部分的规律 这个比较简单,下半部分不用刻意去找规律,只需要将最外面一层控制行的代码修改一下,让其行前后颠倒一下即可。