使用随机值

时间:2017-01-14 18:14:26

标签: c arrays recursion sum

我需要创建一个对我的数组求和的函数,该函数用随机值填充。我的函数只返回0而不是数组的实际总和。我对数组或随机值没有多少经验,我怎样才能编写arrSum函数来给我调用数组的总和?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define SIZE 1000

int arrSum(int arr[SIZE], int b) {
    if (b < 0) {
        return 0;
    } else {
        return arr[b] + arrSum(arr, b - 1);
    }
}

int main() {
    int inputNum;
    int i;
    int arr1[SIZE];
    int sum;
    srand(time(0));

    printf("Enter an integer between 0 and 1000: ");
    scanf("%d", &inputNum);

    sum = arrSum(arr1, inputNum);
    printf("sum: %6d\n\n", sum );

    printf(" Pos   |  Val\n");
    printf("-------------\n");
    for (i = 0; i < inputNum; i++) {
        printf("%4d   |%4d\n", i, rand() % 1001);
    }
    return 0;
}

2 个答案:

答案 0 :(得分:3)

原因是最初阵列中没有值。但只有0。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 1000
int arrSum(int arr[SIZE], int b){
  if (b < 0) return 0;
 else return arr[b] + arrSum(arr, b-1);
}
 int main(){
  int inputNum;
  int i,q;
  int arr1[SIZE] = {0};
  int sum;
  srand(time(0));

   printf("Enter an integer between 0 and 1000: ");
   scanf("%d",&inputNum);

   for(q=0;q<inputNum;q++){
     arr1[q] = rand() % 1001;
    }

    sum = arrSum(arr1, inputNum);
    printf("sum: %6d\n\n", sum );

    printf(" Pos   |  Val\n");
    printf("-------------\n");
  for (i = 0; i < inputNum; i++){
   printf("%4d   |%4d\n", i,arr1[i]);
 }
  return 0;
 }

答案 1 :(得分:0)

假设b在数组索引的范围内,找到函数内部的和的逻辑是正确的。真正的问题是你的数组用随机数填充 - 它用零填充。

当你这样做时

int arr1[SIZE] = {0};

您正在将每个元素初始化为0,并且在程序期间的任何时候都不会更改它。因此,您的函数将索引0的总和返回到b,但结果是0