Написать рекурсивную функцию перевода натурального числа из 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 следующий:

  1. Если число больше или равно 16, то функция вызывает саму себя, передавая в качестве аргумента число, полученное путем сдвига числа на 4 бита вправо (для первого вызова сдвиг будет на 0 битов).
  2. После этого функция выводит в шестнадцатеричной системе счисления единицу или ноль в зависимости от значения последнего бита числа.
  3. Если число меньше 16, то функция просто выводит его. В функции main пользователю предлагается ввести натуральное число, которое затем преобразуется в шестнадцатеричную систему счисления с помощью функции hexprint. После этого пользователю предлагается ввести еще одно число и т.д. Полный список действий:
  4. Ввод числа с клавиатуры.
  5. Преобразование числа в шестнадцатеричную систему счисления с помощью функции hexprint.
  6. Вывод результата в консоль.
  7. Предложение пользователю ввести еще одно число и повторить процесс.

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


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

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

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