题解 | #矩阵交换#
矩阵交换
https://www.nowcoder.com/practice/ec44d4ff8c794b2f9205bdddbde96817
#include <stdio.h> /* n , m 代表行和列 k 代表 执行几次操作 t = 'r' 进行行变换 t = 'c' 进行列变换 */ int main() { int tmp = 0; int k = 0; char t; int a, b; int n, m; scanf("%d%d", &n, &m); int arr[100][100] = { 0 }; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { scanf("%d", &arr[i][j]); } } scanf("%d", &k); for (int i = 0; i < k; i++) { //要是一开始不加这个空格会不执行这条语句 我也是看了很多报错才知道的 //他可能把上面的回车读取了 所以才不执行 在前面加个空格就可以隔绝它 这个bug很难发现 找了很久才找到 scanf(" %c%d%d", &t,&a,&b);//这个bug很重要 要记住 //进行 '行' 变换 if (t == 'r') for (int j = 0; j < m; j++) { tmp = arr[a - 1][j]; arr[a - 1][j] = arr[b - 1][j]; arr[b - 1][j] = tmp; } //进行 '列' 变换 else if (t == 'c') { for (int i = 0; i < n; i++) { tmp = arr[i][a - 1]; arr[i][a - 1] = arr[i][b - 1]; arr[i][b - 1] = tmp; } } } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { printf("%d ", arr[i][j]); } printf("\n"); } return 0; }