C 如何操作数组?

C 如何操作数组?,c,arrays,C,Arrays,我有一个数组 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,

我有一个数组

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];
}
\define\u CRT\u SECURE\u NO\u警告
#包括
#包括
int-sumArr(int*arr,int-size);
void main()
{
int-arr[]={7,5,-8,3,4};
int i,大小,res=0;
printf(“输入数组的大小:”);
scanf(“%d”,大小(&S);
res=sumArr(arr,尺寸);
对于(i=0;i
输出应为:
7,12,4,7,11
但在我的代码中,输出是:
12,4,7,11,-8589934495819650258196502581965025819650258196502

有什么提示吗?
我可以为输入和输出数组使用辅助函数,这会有帮助吗?

您的代码中有几个错误:

  • i+1
    到达数组末尾时,需要停止求和循环
  • 你的代码知道大小;无需从最终用户处读取
  • 您需要打印
    res
    的值一次,而不是循环打印
  • <> LI>应考虑将程序打印部分移到<代码>主< <代码> > <代码> > SUMARRY <
修改非常简单:

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];
}

当您已经知道阵列的大小时,询问它是没有意义的。它有5个元素,请务必键入“5”而不是“10”。不要问,或者realloc()。你是对的。这是为动态阵列做准备。(如果有道理的话)。我确实按了5…
arr[I+1]
在循环的最后一次迭代中以及在返回语句中超出了范围。我非常感谢您的帮助!但是为什么要返回arr[size-1]?@AndrewM以避免将
i
的值“出血”到循环范围之外。
printf("sum=%d\n", res);
for (int i = 0; i < size; i++) {
    printf("arr[%d] = %d\n", i, arr[i]);
}