螺旋方阵

#include<iostream>
#include<stdio.h>
#define MaxLen 20
using namespace std;
void fun(int a[MaxLen][MaxLen],int n)
{
    int i,j,k=0,m;
    if(n%2==0)
        m=n/2;
    else
        m=n/2+1;
    for(i=0;i<m;i++)
    {
        for(j=i;j<n-i;j++)
        {
            k++;
            a[i][j]=k;
        }
        for(j=i+1;j<n-i;j++)
        {
            k++;
            a[j][n-i-1]=k;
        }
        for(j=n-i-2;j>=i;j--)
        {
            k++;
            a[n-i-1][j]=k;
        }
        for(j=n-i-2;j>=i+1;j--)
        {
            k++;
            a[j][i]=k;
        }
    }
}
int main()
{
    int a[MaxLen][MaxLen],n;
    printf("请输入n(n<20) ");
    scanf("%d",&n);
    fun(a,n);
    printf(" %d阶螺旋方阵\n",n);
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
            printf(" %4d",a[i][j]);
        printf("\n");
    }
    return 0;
}

 

posted @ 2012-09-26 23:07  myth_HG  阅读(300)  评论(0编辑  收藏  举报