求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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值