龙空技术网

每日一道c语言编程题,第33题,一维数组的动态和

于桐科技 258

前言:

现时朋友们对“动态算法例题”大致比较着重,我们都需要了解一些“动态算法例题”的相关内容。那么小编同时在网络上网罗了一些对于“动态算法例题””的相关内容,希望咱们能喜欢,你们快快来了解一下吧!

题目来源力扣

给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。

请返回 nums 的动态和。

示例 1:

输入:nums = [1,2,3,4]

输出:[1,3,6,10]

解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。

示例 2:

输入:nums = [1,1,1,1,1]

输出:[1,2,3,4,5]

解释:动态和计算过程为 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1] 。

#include <stdio.h>

#include <stdlib.h>

int* runningSum(int* nums, int numsSize, int* returnSize){

int i;

int* ans = (int*) malloc(sizeof(int) * numsSize);

ans[0] = nums[0];

for(i = 1; i < numsSize; i++){

ans[i] = ans[i - 1] + nums[i];

}

*returnSize = numsSize;

return ans;

}

int main(){

int nums[100];

int numsSize, i;

printf("请输入数组大小:");

scanf("%d", &numsSize);

printf("请输入数组元素:");

for(i = 0; i < numsSize; i++){

scanf("%d", &nums[i]);

}

int returnSize;

int* ans = runningSum(nums, numsSize, &returnSize);

printf("[");

for(i = 0; i < returnSize; i++){

printf("%d", ans[i]);

if(i != returnSize - 1){

printf(",");

}

}

printf("]");

free(ans);

return 0;

}

引入头文件 stdio.h 和 stdlib.h,前者包含了输入输出相关的函数,后者包含了动态内存分配相关的函数。定义函数 runningSum,该函数接收一个整数型指针数组 nums,一个表示数组大小的整数 numsSize,以及一个指向整数型变量的指针 returnSize。函数返回一个整数型指针,指向求和后的数组。该函数首先动态分配一个大小为 numsSize 的整数型数组 ans,然后对其进行求和操作。最后将 numsSize 赋值给 returnSize 并返回 ans。在 main 函数中定义一个大小为 100 的整数型数组 nums,并定义整数型变量 numsSize 和 i。程序从用户那里获取数组大小,并提示用户输入数组元素。接着使用 for 循环将用户输入的数存储到 nums 数组中。调用 runningSum 函数,将 nums 数组、数组大小 numsSize 和指向 returnSize 的指针作为参数传递给函数。将函数返回的结果存储到 ans 指针中。使用 for 循环遍历 ans 数组,并按照题目要求输出每一项。在输出完最后一项后,程序输出一个结束标记 “]”。最后释放 ans 指针所指向的内存空间,并返回 0。

标签: #动态算法例题