简介
在本实验中,你将学习如何在 C 程序中对两个矩阵进行减法运算。本实验涵盖以下步骤:
首先,你将学习如何从用户输入中读取两个矩阵的维度和元素。你将创建一个 C 程序,提示用户输入行数和列数,然后输入两个矩阵的元素。
接下来,你将实现矩阵减法运算,即减去两个矩阵的对应元素,并将结果存储在一个新矩阵中。最后,你将学习如何打印结果矩阵。
在本实验中,你将学习如何在 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 定义了最大矩阵大小为 100x100rows 和 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 程序中从用户输入读取矩阵维度和元素。该程序允许用户输入两个矩阵的大小和值,然后将它们存储在两个二维数组中。这一步为后续减去两个矩阵的对应元素并打印结果矩阵奠定了基础。
程序提示用户输入行数和列数,然后引导他们输入第一个和第二个矩阵的元素。这确保程序能够正确处理不同大小的矩阵,并存储输入数据以供进一步处理。