Почему цикл while создает ошибку в моем коде? - PullRequest
0 голосов
/ 19 января 2019

Я пытаюсь выполнить следующий код. Код ниже работает хорошо, когда я заменяю while (n> 9) на if (n> 9). Может кто-нибудь объяснить мне, почему цикл while вызывает эту ошибку ??

Вот код

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
    int n, digit, i, sum = 0;
    scanf("%d", &n);
    for (i = 0; i < 5; i++)
      { 
        digit = n % 10;
          while (n > 9)
           {
            n = (n - digit) / 10;
           }
        sum = sum + digit;
     }
    printf("%d", sum); 
    return 0;
} 

1 Ответ

0 голосов
/ 19 января 2019
  1. после применения предложенных исправлений к коду,
  2. и применение аксиомы: только одно утверждение на строку и (самое большее) одно объявление переменной на оператор.
  3. следующий предложенный код выполняет желаемую функциональность результаты: чисто компилируется правильно проверяет и обрабатывает ошибки вызов строки формата printf() заканчивается на '\ n', поэтому данные сразу выводятся на терминал отображает соответствующий способ извлечь цифры из int и собрать сумму этих цифр

и теперь предложенный код:

#include <stdio.h>

int main( void ) 
{
    int n;
    int digit;
    int  sum = 0;

    if( scanf("%d", &n) != 1 )
    {
        fprintf( stderr, "scanf for initial value failed" );
        return 1;
    }

    while( n )
    { 
        digit = n % 10;  // extract a digit
        n /= 10;         // reduce the working number
        sum = sum + digit;
    }

    printf("%d\n", sum);   // use '\n' so value immediately output to terminal
    return 0;
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...