Написать рекурсивную функцию перевода натурального числа из 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
. - Вывод результата в консоль.
- Предложение пользователю ввести еще одно число и повторить процесс.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д