用c语言从二进制转换为十进制

时间:2015-11-13 09:22:35

标签: c binary decimal

我想从二进制转换为十进制但转换函数不会返回任何问题的地方吗?

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

int convert(int x);   //fun to convert from binary to decimal
int main()
{
    int x;  //binary number
    printf("plz enter binary number !\n\nbinary: ");
    scanf("%d",&x);
    printf("\ndecimal: ",convert(x));
    return 0;
}

int convert(int x)
{
   int sum=0;   //decimal number
     int i=0;
     int r;  //remainder

   while(x!=0){
   r=x%10;
   sum+=r*pow(2,i);
   x=x/10;
   i++;
      }
   return sum;
}

4 个答案:

答案 0 :(得分:1)

您也可以尝试

scanf("%i", &x);
printf("%d", x);

答案 1 :(得分:0)

您应该更改printf中的main()

printf("\ndecimal: %d",convert(x));// add %d

由于要按printf打印值,需要为数据类型int %d填充字符%c

答案 2 :(得分:0)

二进制数是一系列的1和0(0 | 1),如果您指的是这种类型的数字,请查看下面的源代码。您可能还会发现此链接很有用http://www.math.grin.edu/~rebelsky/Courses/152/97F/Readings/student-binary

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


int bintodec(char bin[32]){

    int dec=0;
    while(*bin){

        if((*bin!='0') && *bin!='1')
            break;// only accept '0' & '1'

        dec<<=1;
        dec+=*bin-'0';
        bin++;
    }
    return dec;
}

int main(){

    char bin[32]="";  //i believe binary numbers are series of '1' and '0'

    printf("plz enter binary number !\n\nbinary: ");
    scanf("%s",bin);
    printf("\ndecimal: %d\n",bintodec(bin));
    return 0;
}

答案 3 :(得分:0)

使用格式说明符 %d (对于整数)(在这种情况下) %c (字符) %f (浮动值) %s (字符串) %lf (两倍) %x (十六进制)

在这种情况下,将print语句更改为: printf(“ \ ndecimal:%d”,convert(x));