昨天 做的
#include <stdlib.h> /* For _MAX_PATH definition */
#include <stdio.h>
#include <malloc.h>
/*动态分配二维数组,由于c语言里没有动态分配二维数组的
函数,我想来想去还是只有自己写一个了
*/
int** myalloc(int r,int l)
{
int *p,**t,i;
p=(int*)malloc(r*l*sizeof(int));
t=(int**)malloc(r*sizeof(int*));
for(i=0;i<r;i++)
{
t=p+l*i;
}
return t;
}
void main()
{
int** a;int n;
scanf("%d",&n);
a=myalloc(n,n);
int i,j,k,t;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
a[j]=i*n+j+1;
}
}
i=0;j=n-1;
while(i<j)
{
for(k=0;k<j-i;k++)
{
t=a[i+k];
a[i+k]=a[j-k];
a[j-k]=a[j][j-k];
a[j][j-k]=a[i+k][j];
a[i+k][j]=t;
}
i++;j--;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",a[j]);
}
printf("\n");
}
}
/*输出
7
43 36 29 22 15 8 1
44 37 30 23 16 9 2
45 38 31 24 17 10 3
46 39 32 25 18 11 4
47 40 33 26 19 12 5
48 41 34 27 20 13 6
49 42 35 28 21 14 7
Press any key to continue
*/