C语言实现打印螺旋数组(顺时针)

2023年 7月 11日 29.4k 0

问题的描述是:给出一个30*30的二维数组,用1~900这900个数字去填满这个二维数组,并且打印结果。要求是实现填充顺序是顺时针,例如现在有一个3*3规模的二维数组,用9个数字去填满它,则结果如下。

1 2 3

8 9 4

7 6 5

可以看出这是一个顺时针打印的1~9的排列。

假定num = 1;

对于本题目给出的要求,我们想到用4个for循环分别打印行和列,并且每次打印num的值会依次递增,直到循环到最后一次后,num = 900为止,但是显然4个for循环不够打印出30*30的列表,所以这时候我们需要在4个for循环外面套上一个大的while循环,其存在是为了判断num目前的值是否小于等于900,如果条件为真,则执行循环,打印列表的行列,如果为假,则说明打印完成,那么就退出循环。

对于四个for循环,最难的就是如何控制行列的增加,比如说我第一个for循环,正常打印第一行1~30的数字,但是在这一轮所有的for循环打印完后,我该如何通过第一个for循环打印第二行呢?

所以就想到使用四个参数来表示行列的变化,我选择a,b,c,d来表示,下面是我的思路。

C语言实现打印螺旋数组(顺时针)C语言实现打印螺旋数组(顺时针)

最开始我也是设了4个参数,但是由于混乱的逻辑,导致最后输出十分混乱,在经过画图和思考之后也理解了这四个参数之间的关系了,然后列出四个for()循环来解决问题。

接下来是代码部分,代码中我没有单独写打印函数,就直接在主函数中将最后的二维数组打印出来。

代码:

#include
int main() {
int count = 0;//计数器
int rui[30][30] = { {0} };//二维数组
int num = 1;
int yang = 30 * 30;
int a = 0;//控制行的a b
int b = 29;
int c = 0;//控制列的c d
int d = 29;
while (num

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论