c语言 - 这个十进制到二进制转换器有什么问题(无迭代)



我正在尝试制作一个代码,用于在不使用迭代的情况下将十进制转换为 n<16 的二进制。但输出始终为 1000、100、10 或 1。代码有什么问题?谢谢

#include <stdio.h>
int main(void){
int decimal, bin = 0;
printf("Enter number to convert to base 2: ");
scanf("%d", &decimal);
if(decimal >= 8){
    bin += 1000;
    decimal = decimal%8;
}else if(decimal >= 4){
    bin += 100;
    decimal = decimal%4;
}else if(decimal >= 2){
    bin += 10;
    decimal = decimal%2;
}else if(decimal >= 0){
    bin += decimal%2;
}
printf("%5d", bin);
;
}

删除else的。测试必须依次应用。当然,如果只有一个适用,你只能得到 2 的幂。

当然,将二进制数表示为小数是一个非常糟糕的主意 - 但只有出于打印目的,它才能工作。

最新更新