用c语言创建两个6*6的二维整数矩阵,要求输出矩阵,并计算两个矩阵的加法、 乘法结果及其计算时间。
时间: 2024-09-22 22:05:33 浏览: 48
在C语言中,我们可以使用指针和动态内存分配来创建和操作二维数组。以下是创建两个6x6矩阵、计算它们的加法和乘法以及测量运算时间的基本步骤:
首先,创建矩阵并初始化:
```c
#include <stdio.h>
#include <time.h>
// 定义矩阵结构体
typedef struct Matrix {
int size;
int **data;
} Matrix;
// 功能:创建矩阵
Matrix create_matrix(int rows, int cols) {
Matrix matrix;
matrix.size = rows;
matrix.data = (int **)malloc(rows * sizeof(int *));
for (int i = 0; i < rows; ++i) {
matrix.data[i] = (int *)malloc(cols * sizeof(int));
for (int j = 0; j < cols; ++j) {
matrix.data[i][j] = (i * cols) + j; // 初始化为数值i*j
}
}
return matrix;
}
// 功能:打印矩阵
void print_matrix(Matrix matrix) {
for (int i = 0; i < matrix.size; ++i) {
for (int j = 0; j < matrix.size; ++j) {
printf("%d ", matrix.data[i][j]);
}
printf("\n");
}
}
// ...其他函数定义...
int main() {
const int ROWS = 6;
const int COLS = 6;
clock_t start, end;
double time_spent;
Matrix matrix1 = create_matrix(ROWS, COLS);
Matrix matrix2 = create_matrix(ROWS, COLS);
// 打印矩阵1
print_matrix(matrix1);
// 计算加法和乘法开始时间
start = clock();
// 矩阵加法
for (int i = 0; i < ROWS; ++i) {
for (int j = 0; j < COLS; ++j) {
matrix1.data[i][j] += matrix2.data[i][j];
}
}
// 矩阵乘法(假设行列相等)
if (ROWS == COLS) {
int result[ROWS][COLS];
for (int i = 0; i < ROWS; ++i) {
for (int j = 0; j < COLS; ++j) {
for (int k = 0; k < COLS; ++k) {
result[i][j] += matrix1.data[i][k] * matrix2.data[k][j];
}
}
}
// 将结果存入一个新的矩阵中,这里省略
} else {
printf("矩阵乘法规则不成立!\n");
}
// 计算和打印结果
// ...此处省略...
// 结束时间和花费时间计算
end = clock();
time_spent = ((double)(end - start)) / CLOCKS_PER_SEC;
printf("矩阵加法和乘法共耗时 %.6f 秒.\n", time_spent);
// 回收内存
free_matrix(&matrix1);
free_matrix(&matrix2);
return 0;
}
```
阅读全文