#include <stdio.h> #include <stdlib.h> #define arr(i,j) *(arr+i*a+j) int main() { int a,i,j,count=0,num=1; scanf("%d", &a); int* arr=malloc(sizeof(int)*a*a); while(num<=a*a)//参考大佬的思路写的,说实话没有合适的头绪完全写不出来 { for(i=0;i<a;i++) { for(j=0;j<a;j++) { if(i+j==count) { if(count%2==0) arr(j,i)=num++; else arr(i,j)=num++; } } } count++; } for(i=0;i<a;i++) { for(j=0;j<a;j++) printf("%d ",arr(i,j)); printf("\n"); } free(arr); return 0; }