admin管理员组文章数量:1794759
C语言入门
题目
答题思路我这里使用的是两个多维数组,因此此段代码仅需修改输入部分既可用于多种对称矩阵的转置
第一个多维数组用于记录原始的矩阵排列,第二个多维数组用于记录转置后的矩阵排列
我的思路很简单,先将右上角的数交换到左下角(本人非数学专业,专业名词要使用错了还请包涵),再将左下角的数交换到右上角
完整的代码 #include <stdio.h> #define Matrix_Number 3 int main(){ int Row_Counter,Print_Counter; int Matrix[Matrix_Number][Matrix_Number]; int Matrix_Switch[Matrix_Number][Matrix_Number]; int Switch_Column_Counter; printf("3 X 3 Matrix:\\n"); //Input each number of ROW for (Row_Counter = 0;Row_Counter < Matrix_Number; Row_Counter++) { printf("ROW Number %d \\n",Row_Counter + 1); printf("Please input Column Number : \\n"); scanf("%d,%d,%d",&Matrix[Row_Counter][0],&Matrix[Row_Counter][1],&Matrix[Row_Counter][2]); } //Print the Matrix before Switch printf("Before Switch :\\n"); for (Row_Counter = 0;Row_Counter < Matrix_Number; Row_Counter++) { for (Print_Counter = 0 ; Print_Counter < 2 ; Print_Counter++) { printf("%d ",Matrix[Row_Counter][Print_Counter]); } printf("%d \\n",Matrix[Row_Counter][2]); } //Exchange the number in the upper right corner to the lower left corner for (int Switch_Row_Counter = 0 ; Switch_Row_Counter < Matrix_Number ; Switch_Row_Counter++) { for (Switch_Column_Counter = Switch_Row_Counter; Switch_Column_Counter < Matrix_Number ; Switch_Column_Counter++) { Matrix_Switch[Switch_Column_Counter][Switch_Row_Counter] = Matrix[Switch_Row_Counter][Switch_Column_Counter]; } } //Exchange the number in the lower left corner to the upper right corner. for (int Switch_Row_Counter = 0 ; Switch_Row_Counter < Matrix_Number ; Switch_Row_Counter++) { for (Switch_Column_Counter = Switch_Row_Counter; Switch_Column_Counter < Matrix_Number ; Switch_Column_Counter++) { Matrix_Switch[Switch_Row_Counter][Switch_Column_Counter] = Matrix[Switch_Column_Counter][Switch_Row_Counter]; } } //Print the Matrix after Switch printf("After Switch :\\n"); for (Row_Counter = 0;Row_Counter < Matrix_Number; Row_Counter++) { for (Print_Counter = 0 ; Print_Counter < 2 ; Print_Counter++) { printf("%d ",Matrix_Switch[Row_Counter][Print_Counter]); } printf("%d \\n",Matrix_Switch[Row_Counter][2]); } } 代码的分部讲解 交换的第一步 for (int Switch_Row_Counter = 0 ; Switch_Row_Counter < Matrix_Number ; Switch_Row_Counter++) { for (Switch_Column_Counter = Switch_Row_Counter; Switch_Column_Counter < Matrix_Number ; Switch_Column_Counter++) { Matrix_Switch[Switch_Column_Counter][Switch_Row_Counter] = Matrix[Switch_Row_Counter][Switch_Column_Counter]; } }最外层的循环控制器控制的是矩阵的行数,当 Switch_Row_Counter = 0 的时候,让嵌套的循环的控制器等于 0 ,嵌套的循环控制器控制的是矩阵的列,这样我们就可以读取原始的多维数组 Matrix[0] [0] 的数据了,这里对新的多维矩阵的[0] [0]进行赋值。当
Switch_Row_Counter = 1 的时候,Switch_Column_Counter = 1,这里的意思是,从矩阵的第二行的第二个开始交换,所以当第二行交换完成之后,就按照这个方法继续交换剩下的部分。
这样就将右上部分的数据交换到了新的矩阵的左下部分。
交换的第二步 for (int Switch_Row_Counter = 0 ; Switch_Row_Counter < Matrix_Number ; Switch_Row_Counter++) { for (Switch_Column_Counter = Switch_Row_Counter; Switch_Column_Counter < Matrix_Number ; Switch_Column_Counter++) { Matrix_Switch[Switch_Row_Counter][Switch_Column_Counter] = Matrix[Switch_Column_Counter][Switch_Row_Counter]; } }按照刚才的方法,我们仅仅将行与列的控制器在数组部分交换填写一下就可以了
更多的拓展使用这里我们先抛开数据的输入部分,单就置换矩阵部分的程序来说
#define Matrix_Number 3我定义了一个全局变量,就这一个变量就可以控制整个矩阵的大小,因此我们只需要更改这一个全局变量就可以进行更多的对称矩阵的置换
版权声明:本文标题:C语言入门 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686650839a90644.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论