Логотип сайта

Подготовка к ЕГЭ и ОГЭ

  • Главная
  • Информация о сайте
  • Сочинения ЕГЭ
  • Выпускное сочинение
  • Поиск по сайту

Перевод из десятичной системы в двоичную. Си/Си++

Категория: Язык программирования: Си/Си++

На данной странице расположены три функции языка си/си++, которые переводят десятичное число в двоичную систему счисления. Программы представлены как отдельно, так и в виде одной программы с тремя функциями с последующим вызовом их в main. Все программы проверены в Visual Studio.


Функция первая: реализация идеи при помощи массива (Си)



#include "stdio.h"
#include "conio.h"
#include "locale.h"

int main(int argc, char* argv[])
{
 setlocale(0, "rus");
 int a, i, mass[99];
 for (i = 0; i < 99; i++)
 {
 mass[i] = 0;
 }
 printf("Введите число: ");
 scanf_s("%d", &a);
 i = 0;
 while (a != 0)
 {
 if (a % 2 == 0)
 {
 mass[i] = 0;
 a = a / 2;
 }
 else
 {
 mass[i] = 1;
 a = a / 2;
 }
 i++;
 }
 i = i - 1;
 for (; i >= 0; i--)
 printf("%d", mass[i]);
 _getch();
 return 0;
}
 

Пример работы программы:

 


Реализация программы при помощи побитового сдвига вправо (Си):


Данная программа очень схожа с предыдущей, отличие лишь в создании собственной функции и вызова его в main, а также использование побитового сдвига вправо вместо деления на 2.


#include "stdio.h"
#include "conio.h"
#include "locale.h"

int my_func(int a)
{
 int i, mass[99];
 for (i = 0; i < 99; i++)
 {
 mass[i] = 0;
 }
 
 i = 0;
 while (a != 0)
 {
 if (a % 2 == 0)
 {
 mass[i] = 0;
 }
 else
 {
 mass[i] = 1;
 }
 a = a >> 1;
 i++;
 }
 printf("В двоичной системе: ");
 i = i - 1;
 for (; i >= 0; i--)
 printf("%d", mass[i]);
 _getch();
 return(0);
}
int main(int argc, char* argv[])
{
 setlocale(0, "RUS");
 int a;
 printf("Введите целое десятичное число: ");
 scanf_s("%d", &a);
 my_func(a); //передаем в функцию число, которое нужно перевести
}
 

Пример работы программы:

 


Реализация программы при помощи рекурсивной функции (Си++):



#include <iostream>
#include "locale.h"

using namespace std;

void Func(int n) {

 if (n != 0)
 Func(n / 2);
 else return;

 printf("%d", n % 2);
 return;
}

int main() {
 setlocale(0, "RUS");
 int n;
 cout << "Введите десятичное число: ";
 cin >> n;
 Func(n);
 return 0;
}
 

В нижний код собраны все предыдущие функции в одну программу с вызовом их в основной функции main. Программа на вход принимает 3 различных десятичных числа и считает их соответственно по алгоритмам, которые заданы в main.


#include <iostream>
#include "conio.h"
#include "locale.h"


int my_func2(int a)
{
 int i, mass[99];
 for (i = 0; i < 99; i++)
 {
 mass[i] = 0;
 }
 i = 0;
 while (a != 0)
 {
 if (a % 2 == 0)
 {
 mass[i] = 0;
 a = a / 2;
 }
 else
 {
 mass[i] = 1;
 a = a / 2;
 }
 i++;
 }
 i = i - 1;
 for (; i >= 0; i--)
 printf("%d", mass[i]);
 return 0;
}

void rekurs(int a)
{
 if (a != 0)
 rekurs(a / 2);
 else return;
 printf("%d", a % 2);
 return;
}

int my_func(int a)
{
 int i, mass[99];
 for (i = 0; i < 99; i++)
 {
 mass[i] = 0;
 }
 i = 0;
 while (a != 0)
 {
 if (a % 2 == 0)
 {
 mass[i] = 0;
 }
 else
 {
 mass[i] = 1;
 }
 a = a >> 1;
 i++;
 }
 i = i - 1;
 for (; i >= 0; i--)
 printf("%d", mass[i]);
 return(0);
}

int main() {
 setlocale(0, "RUS");
 int a;
 scanf_s("%d", &a);
 printf("Первое число в двоичной:");
 rekurs(a);
 printf("\n");
 scanf_s("%d", &a);
 printf("Второе число в двоичной:");
 my_func(a);
 printf("\n");
 scanf_s("%d", &a);
 printf("Третье число в двоичной:");
 my_func2(a);
 _getch();
 return 0;
}
 

 

Похожие материалы
  • Перевод текста Erdbeben. Немецкий язык
  • Перевод текста: Weit reichende Veränderungen..
  • Напишите программу, печатающую значение EOF (Си)
  • Даны целые числа K и N (N > 0).Вывести N раз число K...
  • Перемножение матриц (Си/Си++)
  • Сумма и умножение (Длинная арифметика) (Си/Си++)
  • Overseas trade has been very important...Перевод текста
  • 1
  • 2
  • 3
  • 4
  • 5
Оценка: 3.9 из 11

💬 Чат ЕГЭ В Telegram. Вступить

Copyright Vopvet.Ru © 2025 Хостинг от uWeb