求二维数组间的加法,数据由键盘输入,要求用到指针,c语言
时间: 2024-02-28 20:56:12 浏览: 58
C语言 指针与二维数组详解
可以参考下面的代码实现二维数组的加法,使用指针:
```c
#include <stdio.h>
#define ROWS 3
#define COLS 3
void matrix_add(int arr1[][COLS], int arr2[][COLS], int sum[][COLS], int rows, int cols);
int main()
{
int arr1[ROWS][COLS];
int arr2[ROWS][COLS];
int sum[ROWS][COLS];
printf("Enter elements of first array:\n");
for(int i=0; i<ROWS; i++)
{
for(int j=0; j<COLS; j++)
{
scanf("%d", &arr1[i][j]);
}
}
printf("Enter elements of second array:\n");
for(int i=0; i<ROWS; i++)
{
for(int j=0; j<COLS; j++)
{
scanf("%d", &arr2[i][j]);
}
}
matrix_add(arr1, arr2, sum, ROWS, COLS);
printf("Sum of matrices:\n");
for(int i=0; i<ROWS; i++)
{
for(int j=0; j<COLS; j++)
{
printf("%d ", sum[i][j]);
}
printf("\n");
}
return 0;
}
void matrix_add(int arr1[][COLS], int arr2[][COLS], int sum[][COLS], int rows, int cols)
{
int (*p1)[COLS] = arr1;
int (*p2)[COLS] = arr2;
int (*p3)[COLS] = sum;
for(int i=0; i<rows; i++)
{
for(int j=0; j<cols; j++)
{
*(*p3 + i*cols + j) = *(*p1 + i*cols + j) + *(*p2 + i*cols + j);
}
}
}
```
在这个例子中,我们定义了一个 `matrix_add` 函数,它接受四个参数:`arr1`、`arr2`、`sum` 和 `rows`,`cols`,分别表示两个数组的行数、列数和要计算的和数组的行数、列数。在函数中,我们定义了三个指向二维数组的指针 `p1`、`p2` 和 `p3`,分别指向 `arr1`、`arr2` 和 `sum` 数组的第一个元素。然后,我们使用两个嵌套的循环计算 `sum` 数组的值,并最后将其返回。
在 `main` 函数中,我们首先从键盘输入 `arr1` 和 `arr2` 的元素。然后,我们调用 `matrix_add` 函数计算 `sum` 数组的值,并最后将其打印出来。
阅读全文