2016-10-13 4 views
0

Моя программа запрашивает у пользователя ввод целого числа и добавляет сумму цифр.Добавление цифр целого числа в C

#include <stdio.h> 

int main (void) 
{ 
    int inputNum, sum; 

    // Gets the inputNum 
    printf("Type in a positive integer, and this program\nwill calculate the sums of the digits: "); 
    scanf("%i", &inputNum); 

    do 
    { 
    sum += (inputNum % 10); 
    inputNum /= 10; 
    } while (inputNum != 0); 

    printf("Your sum is: %i\n", sum); 
} 

Но каждый раз, когда он положил целое число, я получаю номер около 36000. Я видел еще один пример онлайн, который использовал% D, поэтому я попытался это, но это не имело никакого значения. Я только с неправильной стороны с самого начала? Заранее спасибо.

+3

Вы никогда не инициализировали 'sum'; он может начинаться со значения '1,000,000' – abelenky

+0

Если ваш компилятор не предупредил вас о вашей ошибке, выбросьте его. –

+0

@ н.м .: Некоторые компиляторы не выполняют анализ потока данных для ошибок инициализации, если оптимизация не включена. – jxh

ответ

1

Вы никогда не инициализировали sum; она вполне может быть, начиная со значением 1000000

Вобще:

int inputNum, sum = 0; 
0

Первая вещь, инициализировать сумму до 0. Попробуйте тогда. int sum = 0;

0

ли это:

int inputNum, sum = 0; 

т.е. вы должны инициализировать sum.

Поскольку в C значение неинициализированной переменной не может быть определено. Значение, которое вы получаете, это мусор из памяти.

+1

Использование '% i' не является ошибкой. Что заставило вас поверить, что OP не хотел использовать возможности'% i '' в 'scanf'? Что касается' printf': '% d' и'% i' полностью эквивалентны. – AnT

+0

Вы правы. –

-1

Инициализировать сумму как ноль. переменные int не имеют значения по умолчанию, если оно не является глобальной или статической переменной. как (нестатическая) локальная переменная внутри функции, она имеет неопределенное значение.