简介
在这个实验中,你将学习如何在 C 编程中添加两个矩阵。该实验涵盖以下步骤:读取两个矩阵的维度和元素,将对应元素相加,并打印结果矩阵。你将首先创建一个 C 程序来读取矩阵的维度和元素,然后实现矩阵加法逻辑,最后输出最终矩阵。该实验旨在提供使用 C 处理矩阵和线性代数的实践经验。
在这个实验中,你将学习如何在 C 编程中添加两个矩阵。该实验涵盖以下步骤:读取两个矩阵的维度和元素,将对应元素相加,并打印结果矩阵。你将首先创建一个 C 程序来读取矩阵的维度和元素,然后实现矩阵加法逻辑,最后输出最终矩阵。该实验旨在提供使用 C 处理矩阵和线性代数的实践经验。
在这一步中,你将学习如何在 C 程序中读取两个矩阵的维度和元素。矩阵加法要求矩阵大小相同,所以我们首先要实现矩阵维度和元素的输入。
首先,创建一个用于矩阵加法的新 C 文件:
cd ~/project
nano matrix_addition.c
现在,让我们编写读取矩阵维度和元素的代码:
#include <stdio.h>
#define MAX_SIZE 10
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE], matrix2[MAX_SIZE][MAX_SIZE];
// 读取矩阵的维度
printf("输入行数 (最大 %d): ", MAX_SIZE);
scanf("%d", &rows);
printf("输入列数 (最大 %d): ", MAX_SIZE);
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;
}
编译程序:
gcc matrix_addition.c -o matrix_addition
当你运行程序时,它会提示你输入矩阵的维度和元素:
输入行数(最大 10): 2
输入列数(最大 10): 3
输入第一个矩阵的元素:
输入元素 [0][0]: 1
输入元素 [0][1]: 2
输入元素 [0][2]: 3
输入元素 [1][0]: 4
输入元素 [1][1]: 5
输入元素 [1][2]: 6
输入第二个矩阵的元素:
输入元素 [0][0]: 7
输入元素 [0][1]: 8
输入元素 [0][2]: 9
输入元素 [1][0]: 10
输入元素 [1][1]: 11
输入元素 [1][2]: 12
#define MAX_SIZE 10 设置矩阵维度的最大限制scanf() 用于读取行数、列数和矩阵元素的整数输入for 循环用于输入两个矩阵的元素在这一步中,你将学习如何将两个矩阵的对应元素相加,并将结果存储在一个新矩阵中。
打开之前的 C 文件:
cd ~/project
nano matrix_addition.c
修改程序以相加矩阵元素:
#include <stdio.h>
#define MAX_SIZE 10
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE], matrix2[MAX_SIZE][MAX_SIZE], result[MAX_SIZE][MAX_SIZE];
// 之前的输入代码保持不变
//...(输入矩阵 1 和矩阵 2 的维度和元素)
// 相加对应元素
printf("\n结果矩阵 (矩阵 1 + 矩阵 2):\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
result[i][j] = matrix1[i][j] + matrix2[i][j];
printf("%d ", result[i][j]);
}
printf("\n");
}
return 0;
}
编译更新后的程序:
gcc matrix_addition.c -o matrix_addition
运行程序:
./matrix_addition
输入行数(最大 10): 2
输入列数(最大 10): 3
输入第一个矩阵的元素:
输入元素 [0][0]: 1
输入元素 [0][1]: 2
输入元素 [0][2]: 3
输入元素 [1][0]: 4
输入元素 [1][1]: 5
输入元素 [1][2]: 6
输入第二个矩阵的元素:
输入元素 [0][0]: 7
输入元素 [0][1]: 8
输入元素 [0][2]: 9
输入元素 [1][0]: 10
输入元素 [1][1]: 11
输入元素 [1][2]: 12
结果矩阵 (矩阵1 + 矩阵2):
8 10 12
14 16 18
result 来存储矩阵元素的和for 循环遍历两个矩阵的每个元素result[i][j] = matrix1[i][j] + matrix2[i][j] 相加对应元素printf() 用于显示结果矩阵在这一步中,你将学习如何以清晰、易读的方式格式化并打印结果矩阵。
打开之前的 C 文件:
cd ~/project
nano matrix_addition.c
使用一个专门的矩阵打印函数更新程序:
#include <stdio.h>
#define MAX_SIZE 10
// 打印矩阵的函数
void printMatrix(int matrix[MAX_SIZE][MAX_SIZE], int rows, int cols, const char* matrixName) {
printf("%s:\n", matrixName);
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%4d ", matrix[i][j]);
}
printf("\n");
}
printf("\n");
}
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE], matrix2[MAX_SIZE][MAX_SIZE], result[MAX_SIZE][MAX_SIZE];
// 之前的输入代码保持不变
//...(输入矩阵 1 和矩阵 2 的维度和元素)
// 相加对应元素
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
result[i][j] = matrix1[i][j] + matrix2[i][j];
}
}
// 打印矩阵
printMatrix(matrix1, rows, cols, "第一个矩阵");
printMatrix(matrix2, rows, cols, "第二个矩阵");
printMatrix(result, rows, cols, "结果矩阵 (矩阵 1 + 矩阵 2)");
return 0;
}
编译更新后的程序:
gcc matrix_addition.c -o matrix_addition
运行程序:
./matrix_addition
输入行数(最大 10): 2
输入列数(最大 10): 3
输入第一个矩阵的元素:
输入元素 [0][0]: 1
输入元素 [0][1]: 2
输入元素 [0][2]: 3
输入元素 [1][0]: 4
输入元素 [1][1]: 5
输入元素 [1][2]: 6
输入第二个矩阵的元素:
输入元素 [0][0]: 7
输入元素 [0][1]: 8
输入元素 [0][2]: 9
输入元素 [1][0]: 10
输入元素 [1][1]: 11
输入元素 [1][2]: 12
第一个矩阵:
1 2 3
4 5 6
第二个矩阵:
7 8 9
10 11 12
结果矩阵 (矩阵1 + 矩阵2):
8 10 12
14 16 18
printMatrix() 函数来以一致的格式打印矩阵%4d 格式说明符确保列打印对齐在这个实验中,你学习了如何在 C 程序中读取两个矩阵的维度和元素。这是矩阵加法的一个重要步骤,因为矩阵加法要求矩阵大小相同。你实现了矩阵维度和元素的输入,确保程序能够处理最大尺寸为 10x10 的矩阵。
在读取矩阵维度和元素之后,下一步是将两个矩阵的对应元素相加,并存储结果矩阵。