题解 | #矩阵交换#

矩阵交换

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;
}

全部评论

相关推荐

2 收藏 评论
分享
牛客网
牛客企业服务