C语言两个二维数组相乘
时间: 2023-12-20 17:31:44 浏览: 125
以下是C语言中两个二维数组相乘的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct TwoDArray {
int rows;
int columns;
int **elements;
} TwoDArray, *TwoDArrayPtr;
// 初始化二维数组
void initTwoDArray(TwoDArrayPtr array, int rows, int columns) {
array->rows = rows;
array->columns = columns;
array->elements = (int **)malloc(rows * sizeof(int *));
for (int i = 0; i < rows; i++) {
array->elements[i] = (int *)malloc(columns * sizeof(int));
}
}
// 释放二维数组
void freeTwoDArray(TwoDArrayPtr array) {
for (int i = 0; i < array->rows; i++) {
free(array->elements[i]);
}
free(array->elements);
}
// 随机赋值
void randomAssign(TwoDArrayPtr array) {
for (int i = 0; i < array->rows; i++) {
for (int j = 0; j < array->columns; j++) {
array->elements[i][j] = rand() % 10;
}
}
}
// 打印二维数组
void printTwoDArray(TwoDArrayPtr array) {
for (int i = 0; i < array->rows; i++) {
for (int j = 0; j < array->columns; j++) {
printf("%d ", array->elements[i][j]);
}
printf("\n");
}
}
// 二维数组相乘
TwoDArrayPtr multiplyTwoDArray(TwoDArrayPtr array1, TwoDArrayPtr array2) {
if (array1->columns != array2->rows) {
printf("Error: The number of columns in the first array must be equal to the number of rows in the second array.\n");
return NULL;
}
TwoDArrayPtr result = (TwoDArrayPtr)malloc(sizeof(TwoDArray));
initTwoDArray(result, array1->rows, array2->columns);
for (int i = 0; i < array1->rows; i++) {
for (int j = 0; j < array2->columns; j++) {
int sum = 0;
for (int k = 0; k < array1->columns; k++) {
sum += array1->elements[i][k] * array2->elements[k][j];
}
result->elements[i][j] = sum;
}
}
return result;
}
// 测试代码
void test() {
TwoDArray array1, array2, *result;
initTwoDArray(&array1, 2, 3);
initTwoDArray(&array2, 3, 2);
randomAssign(&array1);
randomAssign(&array2);
printf("Array1:\n");
printTwoDArray(&array1);
printf("Array2:\n");
printTwoDArray(&array2);
result = multiplyTwoDArray(&array1, &array2);
if (result != NULL) {
printf("Result:\n");
printTwoDArray(result);
freeTwoDArray(result);
}
freeTwoDArray(&array1);
freeTwoDArray(&array2);
}
// 主函数
int main() {
test();
return 0;
}
```
阅读全文