Мне нужна помощь в поиске ошибки в этом коде - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь создать программу на C , чтобы определить, является ли данное число сильным числом , но оно не работает.

Я использую кодовые блоки после запуска программы, когдаЯ ввожу номер, который хочу проверить, если он не сильный, ничего не происходит!без сбоев, без ошибок, без закрытия окна cmd ничего, я не знаю, что я сделал не так.

#include <stdio.h>

int main(){

int i, j, k, n, m, x=1, y=0;

printf("Enter the number: ");
scanf(" %d", &n);
k=n;

for(i=n; i>=1; ) {
    m=n%10;
    for(j=m; j>=1; j--) {
        x*=j;
    }
    y+=x;
    n/=10;
}
if(y==k)
    printf("number is strong");
else
    printf("number is not strong");

return 0;
 }

1 Ответ

0 голосов
/ 02 мая 2019

Вы должны перебирать цифры n. Вы должны делить i на 10 каждый раз в цикле, а не n.

Вам также необходимо сбросить x на 1 для каждой цифры. В противном случае вы умножите факториал новой цифры на предыдущие факториалы.

for(i=n; i>=1; i/=10) {
    m=i%10;
    x = 1;
    for(j=m; j>=1; j--) {
        x*=j;
    }
    y+=x;
}

Общая схема большинства for циклов:

  • инициализировать переменную
  • проверить эту переменную
  • Используйте переменную внутри цикла
  • обновить эту переменную

Иногда вы не используете переменную, если это просто счетчик. Но здесь вам нужно его использовать, потому что это значение, последнюю цифру которого вы хотите получить. Инициализация i с последующим обновлением n не следует шаблону.

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