2015-12-29 4 views
1

Я прочитал ответы на уже заданные вопросы о суммировании массивов и до сих пор не вижу, где я ошибался. Я пытаюсь суммировать массив. Код, который я написал, дает мне результат, просто не правильный! Это мой код:Суммирование массива целых чисел в C

int main() { 
    int x; 
    scanf("%d",&x); 
    int array[x]; 
    int sum = 0; 
    for (int i = 0; i < x; i++) { 
     scanf("%d", &array[i]); 
    } 
    for (int i = 0; i < x; i++) { 
     sum += sum + array[i]; 
    } 
    printf("%d\n", sum); 
    return 0; 
} 

Может ли кто-нибудь увидеть, где я ошибся?

Благодаря

+6

суммы + = массив [I] – bruceg

+1

'суммы = сумма + массив [I];' или 'сумму + = массив [я]' – dotctor

+2

Что случилось с этим вопросом? Это был справедливый вопрос. Пожалуйста, остановите опрошенных людей только потому, что вам не нравится этот вопрос. – Michi

ответ

1

Вы должны либо написать sum += array[i]; или sum = sum + array[i];. Как это написано, вы не вычисляете сумму значений (за исключением тривиальных случаев, таких как 0 и 1).

0

Надеется, что это помогает мне объяснить различные шаги через комментарии:

#include <stdio.h> 

/* 
    Good practice to use a symbolic name to represent 
    the number of elements in an array that way if you 
    have to change the number of elements you just have 
    to do it here. 
*/ 
#define NO_OF_ELEMENTS 5 

int main() 
{ 
    // Declare variables and initialize them to 0. 
    int i = 0, sum = 0; 
    int array[NO_OF_ELEMENTS] = {0}; // Initializes all elements to 0. 

    for(i = 0; i < NO_OF_ELEMENTS; i++) 
    { 
     printf("Enter number %d: ", i + 1); // +1 so i doesnt appear as 0 on first loop. 
     scanf("%d", &array[i]); 
     sum += array[i]; // Calculate sum. 
    } 

    printf("Sum of elements: %d", sum); // Display sum. 

    return 0; 
} 
+2

Я надеюсь, что OP узнает из вашего прокомментированного кода, но его код реализует другую семантику: первый вход - это количество дополнительных входов для суммирования. Если вы собираетесь опубликовать образец кода, сделайте его подходящим для потребностей OP. Я согласен, что неразумно использовать VLA из неконтролируемого размера, введенного пользователем ... но также неверно проверять возвращаемое значение 'scanf'. – chqrlie