简介
在本实验中,你将学习如何在 C 程序中对两个矩阵进行减法运算。本实验涵盖以下步骤:
首先,你将学习如何从用户输入中读取两个矩阵的维度和元素。你将创建一个 C 程序,提示用户输入行数和列数,然后输入两个矩阵的元素。
接下来,你将实现矩阵减法运算,即减去两个矩阵的对应元素,并将结果存储在一个新矩阵中。最后,你将学习如何打印结果矩阵。
读取维度和元素
在这一步中,你将学习如何在用于矩阵减法的 C 程序中从用户输入读取矩阵的维度和元素。我们将创建一个程序,允许用户输入两个矩阵的大小和值。
首先,为我们的矩阵减法程序创建一个新的 C 文件:
cd ~/project
nano matrix_subtraction.c
现在,将以下代码添加到该文件中:
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE];
int matrix2[MAX_SIZE][MAX_SIZE];
// 读取矩阵维度
printf("输入行数:");
scanf("%d", &rows);
printf("输入列数:");
scanf("%d", &cols);
// 输入第一个矩阵的元素
printf("输入第一个矩阵的元素:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("输入元素 [%d][%d]:", i, j);
scanf("%d", &matrix1[i][j]);
}
}
// 输入第二个矩阵的元素
printf("输入第二个矩阵的元素:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("输入元素 [%d][%d]:", i, j);
scanf("%d", &matrix2[i][j]);
}
}
return 0;
}
示例输出:
输入行数:2
输入列数:2
输入第一个矩阵的元素:
输入元素 [0][0]:5
输入元素 [0][1]:6
输入元素 [1][0]:7
输入元素 [1][1]:8
输入第二个矩阵的元素:
输入元素 [0][0]:1
输入元素 [0][1]:2
输入元素 [1][0]:3
输入元素 [1][1]:4
让我们编译并运行该程序:
gcc matrix_subtraction.c -o matrix_subtraction
./matrix_subtraction
代码解释:
- 我们使用
MAX_SIZE定义了最大矩阵大小为 100x100 rows和cols存储矩阵的维度- 创建了两个二维数组
matrix1和matrix2来存储矩阵元素 - 使用
scanf()从用户输入读取矩阵维度和元素 - 使用嵌套循环为两个矩阵输入元素
减去对应元素
在这一步中,你将学习如何减去两个矩阵的对应元素,并将结果存储在一个新矩阵中。我们将扩展上一个程序来执行矩阵减法。
打开现有文件并修改代码:
cd ~/project
nano matrix_subtraction.c
用矩阵减法逻辑更新代码:
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE];
int matrix2[MAX_SIZE][MAX_SIZE];
int result[MAX_SIZE][MAX_SIZE];
// 读取矩阵维度
printf("输入行数:");
scanf("%d", &rows);
printf("输入列数:");
scanf("%d", &cols);
// 输入第一个矩阵的元素
printf("输入第一个矩阵的元素:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("输入元素 [%d][%d]:", i, j);
scanf("%d", &matrix1[i][j]);
}
}
// 输入第二个矩阵的元素
printf("输入第二个矩阵的元素:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("输入元素 [%d][%d]:", i, j);
scanf("%d", &matrix2[i][j]);
}
}
// 减去对应元素
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
result[i][j] = matrix1[i][j] - matrix2[i][j];
}
}
return 0;
}
示例输出:
输入行数:2
输入列数:2
输入第一个矩阵的元素:
输入元素 [0][0]:5
输入元素 [0][1]:6
输入元素 [1][0]:7
输入元素 [1][1]:8
输入第二个矩阵的元素:
输入元素 [0][0]:1
输入元素 [0][1]:2
输入元素 [1][0]:3
输入元素 [1][1]:4
代码解释:
- 创建了一个新的二维数组
result来存储减法结果 - 嵌套循环遍历每个矩阵元素
result[i][j]通过从matrix1和matrix2中减去对应元素来计算- 减法遵循按元素的矩阵减法规则
让我们编译程序:
gcc matrix_subtraction.c -o matrix_subtraction
打印结果矩阵
在这一步中,你将学习如何在减法运算后打印结果矩阵。我们将修改上一个程序以显示减法结果。
打开现有文件并更新代码:
cd ~/project
nano matrix_subtraction.c
用矩阵打印逻辑更新代码:
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE];
int matrix2[MAX_SIZE][MAX_SIZE];
int result[MAX_SIZE][MAX_SIZE];
// 读取矩阵维度
printf("输入行数:");
scanf("%d", &rows);
printf("输入列数:");
scanf("%d", &cols);
// 输入第一个矩阵的元素
printf("输入第一个矩阵的元素:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("输入元素 [%d][%d]:", i, j);
scanf("%d", &matrix1[i][j]);
}
}
// 输入第二个矩阵的元素
printf("输入第二个矩阵的元素:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("输入元素 [%d][%d]:", i, j);
scanf("%d", &matrix2[i][j]);
}
}
// 减去对应元素
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
result[i][j] = matrix1[i][j] - matrix2[i][j];
}
}
// 打印结果矩阵
printf("\n减法运算后的结果矩阵:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", result[i][j]);
}
printf("\n");
}
return 0;
}
编译并运行程序:
gcc matrix_subtraction.c -o matrix_subtraction
./matrix_subtraction
示例输出:
输入行数:2
输入列数:2
输入第一个矩阵的元素:
输入元素 [0][0]:5
输入元素 [0][1]:6
输入元素 [1][0]:7
输入元素 [1][1]:8
输入第二个矩阵的元素:
输入元素 [0][0]:1
输入元素 [0][1]:2
输入元素 [1][0]:3
输入元素 [1][1]:4
减法运算后的结果矩阵:
4 4
4 4
代码解释:
- 添加了一个新的嵌套循环来打印
result矩阵 printf("%d ", result[i][j])打印每个元素- 额外的
printf("\n")在每行之后创建一个新行 - 输出显示了减去值后的矩阵
总结
在本实验中,你学习了如何在用于矩阵减法的 C 程序中从用户输入读取矩阵维度和元素。该程序允许用户输入两个矩阵的大小和值,然后将它们存储在两个二维数组中。这一步为后续减去两个矩阵的对应元素并打印结果矩阵奠定了基础。
程序提示用户输入行数和列数,然后引导他们输入第一个和第二个矩阵的元素。这确保程序能够正确处理不同大小的矩阵,并存储输入数据以供进一步处理。



