C语言环行矩阵的实现

本人是新手,所以水平不高。如果有错误可以指出,谢谢大家。

矩阵可以用二维数组表示,最后输出的其实是二维数组,没被赋新的值,那个地方就是零,输出的时候可以输出空格。就像下面。

 先输入二维数组的行数和列数,再定义一个二维数组。定义两个变量,作为横坐标和纵坐标。

定义一个递增的变量,这些数字会被用来组成矩阵。接下来就是给二维数组赋值,这里的x和y也就是横坐标和纵坐标的变化是由另一个名为b的二维数组存放的值决定的,x+1就是往下一行,y+1就是向右一格,x+0就是不往下,y+0就是不向右移动。x+ -1就是向上移动一行y+ -1就是向左一格。接下来的条件判断是判断继续下去会否出现数组越界,如果会,就将d的值增加1,x和y将加b数组的下一行的值,这里的条件意思是横坐标或纵坐标如果继续增加或减小是否会大于或小于数组所规定的行和列的最大或最小下标。这里b数组里的小框里的第一个值是横坐标要加的值,第二个数是纵坐标要加的值,如果跳转的下一个框,也就是d的值发生了改变,横坐标和纵坐标加的数也会发生改变,移动方向就实现了改变,举个例子,假设现在d的值为一,那么下一个数存在二维数组里的位置是上一个数位置的下一行同一列,此时d的值变为了2,那么下一个数存在了刚才存的数的右边一格。到了输出的时候,在输出的时候如果二维数组的一个地方没有被赋新的值,也就是一个名为cnt的变量的值,就会在那个位置上输出占三个位置的空格。

这是按左上顺时顺序输出的环行矩阵,如果改成右下顺时方向,只需调整二维数组b中存放的值,然后把x和y一开始就定义成n和m。

我的水平不高,所以说的可能不是那么清楚,如果有错误,可以指正。谢谢大家,祝大家学习顺利

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值