为什么这里输出为0。我是新手(20天经验)

why output is 0 here. i am a newbie (20 days experience)

*我想复制 sum_of_elements 函数中的输入数组作为参数,然后对数组的所有元素求和,但我得到输出 0.

#include <stdio.h>

int i, num, sum;
int sum_of_elements(int arr[]) {
  for (i = 0; i < num; i++) {
    for (i = 0; sum = 0, i < num; i++) {
      sum += arr[i];
    }
    return sum;
  }
}
int main() {
  printf("enter number of digits you want to add\n");
  scanf("%d", & num);

  int arr[num];

  for (i = 0; i < num; i++) {
    printf("enter number %d\n", i + 1);
    scanf("%d", & arr[i]);
  }
  int total = sum_of_elements(arr);
  printf("%d", total);

  return 0;

看这行代码:

for (i = 0; sum = 0, i < num; i++) {

这会将 sum 重置为 0 每个循环

应该是

for (i = 0, sum = 0; i < num; i++) {

但这样做可能更好:

sum = 0;
for (i = 0; i < num; i++) {

问题出在您的 sum_of_elements 函数中的双 for 循环。

删除多余的 for 循环,解决了错误。

#include <stdio.h>

int i, num, sum;
int sum_of_elements(int arr[]) {
    for (i = 0; i < num; i++) {
        sum += arr[i];
    }
    return sum;
}
int main() {
    
    
      printf("enter number of digits you want to add\n");
      scanf("%d", & num);
    
      int arr[num];
    
      for (i = 0; i < num; i++) {
        printf("enter number %d\n", i + 1);
        scanf("%d", &arr[i]);
      }
      int total = sum_of_elements(arr);
      printf("%d", total);
    
      return 0;
}