编写一个c语言程序,手动输入并计算一个正整数数组所有奇数长度子数组的和
时间: 2024-10-20 14:15:58 浏览: 40
编写一个C语言程序来计算一个正整数数组的所有奇数长度子数组的和,可以按照以下步骤进行:
1. 首先,我们需要包含头文件`stdio.h`用于输入操作,`stdlib.h`用于动态内存分配。
2. 定义一个函数`sum_odd_subarrays()`,它接收一个整型数组指针、数组大小和当前子数组起始位置作为参数。
3. 使用循环遍历整个数组,每次增加2(因为我们要找奇数长度的子数组),直到超过数组大小。
4. 对于每个奇数长度,计算子数组的和。使用另一个循环遍历这个子数组,并累加元素值。
5. 计算结束后,返回总和给主函数。
6. 在主函数中,我们动态创建数组并读取用户输入,然后调用`sum_odd_subarrays()`函数。
下面是简单的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
long long sum_odd_subarrays(int* arr, int size, int start) {
long long total_sum = 0;
int subarray_size = 0;
while (start + subarray_size * 2 <= size && subarray_size % 2 != 0) {
int sum = 0;
for (int i = start; i < start + subarray_size + 1; i++) {
sum += arr[i];
}
total_sum += sum;
subarray_size++;
}
return total_sum;
}
int main() {
int n;
printf("Enter the number of elements in the array: ");
scanf("%d", &n);
// 动态分配内存
int* arr = malloc(n * sizeof(int));
if (arr == NULL) {
printf("Memory allocation failed.\n");
return 1;
}
printf("Enter the elements: ");
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
long long result = sum_odd_subarrays(arr, n, 0);
printf("Sum of all odd-length subarrays: %lld\n", result);
// 释放内存
free(arr);
return 0;
}
```
阅读全文