#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);
}
}
}