C语言刷题系列——8.矩阵的行/列互换
创始人
2024-04-21 08:26:39
0

🚩矩阵的行/列互换

  • ⛄一) 题目要求
  • ⛄二) 题解
    • step1:输入矩阵
    • step2:输入k(执行 行/列 互换操作的次数)
    • step3:(循环内部)行/列互换
    • step4:打印互换后的矩阵
  • ⛄三) 最终的实现

⛄一) 题目要求

输入描述:

第一行包含两个整数n和m,表示一个矩阵包含n行m列,用空格分隔。 (1≤n≤10,1≤m≤10)
从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入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)。
提示:当t为别的字符时不需要处理

输出描述:

输出n行m列,为矩阵交换后的结果。每个数后面有一个空格。
在这里插入图片描述

⛄二) 题解

step1:输入矩阵

    int n, m;scanf("%d%d", &n, &m);//输入矩阵int arr[10][10];int i, j;for (i = 0; i < n; i++){for (j = 0; j < m; j++){scanf("%d", &arr[i][j]);}}

step2:输入k(执行 行/列 互换操作的次数)

⭐注意scanf(“%d”, &k); 后面要有getchar();来读取“换行”(\n)
因为接下来要输入一个字符,否则输入k以后,后面的“换行”(\n)就会被%c读取了,压根进不去这个for循环

    int k = 0;scanf("%d", &k);getchar();char aa;int tem1, tem2, tem;for (i = 0; i < k; i++){//互换 }

step3:(循环内部)行/列互换

⭐也要注意加scanf后面加getchar();

 {scanf("%c%d%d", &aa,&tem1, &tem2);getchar();if (aa == 'r'){int c = 0;for (c = 0; c < m; c++){tem = arr[tem1 - 1][c];arr[tem1 - 1][c] = arr[tem2 - 1][c];arr[tem2 - 1][c] = tem;}}if (aa == 'c'){int c = 0;for (c = 0; c < n; c++){tem = arr[c][tem1 - 1];arr[c][tem1 - 1] = arr[c][tem2 - 1];arr[c][tem2 - 1] = tem;}}
}

step4:打印互换后的矩阵

⭐注意每打印一行要换行(\n)

    for (i = 0; i < n; i++){for (j = 0; j < m; j++){printf("%d ", arr[i][j]);}printf("\n");}

⛄三) 最终的实现

#include
int main()
{//step1:输入矩阵行数和列数int n, m;scanf("%d%d", &n, &m);//输入矩阵int arr[10][10];int i, j;for (i = 0; i < n; i++){for (j = 0; j < m; j++){scanf("%d", &arr[i][j]);}}// step2:输入k(执行 行/列 互换操作的次数)int k = 0;scanf("%d", &k);getchar();char aa;int tem1, tem2, tem;for (i = 0; i < k; i++){//step3:(循环内部)行/列互换scanf("%c%d%d", &aa,&tem1, &tem2);getchar();if (aa == 'r'){int c = 0;for (c = 0; c < m; c++){tem = arr[tem1 - 1][c];arr[tem1 - 1][c] = arr[tem2 - 1][c];arr[tem2 - 1][c] = tem;}}if (aa == 'c'){int c = 0;for (c = 0; c < n; c++){tem = arr[c][tem1 - 1];arr[c][tem1 - 1] = arr[c][tem2 - 1];arr[c][tem2 - 1] = tem;}}}//step4:打印互换后的矩阵for (i = 0; i < n; i++){for (j = 0; j < m; j++){printf("%d ", arr[i][j]);}printf("\n");}return 0;
}

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...