#include <iostream>
using namespace std;
int main()
{
//0:以输入数为中心,1:以最小数为中心
const int mode=1;
int num;
printf("请输入数字:");
scanf("%d",&num);
for(int i=1;i<=2*num-1;i++)
{
for(int j=1;j<=2*num-1;j++)
{
int r;
if(i+j>=2*num)//右下三角
{
if(mode==1)
{
r=(i>j?i:j)%num+1;
}
else
{
r=num-(j>i?j:i)%num;
}
}
else//左上三角
{
if(mode==1)
{
r=num-(j>i?i:j)%num+1;
}
else
{
r=(i>j?j:i)%num;
}
}
printf("%d ",r);
}
printf("/n/r");
}
}
输出结果:
以1为中心(mode=1):
请输入数字:5
5 5 5 5 5 5 5 5 5
5 4 4 4 4 4 4 4 5
5 4 3 3 3 3 3 4 5
5 4 3 2 2 2 3 4 5
5 4 3 2 1 2 3 4 5
5 4 3 2 2 2 3 4 5
5 4 3 3 3 3 3 4 5
5 4 4 4 4 4 4 4 5
5 5 5 5 5 5 5 5 5
以输入数为中心(mode=0):
请输入数字:6
1 1 1 1 1 1 1 1 1 1 1
1 2 2 2 2 2 2 2 2 2 1
1 2 3 3 3 3 3 3 3 2 1
1 2 3 4 4 4 4 4 3 2 1
1 2 3 4 5 5 5 4 3 2 1
1 2 3 4 5 6 5 4 3 2 1
1 2 3 4 5 5 5 4 3 2 1
1 2 3 4 4 4 4 4 3 2 1
1 2 3 3 3 3 3 3 3 2 1
1 2 2 2 2 2 2 2 2 2 1
1 1 1 1 1 1 1 1 1 1 1