#define _CRT_SECURE_NO_WARNINGS #include <stdio.h>
int main() { int n, m, c, d; scanf("%d %d\n", &n, &m);//接受行(n)和列(m) int A[10][10]; for (c = 0; c < n; c++) //存储数组c行,d列(计算机会自动识别数字和字符,不用管输入时候的回车与空格) for (d = 0; d < m; d++) scanf("%d", &A[c][d]);
int k,h,a,b,x,y;
char t;
scanf("%d", &k);//读取操作次数
getchar();
for (h = 0; h < k; h++) //进行k次操作
{
scanf("%c %d %d", &t,&a,&b);//(t判断操作类型,a,b接收操作对象)接下来有k行,每行包括一个字符t和两个数a和b,中间用空格格分隔,t代表需要执行的操作,当t为字符'r'时代表进行行变换,当t为字符'c'时代表进行列变换,a和b为需要互换的行或列(1≤a≤b≤n≤10,1≤a≤b≤m≤10)。
a -= 1;//数组是从0开始第一个元素的
b -= 1;
if (t == 'r')//行操作
{
for (x = 0; x < m; x++)
{
y = A[a][x];
A[a][x] = A[b][x];
A[b][x] = y;
}
}
if (t == 'c')//列操作
{
for (x = 0; x < n; x++)
{
y = A[x][a];
A[x][a] = A[x][b];
A[x][b] = y;
}
}
getchar();
}
for (c = 0; c < n; c++) //打印数组c行,d列
for (d = 0; d < m; d++)
{
printf("%d ", A[c][d]);
if (d == m-1 &&c!=n-1)//如果到最后一列,且不是最后一行,就要换行
printf("\n");
}
return 0;
}