求'的部分和;X';c中数组中的数字
你能帮我写一段代码,返回c中数组中“X”数的部分和吗 完成:求'的部分和;X';c中数组中的数字,c,C,你能帮我写一段代码,返回c中数组中“X”数的部分和吗 完成: int arr_sum( int arr[], int n )//Recursive sum of array { if (n < 0) //base case: { return arr[0]; } else { return arr[n] + arr_sum(arr, n-1); } }
int arr_sum( int arr[], int n )//Recursive sum of array
{
if (n < 0) //base case:
{
return arr[0];
}
else
{
return arr[n] + arr_sum(arr, n-1);
}
}
void sum_till_last (int *ar,int si )
{
**int sum,i;// the problem some where here
ar=(int*) malloc(si*sizeof(int));
for (i=0; i<si;i++)
{
sum=arr_sum(ar,i);
ar [i]=sum;
}
free (ar);**
}
void main ()
{
int i;
int a [5];
for (i = 0; i < 5; i++)
scanf_s("%d", &a[i]);
sum_till_last(a,5);
printf("%d\n",a[5]);
}
int-arr\u-sum(int-arr[],int-n)//数组的递归和
{
如果(n<0)//基本情况:
{
返回arr[0];
}
其他的
{
返回arr[n]+arr_和(arr,n-1);
}
}
截至最后一次的无效金额(整数*ar,整数si)
{
**int sum,i;//这里的问题在哪里
ar=(int*)malloc(si*sizeof(int));
对于(i=0;i给你:
#include <stdio.h>
int main () {
int in_arr[5] = {4,13,23,21,11};
int out_arr[5];
int p_sum =0;
int i;
for ( i=0;i<5;i++){
out_arr[i] = in_arr[i]+p_sum;
p_sum=p_sum+in_arr[i];
}
for (i=0;i<5;i++){
printf("%d", out_arr[i] );
}
}
#包括
int main(){
int in_arr[5]={4,13,23,21,11};
int out_arr[5];
int p_sum=0;
int i;
对于(i=0;i给你:
#include <stdio.h>
int main () {
int in_arr[5] = {4,13,23,21,11};
int out_arr[5];
int p_sum =0;
int i;
for ( i=0;i<5;i++){
out_arr[i] = in_arr[i]+p_sum;
p_sum=p_sum+in_arr[i];
}
for (i=0;i<5;i++){
printf("%d", out_arr[i] );
}
}
#包括
int main(){
int in_arr[5]={4,13,23,21,11};
int out_arr[5];
int p_sum=0;
int i;
对于(i=0;i我只是把它简单化了,所以很容易理解:)
我假设“n”总是等于或小于数组元素数。然后你只需打印和
#include <stdio.h>
int arr_sum( int arr[], int n ){
int i=0,SUM=0;
for(; i < n;i++){
SUM= SUM+ arr[i];
printf("%d ",SUM);
}
}
int main(void) {
int array[] = {4, 13, 23, 21, 11};
arr_sum(array,5);
return 0;
}
#包括
整数arr_和(整数arr[],整数n){
int i=0,SUM=0;
对于(;i
我只是把它简化了,让它更容易理解:)
我假设“n”总是等于或小于数组元素数。然后你只需打印和
#include <stdio.h>
int arr_sum( int arr[], int n ){
int i=0,SUM=0;
for(; i < n;i++){
SUM= SUM+ arr[i];
printf("%d ",SUM);
}
}
int main(void) {
int array[] = {4, 13, 23, 21, 11};
arr_sum(array,5);
return 0;
}
#包括
整数arr_和(整数arr[],整数n){
int i=0,SUM=0;
对于(;i
根据您的策略进行修复
#include <stdio.h>
#include <stdlib.h>
int arr_sum(int arr[], int n){
if (n == 0){//Change to this
return arr[0];
} else {
return arr[n] + arr_sum(arr, n-1);
}
}
void sum_till_last(int *ar, int si){
int sum,i;
int *temp = malloc(si * sizeof(int));//variable name ar is shadowing parameter name ar.
for(i = 0; i < si; i++){
temp[i] = arr_sum(ar, i);
if(i)
putchar(' ');
printf("%d", temp[i]);//need print out :D
}
free(temp);
}
int main(void){
int i, a[5];
for (i = 0; i < 5; i++)
scanf_s("%d", &a[i]);
sum_till_last(a, 5);
//printf("%d\n",a[5]);<-- this print only one element. and It's out of bounds element XD
}
#包括
#包括
整数arr_和(整数arr[],整数n){
如果(n==0){//则更改为
返回arr[0];
}否则{
返回arr[n]+arr_和(arr,n-1);
}
}
截至最后一次的无效金额(整数*ar,整数si){
整数和,i;
int*temp=malloc(si*sizeof(int));//变量名ar隐藏参数名ar。
对于(i=0;i //printf(“%d\n”,一个[5]);根据您的策略进行修复
#include <stdio.h>
#include <stdlib.h>
int arr_sum(int arr[], int n){
if (n == 0){//Change to this
return arr[0];
} else {
return arr[n] + arr_sum(arr, n-1);
}
}
void sum_till_last(int *ar, int si){
int sum,i;
int *temp = malloc(si * sizeof(int));//variable name ar is shadowing parameter name ar.
for(i = 0; i < si; i++){
temp[i] = arr_sum(ar, i);
if(i)
putchar(' ');
printf("%d", temp[i]);//need print out :D
}
free(temp);
}
int main(void){
int i, a[5];
for (i = 0; i < 5; i++)
scanf_s("%d", &a[i]);
sum_till_last(a, 5);
//printf("%d\n",a[5]);<-- this print only one element. and It's out of bounds element XD
}
#包括
#包括
整数arr_和(整数arr[],整数n){
如果(n==0){//则更改为
返回arr[0];
}否则{
返回arr[n]+arr_和(arr,n-1);
}
}
截至最后一次的无效金额(整数*ar,整数si){
整数和,i;
int*temp=malloc(si*sizeof(int));//变量名ar隐藏参数名ar。
对于(i=0;i //printf(“%d\n”,a[5]);现在,当我们可以看到完整的代码时,很明显问题出在sum\u-till\u last
函数中,在该函数中,您使用分配的一些新的未初始化内存覆盖传递给函数的指针
放弃分配(当然还有调用free
),并修复arr\u sum
中导致您获得arr[0]+arr[0]的逻辑错误
当i
为零时。现在当我们可以看到完整的代码时,很明显问题出在sum\u-till\u last
函数中,在该函数中,您使用分配的一些新的未初始化内存覆盖传递给函数的指针
放弃分配(当然还有对free
的调用)。并修复arr\u sum
中的逻辑错误,该错误导致arr[0]+arr[0]
在i
为零时。当在sum\u中分配内存直到最后一次时,内存未初始化,其内容不确定。您不能使用它(当您调用arr\u sum
时会执行此操作)在初始化内存之前。我还想知道,既然它用作局部变量,为什么要将ar
作为参数传递给sum\u till\u last
?现在的问题是什么?在调试器中运行它时会发生什么?另外,请尝试创建并向我们展示,包括如何实际调用sum\u till\u last
函数。同样请。当你编辑你的问题时,然后向我们展示你使用的输入,以及预期和实际的输出。最后,我假设n的基本情况应该是n当你在sum\u中分配内存直到最后一次时,内存没有初始化,它的内容是不确定的。你不能使用它(当您调用arr\u sum
时会执行此操作)在初始化内存之前。我还想知道,既然它用作局部变量,为什么要将ar
作为参数传递给sum\u till\u last
?现在的问题是什么?在调试器中运行它时会发生什么?另外,请尝试创建并向我们展示,包括如何实际调用sum\u till\u last
函数。同样请。当您编辑您的问题时,请向我们展示您使用的输入,以及预期和实际输出。最后,我假设的基本情况应该是n,因为您不能使用sizeof(arr)
获取作为函数参数传递的数组的大小。该大小将仅为指针的大小。您需要将元素数作为额外参数传递。您是对的:)对不起,我没有长时间使用C。我将更改它。您是对的,在这个新实现中,它实际上非常简单:)您不能使用sizeof(arr)
获取作为函数参数传递的数组的大小。该大小将仅为指针的大小。您需要将元素数作为额外参数传递。您是对的:)抱歉,我没有´´