C语言二维数组螺旋打印一组数

题目:给出一个5*5的二维数组一组数,要求螺旋打印(如下图所示)

方法:设置四个标志位控制四个打印方向(如图),分四个for循环打印

当Left<=Right&&Up<=Down,说明还有数据。

代码如下:

#include<stdio.h>
int main() {
	const int n = 5;
	const int m = 5;
	int ar[n][m] = {
		{1, 3, 5, 7, 9 },
		{10,12,14,16,18},
		{20,22,24,26,28},
		{30,32,34,36,38},
		{40,42,44,46,48},
	};
	int Left = 0, Right = n - 1, Up = 0, Down = m - 1;
	while (Left <= Right && Up <= Down) {
		for (int i = Left; i <= Right; i++) {  //i<=Right指包括等于时需要打印的
			printf("%5d", ar[Up][i]);//i变量控制列,列在发生变化
		}
		printf("\n");
		for (int i = Up+1; i <= Down; i++) { //i<=Down 包括=
			printf("%5d", ar[i][Right]);//i变量控制行,行在发生变化
		}
		printf("\n");
		for (int i = Right - 1; i >= Left && Up <= Down; i--) { //i>=Left 包括=
			printf("%5d", ar[Down][i]);
		}
		printf("\n");
		for (int i = Down - 1; i > Up && Left <= Right; i--) { //i>Up 不包括= 才可以形成螺旋打印,不重复打印!!
			printf("%5d", ar[i][Left]);
		}
		printf("\n");
		Left++, Right--, Up++, Down--;//千万别忘记控制循环变量的改变!
	}
	printf("\n");
	return 0;
}

 结果如下:(为了方便检查,在每一组打印结束后输出一个换行符)

 其他二维数组螺旋打印也类似。足够细心一定可以掌握的!加油!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值