螺旋阵

在这里插入图片描述
在螺旋矩阵中,可以分为左、下以及右、上两部分,其中,
在这里插入图片描述

#include<stdio.h>
int main()
{
    int i,j,k,n;
    int x,y;
    int t = 1;
    int a[100][100],b[2];//a数组用来存储整个数组,b数组用来表示行、列向量的下标

    scanf("%d" ,&n);//n为矩阵阶数
    b[0] = 0;//记录矩阵行下标
    b[1] = 1;//记录矩阵列下标
    x = 1;//x表示第一个传入矩阵的数据:1
    k = n;
    while(x <= n*n){
        for(y = 1 ;y <= 2*k-1 ;y++){
            //在y=1~k的范围内,b的下标为0(对b[0]进行+t操作,行变列不变);
            //在y=k+1~2k-1的范围内,b的下标为1(对b[1]进行+t操作,列变行不变)
            b[y/(k+1)]+=t;
            a[b[0]][b[1]] = x;
            x++;
        }
        k--;
        t = -t;
    }

    //打印输出
    for(i = 1 ;i <= n ;i++){
        printf("\n");
        for(j = 1 ;j <= n ;j++){
            printf("%d\t",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值