我该如何操作数组?

时间:2018-08-14 23:30:51

标签: c arrays

我有一个数组

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

有任何提示吗? 我可以对输入和输出数组使用辅助功能,这有帮助吗?

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

Demo.