我写这个程序是为了把十进制整数转换成二进制形式。但是,当输入大于3时,程序将挂起。我做错什么了?
#include<stdio.h>
int main()
{
int num,q,r,bin=0,i=1;
printf("Enter a number:\t");
scanf("%d",&num);
while(q>1){
q= num/2;
r= num%2;
bin=(r*i)+bin;
i*= 10;
}
bin=(1*i)+bin;
printf("\nThe binary equivalent is: \t%d",bin);
return 0;
}
最佳答案
关于你的代码有两件事:
while(q>1){
q= num/2;
您没有初始化q,它可能进入while循环,也可能不进入while循环。
如果num只有4,那么q的值将始终为2,并且永远不会结束,并将导致无限循环。所以你应该检查
num > 0
而不是q > 1
和num = num /2
。类似于:while(num>0){
r = num%2;
num = num/2;
bin=(r*i)+bin;
i*= 10;
}
printf("\nThe binary equivalent is: \t%d",bin);
关于c - 为什么该程序不输出大于3的任何值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27763126/