Нет вывода, когда я передаю "несчастливое" число (например, 21) - PullRequest
0 голосов
/ 12 июля 2020

Программа перестает работать всякий раз, когда я ввожу число « unhappy » и ничего не печатаю

Вот результат:

  1. Когда я введите счастливое число

  2. When I enter the unhappy number (then output screen even after 2 minutes of time)

#include <stdio.h>

//This is a program to check if a number is happy or not
int main()
{
    int n, r, sum, tmp; // n = number, r = remainder
    printf("Enter a number:");
    scanf("%d", &n); // input number
    tmp = n;

    do {
        sum = 0;
        while (tmp > 0) {
            r = tmp % 10;
            sum += r*r;
            tmp = tmp / 10;
        }
        tmp = sum;
    } while (tmp > 1);

    if (sum == 1) {
        printf("%d is a happy number",n);
    } else {
        printf("%d is not a happy number",n);
    }

    return 0;
}

1 Ответ

1 голос
/ 12 июля 2020

Вы вводите бесконечное l oop, потому что ваше условие в do-while l oop неверно, попробуйте: while(tmp != 1 && tmp != 4);

PS, вы должны научиться отлаживать, когда вы программа не отвечает, первое, что вы должны учитывать, это бесконечный l oop. Никогда не обвиняйте компилятор :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...