我写这个程序是为了把十进制整数转换成二进制形式。但是,当输入大于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 > 1num = 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/

10-12 12:46
查看更多