#include <stdio.h>
//此程序只适合,偶数列行,不适合奇数
int main()
{
int i,j,k,n,t[100][100]={0};//定义t为一个足够大的数组
printf("plase input size:\n");
scanf("%d",&n);
for(i=0;i<(n/2);i++)
{
for(j=(n/2-1);j>=i;j--)//把此图形分成一样的4块,只研究左上角一块
t[j][i]=(i+1);
/*
程序上面语句后,执行会有如下的图形产生
1
1 2
1 2 3
*/
for(k=0;k<i;k++)
t[k][i]=(k+1);
/*
再次填齐上面的空缺行,即
1 1
2
两个图形一合并,就会出现下面的图形:
1 1 1
1 2 2
1 2 3
*/
}
//*********复制图形开始
//将左边的图形复制到右边
for(i=0;i<n;i++)
for(j=0;j<n;j++)
t[i][j+(n/2)]=t[i][(n/2-1)-j];
//将上边的图形复制到下边
for(i=0;i<n;i++)
for(j=0;j<n;j++)
t[i+(n/2)][j]=t[(n/2-1)-i][j];
//**********复制图形结束
for(i=0;i<n;i++)//输出最终图形
{
for(j=0;j<n;j++)
printf("%3d",t[i][j]);
printf("\n");
}
return 0;
}