Перевод из 10 системы счисления в 2 - C (СИ) (71772)
Формулировка задачи:
День добрый, помогите пожалуйста написать такую программу, я попробовал, но она не работает, не совсем понимаю почему.
Листинг программы
- #include "stdio.h"
- int main(void)
- {
- int x; int y,n=0;
- printf("Введите число х: ");
- scanf("%d", x);
- while( x > 0 ) {
- y = (x % 2);
- n = y + n;
- x = int(x/2);
- }
- printf("%d", n);
- getchar();
- return 0;
- }
Решение задачи: «Перевод из 10 системы счисления в 2»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- const int size = sizeof(unsigned int)*8;
- unsigned int decNum, i;
- char binNum[size] = {0};
- printf("Enter: ");
- scanf("%d",&decNum);
- for (i=0; i<size; i++)
- {
- binNum[i] = decNum % 2;
- decNum /= 2;
- }
- for (int i=size-1; i>=0; i--)
- {
- printf("%d",binNum[i]);
- if (i%8==0)
- printf(" ");
- }
- printf("\n");
- system("pause");
- return 0;
- }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Объявляем переменные:
- decNum - переменная для ввода десятичного числа
- i - счётчик цикла
- binNum - массив для хранения двоичного представления числа
- Выводим приглашение для ввода числа
- Считываем десятичное число с помощью функции scanf
- Инициализируем массив binNum нулями
- Запускаем цикл, который будет перебирать все биты числа, начиная с старшего (правого) бита
- В каждой итерации цикла присваиваем соответствующему биту массива binNum значение остатка от деления decNum на 2
- Делим decNum на 2 для получения следующего бита
- После завершения первого цикла выводим двоичное представление числа, сначала проверяя, не будет ли остаток от деления на 8 (что соответствует сдвигу на 3 бита вправо) больше или равен 8
- В конце программы добавляем паузу с помощью функции system, чтобы программа не закрылась сразу после вывода результата
- Возвращаем 0, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д