Создать программу по переводу чисел из одной системы счисления в другую (рекурсия) - C (СИ)
Формулировка задачи:
Здравствуйте! Помогите пожалуйста выполнить задание по Си из книги Прата. Вообще нужно создать программу рекурсивную по переводу из десятичной системы исчисления в двоичную, восьмеричную и так далее до 10.
Решение задачи: «Создать программу по переводу чисел из одной системы счисления в другую (рекурсия)»
textual
Листинг программы
- char* convert(int n,int base,char* s)
- {
- if(!n) return s;
- *--s=n%base+'0';
- return convert(n/base,base,s);
- }
- void main(int argc,char* argv[])
- {
- int i,n;
- char *p,s[33]="";
- printf("n:");
- scanf("%d",&n);
- for(i=2; i<=10; i++)
- {
- p=convert(n,i,s+sizeof(s)-1);
- printf("%s base %d\n",p,i);
- }
- system("pause");
- }
Объяснение кода листинга программы
- Функция
convert
принимает три аргумента: целое числоn
, основание системы счисленияbase
и указатель на строкуs
. - Если
n
равно нулю, функция возвращает указатель на строкуs
. - В противном случае функция выполняет следующие действия:
- Делает ссылку на последний символ строки
s
и присваивает ему значение остатка от деленияn
наbase
, приведенного к целочисленному типу с основанием 10, и преобразует его в символ. - Возвращает результат рекурсивного вызова функции
convert
с аргументамиn/base
,base
и указателем на обновленную строку.
- Делает ссылку на последний символ строки
- В функции
main
определены следующие переменные:int i, n;
- для инициализации счетчика и ввода числа соответственно.char *p;
- для хранения результата работы функцииconvert
.char s[33] = ``;
- для хранения результата перевода числа в строку.
- Пользователю предлагается ввести число, после чего выполняется цикл, который итерируется от 2 до 10 и вызывает функцию
convert
для каждого значения основания системы счисления. - Результат работы функции
convert
выводится на экран вместе с значением основания системы счисления. - В конце программы вызывается функция
system(
pause)
, чтобы приостановить выполнение программы до нажатия клавиши.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д