Написать рекурсивную функцию перевода натурального числа из 10 в 16 системы счисления - C (СИ)
Формулировка задачи:
Написать рекурсивную функцию перевода натурального числа из десятичной системы счисления в 16-ричную.
Решение задачи: «Написать рекурсивную функцию перевода натурального числа из 10 в 16 системы счисления»
textual
Листинг программы
- #include <stdio.h>
- void hexprint(unsigned n) {
- if ( n ) {
- hexprint(n >> 4);
- printf("%c", "0123456789abcdef"[n & 0xf]);
- }
- }
- int main(void) {
- unsigned n;
- while ( printf("Num: ") && scanf("%u", &n) == 1 && printf("Hex: ") ) {
- if ( ! n )
- printf("0\n");
- else {
- hexprint(n);
- printf("\n");
- }
- }
- }
Объяснение кода листинга программы
В этом коде написана функция hexprint
, которая рекурсивно выводит натуральное число в шестнадцатеричной системе счисления.
Алгоритм работы функции hexprint
следующий:
- Если число больше или равно 16, то функция вызывает саму себя, передавая в качестве аргумента число, полученное путем сдвига числа на 4 бита вправо (для первого вызова сдвиг будет на 0 битов).
- После этого функция выводит в шестнадцатеричной системе счисления единицу или ноль в зависимости от значения последнего бита числа.
- Если число меньше 16, то функция просто выводит его.
В функции
main
пользователю предлагается ввести натуральное число, которое затем преобразуется в шестнадцатеричную систему счисления с помощью функцииhexprint
. После этого пользователю предлагается ввести еще одно число и т.д. Полный список действий: - Ввод числа с клавиатуры.
- Преобразование числа в шестнадцатеричную систему счисления с помощью функции
hexprint
. - Вывод результата в консоль.
- Предложение пользователю ввести еще одно число и повторить процесс.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д