sum
никогда не изменяется, потому что вы никогда не изменяете его.
Кроме того, у вас есть неопределенное поведение, потому что индекс цикла отключен на единицу, поэтому вы заставляете scanf()
писать за конец массива arr
, который по совпадению может быть местом хранения sum
, это объясняет, почему вы получаете Sum=4
, значение последнего ввода.
C-массивы основаны на 0
: используйте это:
for (i = 0; i < 5; i++)
Необходимо также включить требуемые стандартные заголовочные файлы и проверить возвращаемое значение scanf()
, чтобы избежать неопределенного поведения при неверном вводе.
Вот исправленная версия:
#include <stdio.h>
int main() {
int a[5], i, sum;
sum = 0;
printf("Sum=%d\n", sum);
for (i = 0; i < 5; i++) {
printf("\nInput %d: ", i);
if (scanf("%d", &a[i]) != 1)
break;
sum += a[i];
printf("Sum test=%d\n", sum);
}
printf("\nSum=%d\n", sum);
return 0;
}