Создать программу по переводу чисел из одной системы счисления в другую (рекурсия) - 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)
, чтобы приостановить выполнение программы до нажатия клавиши.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д