矩阵转置是线性代数中的一个基本操作,它将一个矩阵的行和列互换,在C语言中,我们可以使用嵌套循环来实现矩阵转置,以下是一个简单的C语言程序,用于实现矩阵转置:
#include <stdio.h> #define ROWS 3 #define COLS 3 void transpose(int matrix[ROWS][COLS], int result[COLS][ROWS]) { for (int i = 0; i < ROWS; i++) { for (int j = 0; j < COLS; j++) { result[j][i] = matrix[i][j]; } } } int main() { int matrix[ROWS][COLS] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; int result[COLS][ROWS]; transpose(matrix, result); printf("原矩阵: "); for (int i = 0; i < ROWS; i++) { for (int j = 0; j < COLS; j++) { printf("%d ", matrix[i][j]); } printf(" "); } printf("转置后的矩阵: "); for (int i = 0; i < COLS; i++) { for (int j = 0; j < ROWS; j++) { printf("%d ", result[i][j]); } printf(" "); } return 0; }
在这个程序中,我们首先定义了一个3x3的矩阵matrix
,然后调用transpose
函数进行转置。transpose
函数接受两个参数,一个是待转置的矩阵,另一个是用于存储转置结果的矩阵,在transpose
函数中,我们使用两个嵌套循环遍历原矩阵的每个元素,并将其值赋给新矩阵的对应位置,我们在main
函数中打印出原矩阵和转置后的矩阵。
需要注意的是,这个程序假设输入的矩阵是一个方阵(即行数和列数相等),如果输入的矩阵不是方阵,那么在进行转置时可能会出现问题,为了解决这个问题,我们可以在transpose
函数中添加一些判断条件,确保只有方阵才能进行转置,以下是修改后的transpose
函数:
void transpose(int matrix[ROWS][COLS], int result[COLS][ROWS]) { if (ROWS != COLS) { printf("Error: The input matrix is not a square matrix. "); return; } for (int i = 0; i < ROWS; i++) { for (int j = 0; j < COLS; j++) { result[j][i] = matrix[i][j]; } } }
现在,如果输入的矩阵不是方阵,程序会输出错误信息并返回,这样可以避免因输入错误而导致的程序崩溃。