Условные операторы: определить k-ую цифру в последовательности, в которой выписаны подряд степени 10 - C (СИ)

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

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

Дано натуральное к. Определить к-ую цифру в последовательности 1101001000... в которой выпмсаны подряд степени 10.

Решение задачи: «Условные операторы: определить k-ую цифру в последовательности, в которой выписаны подряд степени 10»

textual
Листинг программы
#include "stdio.h"
 
int digit(int k)
{
    int i;
    for( i = 1; k > 0; ++i ) {
        k -= i;
    }
    return k == 0;
}
 
int main(void)
{
    const char* digits[] = {
        "zero",
        "one"
    };
 
    int k;
 
    while( 1 ) {
        printf("Enter number: ");
        scanf("%d", &k);
        if( k < 0 ) { break; }
        k = digit(k);
        printf("Digit: %s\n", digits[k]);
    }
 
    return 0;
}

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

  1. Подключаем стандартную библиотеку ввода-вывода
  2. Создаем функцию digit(int k), которая принимает целочисленный аргумент k
  3. В функции используется цикл for для вычисления k-ой цифры в последовательности, в которой выписаны подряд степени 10
  4. Внутри цикла вычитаем из k текущую степень 10, пока k не станет равным нулю
  5. Возвращаем значение k, равное нулю, когда цикл закончится
  6. В функции main() создаем массив строк digits[] со значениями zero и one
  7. Запрашиваем у пользователя ввод целого числа и сохраняем его в переменной k
  8. Если k меньше нуля, то выходим из программы с помощью оператора break
  9. Вызываем функцию digit(k) и присваиваем результат переменной k
  10. Выводим на экран строку Digit: %s\n, где %s - это заменяемое место, на которое помещается значение переменной k
  11. Повторяем шаги 7-10 до тех пор, пока пользователь не введет число меньше нуля
  12. Возвращаем 0, чтобы указать, что программа успешно завершилась

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

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