繁体   English   中英

C中的十进制到二进制转换

[英]Decimal to Binary convert in C

我的简单程序无法将7转换为111(当前代码为101)。 我知道myArray[]和最后一个printf()可以改进,但下次我们可以谈谈。

int main() {
    int myDecimal, quo, rem;
    int i = 0; //counter
    int myArray[3];
    printf("Enter valid decimal number: ");
    scanf("%d", &myDecimal);

    while(quo != 1){
        quo = myDecimal / 2;
        rem =  myDecimal % 2;

        myArray[i] = rem;
        myDecimal = quo;
        i++;
    } myArray[i] = quo;

    printf("\nBinary: %d %d %d", myArray[i + 2], myArray[i + 1], myArray[i] );  
    return 0;
}

这对我来说很好。 你有正确的头文件吗? 你使用哪个编译器?

#include <stdio.h>
#include <conio.h>

int main() {
    int myDecimal, quo, rem;
    int i = 0; //counter
    int myArray[3];
    printf("Enter valid decimal number: ");
    scanf("%d", &myDecimal);

    while(quo != 1){
        quo = myDecimal / 2;
        rem =  myDecimal % 2;

        myArray[i] = rem;
        myDecimal = quo;
        i++;
    } myArray[i] = quo;

    printf("\nBinary: %d %d %d", myArray[i + 2], myArray[i + 1], myArray[i] );
    return 0;
}

产量

在此输入图像描述

我也试试这个。 如果你想要,你也可以尝试这个:)

#include <stdio.h>
#include <conio.h>

int main() {
    long myDecimal;
    long binary = 0, i = 1;
    int rem;
    printf("Enter valid decimal number: ");
    scanf("%d", &myDecimal);

    while(myDecimal != 0) {
        rem = myDecimal%2;
        myDecimal = myDecimal/2;
        binary= binary + (rem*i);
        i = i*10;
    }
    printf("Binary number is %ld",binary);
}

应该注意一些错误..

  1. 初始化数组因为转换为1,它可能是垃圾0 1
  2. 不要强迫myArray[i] = quo;
  3. 你应该照顾印刷,因为i可能有不同的长度,可能会导致不稳定的行为。
  4. 在使用之前也初始化quo ,因为它可能导致垃圾比较。
  5. 另请遵循评论中的提示,它们很有用。

     int main() { int myDecimal, quo, rem; int i = 0; //counter int myArray[3] = {0}; printf("Enter valid decimal number: \\n"); scanf("%d", &myDecimal); quo = myDecimal; while(quo > 0){ quo = myDecimal / 2; rem = myDecimal % 2; myArray[i] = rem; myDecimal = quo; i++; } printf("Binary: %d %d %d", myArray[2], myArray[1], myArray[0]); return 0; } 

按照您的逻辑使用,您需要进行较小的更改才能使其正常工作。

check.c

#include<stdio.h>

int main() {
int myDecimal, quo, rem;
int i = 0; //counter
int myArray[3];
printf("Enter valid decimal number: ");
scanf("%d", &myDecimal);
//check myDecimal whether it's above 0 after each iteration
while(myDecimal > 0){
    quo = myDecimal / 2;
    rem =  myDecimal % 2;

    myArray[i] = rem;
    myDecimal = quo; 
    i++;
} myArray[i] = quo;
//print the array in the reverse order
for(i=2;i>=0;i--){
printf("%d",myArray[i]);
}  
printf("\n");
return 0;
}

输出继电器: 在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM