该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
例如输入5,自动生成刑如
01 02 03 04 05
16 17 18 19 06
15 24 25 20 07
14 23 22 21 08
13 12 11 10 09 的东西
程序代码如下(可能有点复杂,小弟刚刚开始学习C语言哈^_^)
#include
void main()
{
int a[20][20], n, t, i, j, kp, b, k, p;
printf("Input number N ranging from 1 ~ 20!\n");
scanf("%d", &n);
if(n>20){
printf("Too great number!\n");
break;
}
for(i=1;i<=20;i++){
for(j=1;j<=20;j++){
a[i][j]=0;
}
}
b=p=n-1;
t=0;
i=j=1;
for(k=kp=1;k<=n*n;k++,kp++){
if(t%4==0 && i<=b){
a[i][j]=k; i++;
}
if(t%4==1 && j<=b){
a[i][j]=k; j++;
}
if(t%4==2 && i>=n-b+1){
a[i][j]=k; i--;
}
if(t%4==3 && j>=n-b+1){
a[i][j]=k; j--;
if(j==n-b){
j++;}
}
if(kp%p==0){
t++;
}
if(t%4==0 && t>0 && b>1 && i==n-b && p>2){
b--; kp=0; i++; p=p-2;
}
if(t%4==0 && b>1 && i==n-b && j==n-b+1 && p==2){
i++;
a[i][j]=k+1;
k=k+2;
}
}
for(j=1;j<=n;j++){
for(i=1;i<=n;i++){
printf("%4d", a[i][j]);
}
printf("\n");
}
}
欢迎大家来我的博客做客
http://colinyoung1988.yculblog.com