c语言 螺旋矩阵,一道螺旋矩阵的C语言题!请打印出螺旋方阵.如4*4的矩阵效果是:1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 矩阵的维度n,也就是矩阵的边长,如上例中...

7d14a2b81882cfe4494b096a84150b2a.png 优质解答

#include 

//基本思想是将所有数按照螺旋顺序存入2维数组,再输出

int main()

{

\x09int n,u,d,l,r,i,j, mat[100][100] = {0}; //定义各个变量,其中u,d,l,r为存入数组时的上下左右边界.

\x09scanf("%d",&n);\x09//输入n的值

\x09for (i = 1; i<=n ; i++)\x09//先存数组第一行,i为数组里存入的数,在程序中一直递增

\x09{

\x09\x09mat[0][i-1] = i;

\x09}

\x09u = 1; d = n -1 ; l = 0 ; r = n -1;\x09//初始化螺旋的上下左右边界,因为存入了第一行,所以u = 1

\x09while(1)\x09//此循环实现螺旋顺序存入数据

\x09{

\x09\x09for (j = u; j <= d ; j++,i++)\x09//由上到下存入最右边的一列数

\x09\x09{

\x09\x09\x09mat[j][r] = i;

\x09\x09}

\x09\x09

\x09\x09r--;\x09//右边界减一

\x09\x09for (j = r ; j >= l ; j--,i++)\x09//由右到左存入最下边的一行数

\x09\x09{

\x09\x09\x09mat[d][j] = i;

\x09\x09}

\x09\x09d--;//下边界减一

\x09\x09if (i >= (n*n)) break;\x09//判断是否存满,存满跳出

\x09\x09for (j = d ; j >= u ; j--,i++)\x09//由下到上存入最左边的一列数

\x09\x09{

\x09\x09\x09mat[j][l] = i;

\x09\x09}

\x09\x09l++;//左边界加一

\x09\x09for (j = l ; j <= r ; j++,i++)\x09//由左到右存入上边的一行数

\x09\x09{

\x09\x09\x09mat[u][j] = i;

\x09\x09}

\x09\x09u++;//上边界加一

\x09\x09if (i >= (n*n)) break;  //判断是否存满,存满跳出

\x09}

\x09for (i = 0 ; i 

\x09{

\x09\x09for( j = 0 ; j 

\x09\x09{

\x09\x09\x09printf("%d\t", mat[i][j]);

\x09\x09}

\x09\x09printf("\n");

\x09}

}

8b35066caf27a3ac98d9834453fe43e8.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值