旋转打印矩阵、旋转存储矩阵、之字形打印矩阵

本文详细介绍了三种矩阵操作:1) 转圈打印矩阵,2) 顺时针旋转矩阵,3) '之'字形打印矩阵。针对每种操作,文章提供了实现思路和方法,并强调了在打印输出时要考虑数字位数的对齐。对于旋转打印,从矩阵的边界开始顺时针进行;对于旋转矩阵,通过不断缩小旋转范围实现;对于之字形打印,利用布尔变量控制上下交替打印方向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:输入一个矩阵,按照从外向里以顺时针顺序依次打印出每一个数字。例如:如果输入如下矩阵:
1      2    3     4
5      6    7     8
9    10  11  12

13  14  15  16

有三问:

1)如何实现转圈打印矩阵? 
2)如何实现顺时针旋转矩阵?
3)如何实现“之”字形打印矩阵?

题外话:

由于要打印输出矩阵,从题目可以看出,数字位数有变化,所以统一按最大位数输出,便于对齐。

使用位于头文件<iomanip>中的格式化函数 std::setw(int n); 来固定每次输出的位数

1)先来实现转圈打印矩阵。我们以顺时针来转圈

从整体上来把握。先定义一个打印一圈的函数,根据圈的左上角坐标和右下角坐标来确定圈的大小。

void printOneCircle(int(*matrix)[4], int leftTopX, int leftTopY, int rightBottomX, int rightBottomY)
{
	//子矩阵只有一行时
	if(leftTopX == rightBottomX)
	{
		for(int j = leftTopY; j <= rightBottomY; j++)
			std::cout << matrix[leftTopX][j] << " ";

		endl(std::cout);
	}
	//当子矩阵只有一列时
	else if(leftTopY == rightBottomY)
	{
		for(int i = leftTopX; i <= rightBottomX; i++)
			std::cout << matrix[i][leftTopY] << " ";

		endl(std::cout);
	}
	else
	{
		int curX = leftTopX;
		int curY = leftTopY;
		while(curY != rightBottomY){
			std::cout << matrix[curX][curY] << " ";
			curY++;
		}
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值