.利用指针计算2个矩阵的和。
时间: 2024-04-30 20:19:15 浏览: 110
计算两个矩阵
假设我们有两个矩阵A和B,它们的维度相同,均为m行n列。我们可以通过指针来计算它们的和。
具体实现步骤如下:
1. 定义两个指向二维数组的指针,分别指向矩阵A和矩阵B,如int (*pA)[n]和int (*pB)[n]。
2. 定义一个指向二维数组的指针pC,用于存储矩阵A和矩阵B的和。
3. 动态分配存储结果的二维数组,如int (*pC)[n]=(int (*)[n])malloc(m*n*sizeof(int))。
4. 遍历矩阵A和矩阵B的每个元素,将它们相加并存储到矩阵C中,即*(pC+i)+j=*(pA+i)+j+*(pB+i)+j。
5. 输出结果矩阵C。
完整代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m, n, i, j;
printf("Enter the size of matrices (m, n): ");
scanf("%d %d", &m, &n);
// 动态分配存储矩阵A和矩阵B的二维数组
int (*pA)[n] = (int (*)[n])malloc(m*n*sizeof(int));
int (*pB)[n] = (int (*)[n])malloc(m*n*sizeof(int));
printf("Enter the elements of matrix A:\n");
for(i=0; i<m; i++)
for(j=0; j<n; j++)
scanf("%d", *(pA+i)+j);
printf("Enter the elements of matrix B:\n");
for(i=0; i<m; i++)
for(j=0; j<n; j++)
scanf("%d", *(pB+i)+j);
// 动态分配存储结果矩阵C的二维数组
int (*pC)[n] = (int (*)[n])malloc(m*n*sizeof(int));
// 计算矩阵A和矩阵B的和
for(i=0; i<m; i++)
for(j=0; j<n; j++)
*(pC+i)+j = *(pA+i)+j + *(pB+i)+j;
printf("The sum of matrices A and B is:\n");
for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
printf("%d\t", *(pC+i)+j);
printf("\n");
}
// 释放动态分配的内存
free(pA);
free(pB);
free(pC);
return 0;
}
```
阅读全文