c语言编程 将给定的一个二维数组(4*4)转置,即行列互换
发布网友
发布时间:2023-07-13 18:32
我来回答
共1个回答
热心网友
时间:2023-09-14 23:59
图片看不清,给题主写个完整的吧
#include <stdio.h>
#include <conio.h>
#define ARR_LEN 255 /* 数组长度上限 */
/* 矩阵转置 */
/* [AT]ij = [A]ji */
void transpose (int matrix[ARR_LEN][ARR_LEN], int row, int col,
int matrixT[ARR_LEN][ARR_LEN], int *rowT, int *colT) {
int i, j;
*colT = row; /* 横行数改为纵列数 */
*rowT = col; /* 纵列数改为横行数 */
for (i=0; i<col; i++) { /* 横行改写为纵列 */
for (j=0; j<row; j++) { /* 纵列改写为横行 */
matrixT[i][j] = matrix[j][i];
}
}
}
/* 打印矩阵内容 */
void printMatrix (int matrix[ARR_LEN][ARR_LEN], int row, int col) {
int i, j;
for (i=0; i<row; i++) {
for (j=0; j<col; j++) {
printf ("%d\t", matrix[i][j]);
}
putchar ('\n');
}
}
int main (void) {
//int matrix[ARR_LEN][ARR_LEN];
int matrix[ARR_LEN][ARR_LEN] = {{1,2,9,4},{8,6,3,4},{2,9,5,6},{3,1,0,4}}, matrixT[ARR_LEN][ARR_LEN];
int row, col, rowT, colT;
row = 4; col = 4;
transpose (matrix, row, col, matrixT, &rowT, &colT);
printf ("原始矩阵:\n");
printMatrix (matrix, row, col); /*打印矩阵内容*/
putchar ('\n');
printf ("转置矩阵:\n");
printMatrix (matrixT, rowT, colT); /*打印矩阵内容*/
putchar ('\n');
getch (); /* 屏幕暂留 */
return 0;
}