|
发表于 2012-6-22 22:13:16
|
显示全部楼层
- #include<stdio.h>
- int main()
- {
- int a[15][15],i,j,k,p,n;
- p=1;
- while(p==1)
- { printf("n(n=1--15):");
- scanf("%d",&n);
- if((n!=0) && (n<=15) && (n%2!=0))
- p=0;
- }
- for(i=1;i<=n;i++)
- for(j=1;j<=n;j++)
- a[i][j]=0; //初始化
- j=n/2+1;
- a[1][j]=1; // 把1的位置定下来
-
- for(k=2;k<=n*n;k++)
- {
- i=i-1; j=j+1; //确定下一个位置,即右上角位置
-
- if((i<1) && (j>n)) //判断是不是最右上角的位置
- {
- i=i+2; //最右上角的下面
- j=j-1;
- }
- else
- {
- if(i<1) i=n;
- if(j>n) j=1;//判断是不是 超出矩阵范围并调整
- }
-
- if(a[i][j]==0) //判断这个位置是不是 放数字了
- a[i][j]=k;
- else
- {
- i=i+2;j=j-1; //如果放了,则放到原来位置的下面
- a[i][j]=k;
- }
- }
- for(i=1;i<=n;i++)
- { for(j=1;j<=n;j++)
- printf("%5d",a[i][j]);
- printf("\n");
- }
- }
复制代码 |
|