C语言问题,请给代码

来源:百度知道 编辑:UC知道 时间:2024/05/27 02:26:33
对1,2...n*n进行排列,当n=4排列如下
1, 2, 3, 4
12,13,14,5
11,16,15,6
10, 9, 8,7
要求:输入n的值,输出如上排列结果.

#include<stdio.h>

#define N 10

void main()
{
int n;
int i, j, k, t;
int a[N][N];

puts("input n:");
scanf("%d", &n);
if (n<1 || n>9)
{
puts("error");
return;
}

t = 1;
for (i=1;i<=(n-1)/2+1;i++)
{
j=i-1;
for (k=j;k<n-j;k++)
a[j][k] = t++;
for (k=j+1;k<n-j;k++)
a[k][n-j-1] = t++;
for (k=n-j-2;k>=j;k--)
a[n-j-1][k] = t++;
for (k=n-j-2;k>j;k--)
a[k][j] = t++;
}

for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
printf("%d\t",a[i][j]);
printf("\n");
}
}