Разбор программы - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет друзья! Помогите разобраться как работает программа (как генерируется ряд 0 5 55 500... и от куда появляется ответ)
#include <stdio.h>
#include <locale.h>
 
//Дана последовательность чисел, состоящих только из цифр 0 и 5, 
//в порядке возрастания: 0 5 50 55 500 505 5000 5005 5050 и так далее. 
//Найти k-ое по порядку в этой последовательности число.
 
int main()
{
    setlocale(LC_ALL, "Rus");
    int k=0;
    int i = 1;
    int m;
    int n = 0;
    printf_s("Введите число k\nk="); 
    scanf_s("%d",&k);
    while (i < k)
    {
        n = n + 5;
        m = n;
        while (m > 0)
        {
            if (m % 10 == 5 || m % 10 == 0)
                m /= 10;
            else break;
        }
        if (m == 0)
            i = i + 1;

    }
    printf_s("k-ое по порядку число = %d\n", n);
    system("PAUSE");
    return 0;

Решение задачи: «Разбор программы»

textual
Листинг программы
    while (i < k)
    {
        n = n + 5; // Перебираем все числа с шагом 5
        m = n;
        while (m > 0)
        {
            if (m % 10 == 5 || m % 10 == 0) // если последняя цифра числа 0 или 5...
                m /= 10; // ... отбрасываем эту цифру
            else break; // иначе это число нам не подходит, выходим из цикла
        }
        if (m == 0) // если в результате все цифры отбросились,...
            i = i + 1; // ... то n - нужное нам число, увеличиваем счётчик
    }

Объяснение кода листинга программы

В данном коде решается задача поиска всех чисел, которые делятся на 5 или 10, в заданном диапазоне. Список действий следующий:

  1. Задаются начальные значения переменных:
    • i — счётчик, который будет увеличиваться на 1 при каждом найденном числе;
    • k — верхняя граница диапазона, в котором нужно искать числа;
    • n — текущее проверяемое число;
    • m — переменная, в которой будет храниться результат проверки последнего числа.
  2. Перебираются все числа в заданном диапазоне с шагом 5:
    • n = n + 5;
    • m = n;
  3. Для каждого числа (m) производится проверка на делимость на 5 или 10:
    • если последняя цифра числа 0 или 5...
    • m /= 10;
    • ... отбрасываем эту цифру.
  4. Если последняя цифра числа не 0 и не 5, то число не подходит, выход из цикла.
  5. Если в результате проверки все цифры отбросились, то число (n) подходит, увеличиваем счётчик (i).
  6. После завершения цикла, счётчик (i) будет содержать количество найденных чисел.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.667 из 5
Похожие ответы