我正在尝试制作一个代码,用于在不使用迭代的情况下将小数转换为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);
;
}
答案 0 :(得分:1)
删除else
。测试必须连续应用。如果只有一个当然适用,那么你只能获得2的幂。
当然,将二进制数表示为小数是一个非常糟糕的主意 - 但出于打印目的,它只能起作用。