左神基础班-二维矩阵转圈打印

一个函数: 控制从外围打印一圈

另外一个函数控制:打印最外圈,次外圈 、再进去一圈。额。没法描述了~~~~~囧

 

 

#include<iostream>
using namespace std;
void myprint(int matrix[][4],int row1,int col1, int row2,int col2);
void revolvePrint(int matrix[][4],int rows, int cols);
//为何在知道解法的情况下花掉了一小时的时间:
//二维数组初始化不确定
//二维数组传参方式不确定
//取二维数组 的大小不确定
//由以上的不确定导致编写的代码有问题 ——)找BUG花费了大量时间
int main(){
	int matrix[][4] = {{1,2,3,4},{12,13,14,5},{11,16,15,6},{10,9,8,7}};
	int row = sizeof(matrix)/sizeof(matrix[0]);
	int col = sizeof(matrix[0])/sizeof(matrix[0][0]);
	revolvePrint(matrix,row,col);
	return 0;
}
void revolvePrint(int matrix[][4],int rows, int cols){
	int row1 = 0;
	int col1 = 0;
	int row2 = rows-1;
	int col2 = cols-1;
	while(row1<=row2 && col1 <=col2){
		myprint(matrix, row1++,col1++, row2--,col2--);
	}
}
void myprint(int matrix[][4],int row1,int col1, int row2,int col2){
	//只有一行
	if(row1 == row2){
		for(int i=col1;i<=col2;i++){
			cout << matrix[row1][i] << endl;
		}
		//只有一列
	}else if(col1 == col2){
		for(int i=row1;i<=row2;i++){
			cout << matrix[i][col1] << endl;
		}
	}else{
		int rowC = row1;
		int colC = col1;
		//向右走
		while(colC != col2){
			cout << matrix[rowC][colC] << endl;
			colC++;
		}
		//向下走
		while(rowC !=row2){
			cout << matrix[rowC][colC] << endl;
			rowC++;
		}
		//向左走
		while(colC != col1){
			cout << matrix[rowC][colC] << endl;
			colC--;
		}
		// 向上走
		while(rowC != row1){
			cout << matrix[rowC][colC] << endl;
			rowC--;
		}
	}
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值