当前位置:首页 > C > 正文

C语言矩阵运算(从零开始掌握二维数组与矩阵操作)

在计算机科学和工程计算中,C语言矩阵运算是一个基础而重要的主题。无论是图像处理、机器学习还是物理仿真,都离不开对矩阵的操作。本教程将手把手教你如何用C语言实现常见的矩阵运算,包括矩阵的定义、输入输出、加法和乘法。即使你是编程小白,也能轻松上手!

什么是矩阵?

矩阵是一个由数字排列成的矩形阵列,通常用行和列表示。例如,一个 2×3 的矩阵有 2 行 3 列:

C语言矩阵运算(从零开始掌握二维数组与矩阵操作) C语言矩阵运算 矩阵加法 C语言二维数组 矩阵乘法实现 第1张

C语言中如何表示矩阵?

在C语言中,我们使用二维数组来表示矩阵。例如,定义一个 3×3 的整型矩阵:

int matrix[3][3];

这个语句声明了一个名为 matrix 的二维数组,可以存储 3 行 3 列的整数。

矩阵的输入与输出

下面是一个完整的程序,演示如何从用户输入读取一个矩阵,并将其打印出来:

#include <stdio.h>#define ROWS 3#define COLS 3int main() {    int matrix[ROWS][COLS];    // 输入矩阵    printf("请输入 %d x %d 的矩阵元素:\n", ROWS, COLS);    for (int i = 0; i < ROWS; i++) {        for (int j = 0; j < COLS; j++) {            scanf("%d", &matrix[i][j]);        }    }    // 输出矩阵    printf("您输入的矩阵是:\n");    for (int i = 0; i < ROWS; i++) {        for (int j = 0; j < COLS; j++) {            printf("%d\t", matrix[i][j]);        }        printf("\n");    }    return 0;}

矩阵加法(Matrix Addition)

两个相同维度的矩阵可以相加,结果矩阵的每个元素等于对应位置元素之和。这是 矩阵加法 的基本规则。

// 假设有两个 2x2 矩阵 A 和 B,计算 C = A + B#include <stdio.h>int main() {    int A[2][2] = {{1, 2}, {3, 4}};    int B[2][2] = {{5, 6}, {7, 8}};    int C[2][2];    for (int i = 0; i < 2; i++) {        for (int j = 0; j < 2; j++) {            C[i][j] = A[i][j] + B[i][j];        }    }    // 打印结果    printf("矩阵 A + B = \n");    for (int i = 0; i < 2; i++) {        for (int j = 0; j < 2; j++) {            printf("%d\t", C[i][j]);        }        printf("\n");    }    return 0;}

矩阵乘法(Matrix Multiplication)

矩阵乘法比加法复杂一些。只有当第一个矩阵的列数等于第二个矩阵的行数时,才能相乘。结果矩阵的维度为(第一个矩阵的行数 × 第二个矩阵的列数)。这是 矩阵乘法实现 的关键点。

// 计算 2x3 矩阵 A 与 3x2 矩阵 B 的乘积 C(结果为 2x2)#include <stdio.h>int main() {    int A[2][3] = {{1, 2, 3}, {4, 5, 6}};    int B[3][2] = {{7, 8}, {9, 10}, {11, 12}};    int C[2][2] = {0}; // 初始化为0    // 矩阵乘法    for (int i = 0; i < 2; i++) {        for (int j = 0; j < 2; j++) {            for (int k = 0; k < 3; k++) {                C[i][j] += A[i][k] * B[k][j];            }        }    }    // 输出结果    printf("矩阵 A * B = \n");    for (int i = 0; i < 2; i++) {        for (int j = 0; j < 2; j++) {            printf("%d\t", C[i][j]);        }        printf("\n");    }    return 0;}

小结

通过本教程,你已经掌握了使用 C语言二维数组 进行基本矩阵操作的方法,包括输入输出、加法和乘法。这些是更高级数值计算的基础。建议你动手编写并运行上述代码,加深理解。

记住,C语言矩阵运算的核心在于理解双重或三重循环的嵌套逻辑。多练习几次,你就能熟练运用了!

希望这篇教程对你有帮助!如果你有任何问题,欢迎在评论区留言交流。