1. 程式人生 > >求5X5階螺旋方陣

求5X5階螺旋方陣

目的:掌握陣列演算法設計。

內容:以下是一個5X5階螺旋方陣,編寫一個程式exp6-3.cpp輸出該形式的nXn(n<10)階方陣(按順時針方向旋進)。

      1      2      3      4      5

    16    17    18    19      6

    15    24    25    20      7

    14    23    22    21      8

    13    12    11    10      9

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=15;
int main()
{
    int n,arr[maxn][maxn];
    int i,j,k;
    while(~printf("請輸入螺旋矩陣的矩陣大小n:\n"))
    {
        memset(arr,0,sizeof(arr));
        scanf("%d",&n);
        int start=1;
        int temp=n;
        i=0;
        j=0;
        for(k=0; k<n/2; k++)//n階矩陣可以畫n/2個圈
        {
            for(; j<temp-1; j++)
                arr[i][j]=start++;
            for(; i<temp-1; i++)
                arr[i][j]=start++;
            for(; j>k; j--)
                arr[i][j]=start++;
            for(; i>k; i--)
                arr[i][j]=start++;
            //進入下一圈
            i++;
            j++;
            temp--;
        }
        if(n%2==1)//若n為奇數,中間那個數遍歷不到,單獨賦值
            arr[i][j]=start++;
        for(i=0; i<n; i++)
        {
            for(j=0; j<n; j++)
                printf("%3d ",arr[i][j]);//固定輸出寬度
            printf("\n");
        }
        printf("繼續操作請輸入1,退出操作請輸入0:\n");
        int f;
        scanf("%d",&f);
        if(f==0)
            break;
    }
    return 0;
}