首页 > 解决方案 > 十进制到二进制的转换在某些情况下不起作用

问题描述

输入:

    Enter a decimal number: 12

输出:

    The binary number is : 1100

我应该尝试这种方式->

#include <stdio.h>
int main(void){

int input=get_input();
long long complete_integer=binary_conversion(input);
reverse_digits(complete_integer);
}
int get_input() {
int number = 0;
printf("Enter a decimal number: ");
scanf("%d",&number);
return number;
}
int binary_conversion(int number,int value) {
long long complete_integer = 0;
int base=2;

while (number != 0) {
//Take the last digit from the integer and push the digit back of complete integer
complete_integer = complete_integer * 10 + number%base;
number /= base;
}
printf("Completed integer number : %d\n",complete_integer);
return complete_integer;
}

int reverse_digits(long long complete_integer) {
    int binary = complete_integer;
    int last_digit = 0;

    while(binary != 0) {

        last_digit = last_digit * 10 + binary % 10;
        binary /= 10;
    }
    printf("The binary number is: %d",last_digit);
}

我几乎接近解决方案。但是我的系统不适用于所有条件,例如如果我提供输入

Enter a decimal number: 12

它给出了我的代码的输出,例如

Binary numbers are: 11

所以,这就是问题所在。我在哪里做错了?我该如何解决这个问题?

标签: c

解决方案


推荐阅读