两种方法求一维数组前缀和

问题描述:
给你一个一维数组nums。
数组 前缀和 的计算公式为:

rtSum[i] = sum(nums[0] … nums[i])。

示例:
输入: nums = [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 
void PreSum(int nums[], int numsSize)
{
	
	int rtSum[100] = {0};
	int i = 0;
	rtSum[0] = nums[0];
	for (i = 1; i < numsSize; i++)
	{
		rtSum[i] = rtSum[i - 1] + nums[i];
		
	}
	for (i = 0; i < numsSize; i++)
	{
		printf("%d ", rtSum[i]);
	}
}

int main()
{
	int nums[100] = { 0};
	int length = 0;
	printf("输入这组数的个数,然后依次输入这组数:\n");
	scanf("%d", &length);

	for (int i = 0; i < length; i++)
	{
		scanf("%d", &nums[i]);
	
	}
	PreSum(nums, length);//调用PreSum函数同时传递参数
	
	return 0;
}
//第二种方法
#include
int main()
{
	int nums[100] = {0};
	int rtSum[100] = {0};
	int i = 0;//我的错误1:i未初始化
	int length = 0;
	printf("输入这组数的个数,然后依次输入这组数:\n");
	scanf("%d", &length);//我的错误2:scanf函数中出现\n
	
	for (i = 0; i < length; i++)
	{
		scanf("%d", &nums[i]);
		if (i == 0)//我的错误3:等号写成赋值
		{
			rtSum[0] = nums[0];
		}
       
		else
		{
			rtSum[i] = rtSum[i - 1] + nums[i];
		}
		printf("%d ", rtSum[i]);
	}
	return 0;
}

运行截图如下:
两种方法求一维数组前缀和_第1张图片

你可能感兴趣的:(C练习)