什么都没打印

时间:2014-03-08 14:47:10

标签: c

所以这是我想到转换过程时想到的逻辑 二进制数转换为十进制数。我似乎无法弄清楚该程序的错误是什么,它阻止它显示任何类型的输出。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n,temp,r,rev,i, ct;
    rev=0;
    printf("Enter a number in base 10");
    scanf("%d", &n);
    // n is the decimal number
    temp=n;
    while(temp>0)
    {
        r=temp%2;

        if (r==1)
            break;
        else
            ct++;
         temp/=2;
        // ct will count the number of zeros from the top
    }
    while(temp>0)
    {
        r=temp%2;
        rev=(rev*10 + r);
    }
    printf("%d", rev);

    for(i=0;i<ct;i++)
    {
        printf("%i", 0);
    }

    return 0;
}  

1 个答案:

答案 0 :(得分:0)

您的代码有多个问题:

1)ct是未初始化的变量。将其初始化为0。

2)在单循环中计算二进制的部分,需要temp=temp/2来计算二进制的下一个数字。

while(temp>0)
{
    r=temp%2;
    rev=(rev*10 + r);
    temp/=2;   // You need this
}

3)当您使用整数变量(rev)表示二进制数时,您的程序只能处理一小组整数。即使输入2047这样的小数字(取决于你的平台上二进制的LSB是1还是INT_MAX),你也会遇到整数溢出。