我需要创建一个对我的数组求和的函数,该函数用随机值填充。我的函数只返回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;
}
答案 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
。