Перевести число из десятичной системы счисления в восьмеричную (цикл do/while) - C (СИ)
Формулировка задачи:
1. Перевести число из десятичной системы счисления в восьмеричную, используя цикл while ( do.. while)
Решение задачи: «Перевести число из десятичной системы счисления в восьмеричную (цикл do/while)»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int main() {
int n,b,k,c;
printf ("n=\n");
scanf ("%d",&n);
k=1;
c=0;
while (n>0)
{
b=n%8; //остаток от деления на 8
n/=8; //каждый раз будет делиться на 8, уменьшаясь
c+=b*pow(10,k-1); //остаток от деления умножить на 10 в степени к-1, т.е. последнее число - 10^0, следующее число - 10^1 и т.д.
b=0; //всегда будет обнуляться, чтобы в переменную можно было вновь занести остаток при делении на 8
k++; //будет увеличиваться на один(переменная для степени при составлении числа)
}
printf ("c=%d\n",c);
system("pause");
return 0;
}
Объяснение кода листинга программы
- В начале программы подключаются необходимые библиотеки (stdio.h и stdlib.h).
- Далее объявляются переменные: n, b, k, c.
- С помощью функции printf выводится запрос на ввод числа (n).
- С помощью функции scanf считывается введенное число и сохраняется в переменной n.
- Инициализируются переменные k=1 и c=0.
- Запускается цикл while, который выполняется до тех пор, пока n больше 0.
- Внутри цикла:
- Вычисляется остаток от деления n на 8 и сохраняется в переменной b.
- n делится на 8 (по модулю 8), и результат сохраняется в переменной n.
- К числу c добавляется произведение b на 10 в степени k-1.
- Переменная b обнуляется.
- Переменная k увеличивается на 1.
- После окончания цикла выводится значение переменной c.
- Запускается функция system(
pause), которая ожидает нажатия клавиши для продолжения работы программы. - Программа возвращает 0, что означает успешное выполнение.