Итак, я написал этот код, но цикл не работает

#c

#c

Вопрос:

Итак, мне дали эту задачу, в которой я должен вычислить и решить, является ли число (от 1 до 100) особенным или нет. Если сумма цифр умножается на 4 и результат равен исходному числу, то это число является особым числом. Итак, я написал код. Но цикл не работает. Вне любого цикла код работает без каких-либо проблем, когда переменная number может иметь любое значение. В чем может быть проблема? Заранее благодарю.

 #include <stdio.h>

int main(void)
{
    int number;
    int originalnumber;

for(number=1;number<=100;number  )
{           
    originalnumber = number;

    int sum = 0, resu<

    while(number>0)
    {
        result = number % 10;
        sum = sum   resu<
        number = number / 10;
    }

    if((sum*4)==originalnumber)
    {
        printf("n%d is special number.", originalnumber);
    }
    else
    {
        printf("n%d is not special number.", originalnumber);
    }
}
}
 

Комментарии:

1. Если какой-либо ответ ответил на ваш вопрос, пожалуйста, подумайте о том, чтобы принять его (галочка жадности слева от ответа). Это даст некоторую репутацию вам и ответчику и пометит вопрос как ответ.

Ответ №1:

Вы изменяете переменную, которая повторяет цикл: number .

Как и в случае с originalnumber , также создайте копию number , чтобы вы могли изменять ее, не вмешиваясь в итерацию цикла.

Ответ №2:

Проблема в том, что вы изменяете переменную «number», которая используется в цикле for. Вы могли бы просто поменять местами originalnumber в цикле, как показано ниже, и присвоить номер последовательности:

 #include <stdio.h>

int main(void)
{
    int number;
    int originalnumber;

    for(originalnumber=1;originalnumber<=100;originalnumber  )
    {           
        number = originalnumber;

        int sum = 0, resu<

        while(number>0)
        {
            result = number % 10;
            sum = sum   resu<
            number = number / 10;
        }

        if((sum*4)==originalnumber)
        {
            printf("n%d is special number.", originalnumber);
        }
        else
        {
            printf("n%d is not special number.", originalnumber);
        }
    }
}
 

Ответ №3:

Не используйте переменную ‘number’ в цикле while. Модификация переменной, которая повторяет внешний цикл, вызывает здесь ненормальное поведение.

Ответ №4:

Видите, вы меняете значение number в цикле while, и каждый раз оно становится равным нулю. итак, присвоите числовое значение новой переменной, а затем внесите в нее изменения.

 #include <stdio.h>

int main(void)
{
int number;
int originalnumber;

for(number=1;number<=100;number  )
{           
originalnumber = number;

int sum = 0, resu<

while(originalnumber >0)
{
    result = originalnumber % 10;
    sum = sum   resu<
    originalnumber = originalnumber / 10;
}

if((sum*4)==number)
{
    printf("n%d is special number.", number);
}
else
{
    printf("n%d is not special number.", number);
}
 

}
}