对数组中任意数目的任意相邻几个元素求和储存到另一个数组中
时间: 2024-03-23 19:36:31 浏览: 18
可以使用类似于上面的代码,不同的是在累加元素的时候需要考虑相邻元素个数的问题。下面是示例代码:
```c
void sum_n_to_arr(int arr[], int n, int result[], int m, int num) {
for (int i = 0; i < n - num + 1 && i < m; i++) {
int s = 0;
for (int j = 0; j < num; j++) {
s += arr[i+j];
}
result[i] = s;
}
}
```
其中,`arr`是待求和的数组,`n`是数组的长度,`result`是储存结果的数组,`m`是结果数组的长度,`num`是相邻元素个数。外层循环从0开始,到n-num结束或者m-1结束,内层循环从外层循环的当前位置开始,累加相邻的`num`个元素,并将结果储存到结果数组中。如果结果数组长度不够,只储存前面的结果。这里仍然采用的是`void`类型,表示不需要返回值,结果直接存储在`result`数组中。
相关问题
对数组中任意数目的任意相邻元素求和储存到另一个数组中
可以使用类似于上面的代码,只不过在累加相邻元素的同时,将结果储存在另一个数组中。下面是示例代码:
```c
void sum_to_arr(int arr[], int n, int result[], int m) {
for (int i = 0; i < n - 1 && i < m; i++) {
result[i] = arr[i] + arr[i+1];
}
}
```
其中,`arr`是待求和的数组,`n`是数组的长度,`result`是储存结果的数组,`m`是结果数组的长度。循环从0开始,到n-2或者m-1结束,每次将当前元素和下一个元素相加,并将结果储存到结果数组中。如果结果数组长度不够,只储存前面的结果。这里采用的是`void`类型,表示不需要返回值,结果直接存储在`result`数组中。
对数组中任意数目的任意相邻几个元素求和储存到另一个数组中,例如:如果传入的数组为 {1, 2, 3},则其和数组为 {1, 3, 6, 2, 5, 3}
可以使用类似于上面的代码,不同的是需要考虑累加相邻元素的个数是从1到数组长度的情况,需要嵌套两层循环来实现。下面是示例代码:
```c
void sum_all_to_arr(int arr[], int n, int result[], int m) {
int k = 0;
for (int i = 1; i <= n; i++) {
for (int j = 0; j <= n - i; j++) {
int s = 0;
for (int p = j; p < j+i; p++) {
s += arr[p];
}
result[k++] = s;
if (k >= m) {
return;
}
}
}
}
```
其中,`arr`是待求和的数组,`n`是数组的长度,`result`是储存结果的数组,`m`是结果数组的长度。外层循环从1开始,到n结束,表示相邻元素个数从1到n。内层循环从0开始,到n-i结束,表示累加相邻元素的起始位置。内部再使用一个循环,累加相邻元素,将结果储存到结果数组中。如果结果数组长度不够,只储存前面的结果,最后返回。注意,由于需要使用两层循环,为了防止结果数组越界,需要在内层循环中增加一个判断,当结果数组已经存满时,直接返回。