You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C语言中用同一个自定义函数实现矩阵加减?

合并矩阵加减函数的实现方案

嘿,这个需求非常合理!要把原本分开的矩阵加法和减法函数合并成一个matrixAddSub,核心思路就是新增一个操作类型的参数,用它来区分当前要执行的是加法还是减法,这样就能复用绝大部分的遍历逻辑,完美精简代码。

具体实现步骤

  1. 修改函数声明:新增一个参数(比如int op)来表示操作类型,同时建议新增一个结果数组参数(避免修改原矩阵,让函数更安全)。修正原参数里的拼写错误colums为cols:
// 函数声明
void matrixAddSub(int arrayone[10][10], int arraytwo[10][10], int result[10][10], int rows, int cols, int op);
  1. 实现函数逻辑:在函数内部,通过双层循环遍历矩阵,根据op的值决定执行加法还是减法。这里用op=1代表加法,op=-1代表减法,这样可以直接通过乘法简化运算:
#include <stdio.h>

void matrixAddSub(int arrayone[10][10], int arraytwo[10][10], int result[10][10], int rows, int cols, int op) {
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            // 核心逻辑:用op的值切换加减运算
            result[i][j] = arrayone[i][j] + op * arraytwo[i][j];
        }
    }
}
  1. 调用示例:使用时只需传入对应的op值即可:
int main() {
    int matA[10][10] = {{1,2}, {3,4}};
    int matB[10][10] = {{5,6}, {7,8}};
    int matResult[10][10];

    // 执行矩阵加法
    matrixAddSub(matA, matB, matResult, 2, 2, 1);
    printf("加法结果:\n");
    for (int i=0; i<2; i++) {
        for (int j=0; j<2; j++) {
            printf("%d ", matResult[i][j]);
        }
        printf("\n");
    }

    // 执行矩阵减法
    matrixAddSub(matA, matB, matResult, 2, 2, -1);
    printf("\n减法结果:\n");
    for (int i=0; i<2; i++) {
        for (int j=0; j<2; j++) {
            printf("%d ", matResult[i][j]);
        }
        printf("\n");
    }

    return 0;
}

进阶优化:用枚举提升可读性

如果觉得直接传1和-1不够直观,可以用枚举类型定义操作常量,让代码更易读:

// 定义枚举类型
typedef enum {
    MATRIX_ADD = 1,
    MATRIX_SUB = -1
} MatrixOperation;

// 更新函数声明
void matrixAddSub(int arrayone[10][10], int arraytwo[10][10], int result[10][10], int rows, int cols, MatrixOperation op);

// 调用时更清晰
matrixAddSub(matA, matB, matResult, 2, 2, MATRIX_ADD);
matrixAddSub(matA, matB, matResult, 2, 2, MATRIX_SUB);

这样一来,原本两个重复度很高的函数就被合并成一个,既精简了代码,又保留了所有功能,后续维护也更方便~

内容的提问来源于stack exchange,提问作者max

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:38:04