#include <stdio.h>
#include <malloc.h>
int main()
{
int *ptable;
int n,i,j;
printf("请输入待填充的行列数:\n");
scanf("%d",&n);
ptable=(int*)malloc(sizeof(int)*n*n); //申请空间
for(i=0;i<n*n;i++) *(ptable+i)=0; //初始化
for(i=0; i<n;i++) //先填充二维数组
{
*(ptable+i*(1+n))=i+1; //填充顶点数据
int k=n-1;
for(j=i*(1+n)-1;j>=i*n;j--) *(ptable+j)=*(ptable+j+1)+(k--); //单独填充每一行
}
for(i=0;i<n*n;i++) //然后选择性的打印输出
{
if(i%n==0 && i>0) printf("\n"); //控制输出矩阵的列数
if(*(ptable+i)>0) printf("%4d",*(ptable+i)); //非0 则输出
}
printf("\n");
free(ptable);
return 0;
}
/*
运行效果:
请输入待填充的行列数:
7
1
8 2
14 9 3
19 15 10 4
23 20 16 11 5
26 24 21 17 12 6
28 27 25 22 18 13 7
*/