C语言 将m*n矩阵转置(行列互换)为n*m的矩阵

您所在的位置:网站首页 矩阵中数字的转置 C语言 将m*n矩阵转置(行列互换)为n*m的矩阵

C语言 将m*n矩阵转置(行列互换)为n*m的矩阵

2023-09-14 11:35| 来源: 网络整理| 查看: 265

看了保证懂

首先,我们分析: 这个问题无非就是把m乘n的值赋值给n乘m,然后再输出不是么? 那我们假设m=3,n=2那就是三行两列,把它转换为2*3,那也就是两行三列。 方便理解我们可以定义两个数组a[3][2],b[2][3]。

a[3][2]里有六个元素分别为:a[0][0] ,a[0][1], a[1][0], a[1][1], a[2][0], a[2][1] b[2][3]里有六个元素分别为:b[0][0] ,b[0][1] ,b[0][2] ,b[1][0] ,b[1][1] ,b[1][2] 首先我们要对二维数组a[3][2]进行输入才可以进行转换,不然没有值,换个寂寞。那我们就先来编写输入值的代码:

(提示:手机用户可以左划代码部分查看注释)

#include "stdio.h" #define M 3 //对M进行一个宏定义为3 #define N 2 //同理对N进行宏定义为2 void main(){ //程序的开始 int a[M][N],b[N][M],i,j; //分别定义a,b两个数组并且定义两个整型变量i,j printf("对该矩阵进行输入:"); //打印输出“对该矩阵进行输入:” for(i=0;i //内循环 j值控制数组的列 scanf("%d",&a[i][j]); //以十进制形式对数组进行赋值 } //内循环结束 } //外循环结束

这里我的main函数的结束花括号没有打,因为程序还没有编写完成,所以让我们来继续编写 赋值完了,让我们以3*2的矩阵形式输出来给我们看看,那我们继续编写:

for(i=0;i //内循环 j值控制数组的列 printf("%3d",a[i][j]); //打印输出长度为3以十进制形式的数组 } //内循环结束 printf("\n"); //换行 } //外循环结束

好,写到这里我们完成了一半,下面就是重点,转换部分:

printf("转换成2*3的为:\n"); //为了看的更清楚打印输出这句话 for(i=0;i //内循环3次j值分别是0 1 2 b[i][j]=a[j][i]; //这里将数组a的值赋值给b } //内循环结束 } //外循环结束

到现在我们已经完成了转换,相信有些同学可能有些迷惑,没关系,我后面来解释,最后让我们输出一下,这个程序就算是完成了,让我们来看一下:

for(i=0;i //内循环3次j值分别是0 1 2 printf("%3d",b[i][j]); //打印输出长度为3以十进制形式的数组 } //内循环结束 printf("\n"); //换行 } //外循环结束 } //main函数结束 细致讲解

这里我们主要讲解一下转换部分,为了方便理解,我用一张表格来把两个数组的下标对应出来

ba000001100220100111111221

大家可以逐一对应一下可以发现,a的值完全赋值给了b,这个地方需要大家仔细观察,多加理解。

全部代码 #include "stdio.h" #define M 3 #define N 2 void main(){ int a[M][N],b[N][M],i,j; printf("对该矩阵进行输入:"); for(i=0;i scanf("%d",&a[i][j]); } } for(i=0;i printf("%3d",a[i][j]); } printf("\n"); } printf("转换成2*3的为:\n"); for(i=0;i b[i][j]=a[j][i]; } } for(i=0;i printf("%3d",b[i][j]); } printf("\n"); } }

代码放在这里有,同学们可以参考一下,最好自己看一遍,自己打一遍对照着我的程序,但不要完全抄。还是那句话,一遍没看懂,别担心。再看一遍,记得我得启蒙老师说过一句话:编程经不起同学们思考。加油!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3