1

我正在尝试编写一个代码,用于在不使用迭代的情况下将 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);
;
}
4

1 回答 1

1

去掉else's。测试必须连续应用。如果只有一个适用,当然你只能得到 2 的幂。

当然,将二进制数表示为十进制是一个非常糟糕的主意——但仅出于打印目的它才有效。

于 2013-09-21T14:45:03.607 回答