почему здесь вывод равен 0. я новичок (опыт работы 20 дней)

#arrays #c #function #sum #arguments

Вопрос:

*я хочу скопировать введенный массив в функцию sum_of_elements в качестве аргумента, а затем суммировать все элементы массива, но я получаю вывод 0.

 #include lt;stdio.hgt;  int i, num, sum; int sum_of_elements(int arr[]) {  for (i = 0; i lt; num; i  ) {  for (i = 0; sum = 0, i lt; num; i  ) {  sum  = arr[i];  }  return sum;  } } int main() {  printf("enter number of digits you want to addn");  scanf("%d", amp; num);   int arr[num];   for (i = 0; i lt; num; i  ) {  printf("enter number %dn", i   1);  scanf("%d", amp; arr[i]);  }  int total = sum_of_elements(arr);  printf("%d", total);   return 0;  

Комментарии:

1. Потому что вы устанавливаете параметры sum = 0 после каждой итерации. (кроме того, внешний цикл бесполезен)

2. Помимо замечаний @CherryDT, также лучше i добавлять и sum локальные переменные в sum_of_elements функцию и передавать num в качестве аргумента функции. Не используйте глобальные переменные, пока не поймете, когда это удобно сделать.

Ответ №1:

Посмотрите на эту строку кода:

 for (i = 0; sum = 0, i lt; num; i  ) {  

Это сбрасывается sum до 0 в каждом цикле.

Это должно быть

 for (i = 0, sum = 0; i lt; num; i  ) {  

Но, наверное, лучше сделать это:

 sum = 0; for (i = 0; i lt; num; i  ) {  

Ответ №2:

Проблема заключалась в цикле double for в вашей функции sum_of_elements.

Удаление дополнительного цикла for устраняет ошибку.

 #include lt;stdio.hgt;  int i, num, sum; int sum_of_elements(int arr[]) {  for (i = 0; i lt; num; i  ) {  sum  = arr[i];  }  return sum; } int main() {      printf("enter number of digits you want to addn");  scanf("%d", amp; num);    int arr[num];    for (i = 0; i lt; num; i  ) {  printf("enter number %dn", i   1);  scanf("%d", amp;arr[i]);  }  int total = sum_of_elements(arr);  printf("%d", total);    return 0; }  

Комментарии:

1. u не делал sum=0 раньше для цикла.