我有一个数组
LEFT
我必须将同一数组更新为
RIGHT
我的代码:
arr[]={7,5,-8,3,4};
输出应为:arr[]={7,12,4,7,11};
但是在我的代码中,输出为:#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int sumArr(int *arr, int size);
void main()
{
int arr[] = { 7,5,-8,3,4 };
int i, size, res = 0;
printf("Enter Size Of The Array:");
scanf("%d", &size);
res = sumArr(arr, size);
for (i = 0; i < size; i++)
{
printf("%d\n", res);
}
}
int sumArr(int *arr, int size)
{
int i;
for (i = 0; i < size; i++)
{
arr[i+1]+= arr[i];
printf(" %d \n", arr[i + 1]);
}
return arr[i+1];
}
有任何提示吗? 我可以对输入和输出数组使用辅助功能,这有帮助吗?
答案 0 :(得分:3)
您的代码中有几个错误:
i+1
到达数组末尾,您需要停止求和循环res
的值,而不是循环打印main
移到sumArray
。修改非常简单:
int sumArr(int *arr, int size) {
// Stop when i+1 reaches size; no printing
for (int i = 0; i+1 < size; i++) {
arr[i+1]+= arr[i];
}
return arr[size-1];
}
在main
中打印:
printf("sum=%d\n", res);
for (int i = 0; i < size; i++) {
printf("arr[%d] = %d\n", i, arr[i]);
}