测试程序如下:
#include<stdio.h>
int main() {
int i,j;
int b[20][20];
int n=11;
for (i=0;i<n;i++)
for (j=0;j<n;j++) {
if (i+j<n) {
if ((i+j)%2) {
b[i][j]=1+(i+j+2)*(i+j-1)/2+i+1;
}else {
b[i][j]=(i+j+1)*(i+j)/2+j+1;
}
}else {
if (n%2) {
if ((i+j-n+1)%2) {
b[i][j]=n*(n+1)/2+(3*n-(i+j)-1)*(i+j-n)/2+n-j;
}else {
b[i][j]=n*(n+1)/2+n-1+(3*n-(i+j)-2)*(i+j-n-1)/2+n-i;
}
}else {
if ((i+j-n+1)%2) {
b[i][j]=n*(n+1)/2+(3*n-(i+j)-1)*(i+j-n)/2+n-i;
}else {
b[i][j]=n*(n+1)/2+n-1+(3*n-(i+j)-2)*(i+j-n-1)/2+n-j;
}
}
}
}
for (i=0;i<n;i++) {
for (j=0;j<n;j++) printf("%4d",b[i][j]);
printf("\n");
}
return 0;
}