#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 раньше для цикла.