解题思路:

如何传二维数组做参数?经典回顾:https://blog.dotcpp.com/a/84531

这题的本质和那一题没区别。


注意事项:

打印的时候要注意换行。


参考代码:

#include <iostream>

using namespace std;

const int mSize = 3;
void transMatrix(int (*matrix)[mSize], int len); //矩阵做转置
int main() {
	int matrix[mSize][mSize] = { 0 };
	for(int i = 0; i < mSize; i++) {
		for(int j = 0; j < mSize; j++) {
			cin >> matrix[i][j]; //读输入
		}
	}
	transMatrix(matrix, 3);
	for(int i = 0; i < mSize; i++) {
		for(int j = 0; j < mSize; j++) {
			if(j == mSize - 1) {
				cout << matrix[i][j] << endl; //第三个元素换行
			} else {
				cout << matrix[i][j] << " ";
			}
		}
	}
	return 0;
}
//明明是长宽一致的矩阵,为什么还要分成mSize和len呢?
void transMatrix(int (*matrix)[mSize], int len) {
	if(mSize != len) {
		cerr << "can't be transposed!" << endl;
	}
	for(int i = 0; i < len; i++) {
		for(int j = i; j < mSize; j++) { //这里写成j < len结果也是一样的,但不符合实际了
			swap(matrix[i][j], matrix[j][i]);
		}
	}
}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

幻予鳴 2年前 回复TA
多此一舉