Условные операторы: определить 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;
}
Объяснение кода листинга программы
- Подключаем стандартную библиотеку ввода-вывода
- Создаем функцию digit(int k), которая принимает целочисленный аргумент k
- В функции используется цикл for для вычисления k-ой цифры в последовательности, в которой выписаны подряд степени 10
- Внутри цикла вычитаем из k текущую степень 10, пока k не станет равным нулю
- Возвращаем значение k, равное нулю, когда цикл закончится
- В функции main() создаем массив строк digits[] со значениями
zeroиone - Запрашиваем у пользователя ввод целого числа и сохраняем его в переменной k
- Если k меньше нуля, то выходим из программы с помощью оператора break
- Вызываем функцию digit(k) и присваиваем результат переменной k
- Выводим на экран строку
Digit: %s\n, где %s - это заменяемое место, на которое помещается значение переменной k - Повторяем шаги 7-10 до тех пор, пока пользователь не введет число меньше нуля
- Возвращаем 0, чтобы указать, что программа успешно завершилась