C程序用于矩阵相减

矩阵相减原理

矩阵相减是指将两个矩阵中对应元素相减得到一个新的矩阵的操作。要求进行相减的两个矩阵必须具有相同的行和列。在矩阵相减时,对应位置的元素一一相减,得到的结果矩阵与原矩阵行列数相同。例如,矩阵A和矩阵B相减得到矩阵C的方式如下:

C = A - B

其中,C、A、B分别表示结果矩阵、原矩阵1、原矩阵2。

使用C语言实现矩阵相减

下面展示使用C语言实现矩阵相减的代码。在代码中,首先定义了矩阵和矩阵相减的函数subtract_matrix()。

#include<stdio.h>

#include<stdlib.h>

void subtract_matrix(int **A, int **B, int **C, int rows, int cols){

int i, j;

for(i = 0; i < rows; i++){

for(j = 0; j < cols; j++){

C[i][j] = A[i][j] - B[i][j];

}

}

return;

}

int main(){

int rows, cols, i, j;

float temperature;

printf("请输入矩阵的行数和列数:\n");

scanf("%d%d", &rows, &cols);

int **A, **B, **C;

A = (int **)malloc(rows * sizeof(int *));

B = (int **)malloc(rows * sizeof(int *));

C = (int **)malloc(rows * sizeof(int *));

for(i = 0; i < rows; i++){

A[i] = (int *)malloc(cols * sizeof(int));

B[i] = (int *)malloc(cols * sizeof(int));

C[i] = (int *)malloc(cols * sizeof(int));

}

printf("请输入矩阵A:\n");

for(i = 0; i < rows; i++){

for(j = 0; j < cols; j++){

scanf("%d", &A[i][j]);

}

}

printf("请输入矩阵B:\n");

for(i = 0; i < rows; i++){

for(j = 0; j < cols; j++){

scanf("%d", &B[i][j]);

}

}

subtract_matrix(A, B, C, rows, cols);

printf("矩阵A:\n");

for(i = 0; i < rows; i++){

for(j = 0; j < cols; j++){

printf("%d ", A[i][j]);

}

printf("\n");

}

printf("矩阵B:\n");

for(i = 0; i < rows; i++){

for(j = 0; j < cols; j++){

printf("%d ", B[i][j]);

}

printf("\n");

}

printf("矩阵C = A - B:\n");

for(i = 0; i < rows; i++){

for(j = 0; j < cols; j++){

printf("%d ", C[i][j]);

}

printf("\n");

}

return 0;

}

代码解析

函数subtract_matrix()

该函数用于计算两个矩阵相减的结果矩阵。

函数中的参数如下:

A:要相减的矩阵1的二维数组指针。

B:要相减的矩阵2的二维数组指针。

C:存储相减结果的矩阵的二维数组指针。

rows:矩阵的行数。

cols:矩阵的列数。

函数中的代码如下:

void subtract_matrix(int **A, int **B, int **C, int rows, int cols){

int i, j;

for(i = 0; i < rows; i++){

for(j = 0; j < cols; j++){

C[i][j] = A[i][j] - B[i][j];

}

}

return;

}

该函数首先使用两层循环遍历矩阵中的所有元素,依次计算A和B中对应位置的元素之差,并将结果存入C中。

主函数main()

该函数用于获取用户的输入,创建矩阵,调用函数相减矩阵,统计矩阵相减的结果。

主函数中的代码如下:

int main(){

int rows, cols, i, j;

float temperature;

printf("请输入矩阵的行数和列数:\n");

scanf("%d%d", &rows, &cols);

int **A, **B, **C;

A = (int **)malloc(rows * sizeof(int *));

B = (int **)malloc(rows * sizeof(int *));

C = (int **)malloc(rows * sizeof(int *));

for(i = 0; i < rows; i++){

A[i] = (int *)malloc(cols * sizeof(int));

B[i] = (int *)malloc(cols * sizeof(int));

C[i] = (int *)malloc(cols * sizeof(int));

}

printf("请输入矩阵A:\n");

for(i = 0; i < rows; i++){

for(j = 0; j < cols; j++){

scanf("%d", &A[i][j]);

}

}

printf("请输入矩阵B:\n");

for(i = 0; i < rows; i++){

for(j = 0; j < cols; j++){

scanf("%d", &B[i][j]);

}

}

subtract_matrix(A, B, C, rows, cols);

printf("矩阵A:\n");

for(i = 0; i < rows; i++){

for(j = 0; j < cols; j++){

printf("%d ", A[i][j]);

}

printf("\n");

}

printf("矩阵B:\n");

for(i = 0; i < rows; i++){

for(j = 0; j < cols; j++){

printf("%d ", B[i][j]);

}

printf("\n");

}

printf("矩阵C = A - B:\n");

for(i = 0; i < rows; i++){

for(j = 0; j < cols; j++){

printf("%d ", C[i][j]);

}

printf("\n");

}

return 0;

}

主函数首先获取用户输入的矩阵行列数,然后动态创建三个二维数组A、B和C。接下来,使用双层循环分别输入矩阵A和矩阵B的所有元素,将输入的结果存储在A和B中。调用函数subtract_matrix()计算C矩阵,最后输出三个矩阵的值。

总结

在本篇文章中,我们介绍了矩阵相减的原理,展示了使用C语言实现矩阵相减的代码,并对代码进行了详细解释。相信读者已经对如何使用C语言进行矩阵相减有了更深入的认识。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签