输入描述:第一行包含两个整数n和m,表示一个矩阵包含n行m列,用空格分隔(1<=n,m<=m)
从2到n+1行,每行输入m个整数,用空格分隔,共输入n*m个数,表示第一个矩阵中的元素,记下来一行输入k,表示要执行k次操作(1<=k<=5)。接下来有k行,每行包括一个字符t和两个数a和b,中间空格分隔,t代表要执行的操作,当t为字符‘r’时代表进行行变换,当t为字符‘c’时代表列变换,a和b为需要互换的行或列(1<=a<=b<=n<=10),(1<=a<=b<=m<=10)。
输出描述:输出n行m列,为矩阵变换后的结果,每行数后面有一个空格。
具体代码:
#include <stdio.h>
int main()
{
int n = 0;
int m = 0;
int arr[10][10] = {0};
scanf("%d %d",&n,&m);
int i = 0;
int j = 0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&arr[i][j]);
}
}
int k = 0;
int a = 0;
int b = 0;
char t = 0;
scanf("%d",&k);
for(i=0;i<k;i++)
{
//每一次操作的过程
scanf(" %c %d %d",&t,&a,&b);
if(t=='r') //交换行
{
for(j=0;j<m;j++)
{
int tmp = arr[a-1][j];
arr[a-1][j] = arr[b-1][j];
arr[b-1][j] = tmp;
}
}
else if(t=='c') //交换列
{
for(j=0;j<n;j++)
{
int tmp = arr[j][a-1];
arr[j][a-1] = arr[i][b-1];
arr[j][b-1] = tmp;
}
}
}
//打印
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%d",arr[i][j]);
}
printf("\n");
}
return 0;
}