利用数组指针求5行3列二维数组各行元素之和。
时间: 2024-05-09 13:19:01 浏览: 10
下面是一种实现方式:
```c++
#include <iostream>
int main() {
int arr[5][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}, {13, 14, 15}};
int (*pArr)[3] = arr; // 定义数组指针,指向 arr 的第一个元素
for (int i = 0; i < 5; i++) {
int sum = 0;
for (int j = 0; j < 3; j++) {
sum += *(*(pArr + i) + j); // 通过数组指针访问二维数组元素
}
std::cout << "第" << i + 1 << "行元素之和为:" << sum << std::endl;
}
return 0;
}
```
输出结果:
```
第1行元素之和为:6
第2行元素之和为:15
第3行元素之和为:24
第4行元素之和为:33
第5行元素之和为:42
```
相关问题
利用指向数组的指针求二维数组各行元素之和
您好!感谢您使用 ChitGPT 进行对话。
针对您的问题,我们可以利用指向数组的指针,通过遍历二维数组的每一行,求取各行元素之和。具体实现如下:
```c
#include <stdio.h>
#define ROW 3
#define COL 4
int main() {
int arr[ROW][COL] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
int sum[ROW] = {0}; // 保存每一行元素之和
// 循环遍历每一行,并求取每一行元素之和
for(int i = 0; i < ROW; i++) {
int *p = arr[i]; // 指向当前行的首元素
for(int j = 0; j < COL; j++) {
sum[i] += *(p + j); // 指针移动,累加每个元素的值
}
}
// 输出每一行元素之和
for(int i = 0; i < ROW; i++) {
printf("第 %d 行元素之和为:%d\n", i+1, sum[i]);
}
return 0;
}
```
以上就是利用指向数组的指针,求取二维数组各行元素之和的方法。希望能对您有所帮助!
利用指针数组求二维数组各行元素之和
可以通过如下代码来实现:
```c
#include <stdio.h>
int main() {
int data[3][4] = {{1, 2, 3, 4}, {2, 4, 6, 8}, {3, 6, 9, 12}};
int sums[3] = {0};
// 使用指针数组,对每行元素求和
for (int i = 0; i < 3; i++) {
for (int *p = &data[i][0]; p < &data[i][4]; p++) {
sums[i] += *p;
}
}
// 打印每行元素之和
for (int i = 0; i < 3; i++) {
printf("第 %d 行元素之和为:%d\n", i+1, sums[i]);
}
return 0;
}
```
以上代码中,我们定义了一个二维数组 `data`,其中存储了 3 行 4 列的数据。然后,我们定义一个一维数组 `sums`,用于存放每行元素之和。
使用指针数组,我们对每一行的元素进行遍历,并将元素之和累加到 `sums` 数组中。最后,打印出每一行的元素之和即可。
注意:以上代码中,我们使用了指针数组 `p`,其代表的是每一行的第一个元素的地址。使用指针数组的好处在于可以避免使用二维数组时需要使用行列索引的繁琐操作。