c语言中二进制到十进制的转换

c语言中二进制到十进制的转换,c,binary,decimal,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 bina

我想从二进制转换为十进制,但转换函数不返回任何东西,问题出在哪里

#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;
}
#包括
#包括
#包括
int转换(intx)//从二进制到十进制转换的乐趣
int main()
{
int x;//二进制数
printf(“请输入二进制数!\n\n二进制:”;
scanf(“%d”和&x);
printf(“\n抽样:”,转换(x));
返回0;
}
整数转换(整数x)
{
int sum=0;//十进制数
int i=0;
int r;//余数
而(x!=0){
r=x%10;
总和+=r*pow(2,i);
x=x/10;
i++;
}
回报金额;
}

您应该在
main()
中更改
printf

因为要通过
printf
打印值,需要为字符
%c
%d
指定数据类型,您也可以尝试

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

二进制数是一系列的1和0(0 | 1),如果您指的是这种类型的数字,请检查下面的源代码。您可能还发现此链接很有用

#包括
#包括
#包括
int bintodec(char-bin[32]){
int-dec=0;
while(*bin){
如果((*bin!='0')&&&*bin!='1'))
break;//仅接受“0”和“1”
dec使用格式说明符%d表示整数(在本例中)
%c字符
%f用于浮点值
%s用于字符串
%lf%x表示十六进制

在这种情况下,将打印语句更改为:
printf(“\n抽样:%d”,convert(x));

您是否尝试过使用调试器单步执行它?输入/输出?顺便问一下,您是否计划处理前导0的printf(“\n抽样:,convert(x));您没有打印返回值。printf(\n抽样:%d,convert(x));正如其他人所指出的-debug.DCV。请编辑帖子并缩进代码。除了一般正确之外,这如何帮助OP解决他/她的问题?嗨,欢迎来到StackOverflow。请查看关于这个问题的评论和答案,它们可以追溯到很久以前&确实已经涵盖了您提供的内容。您将更好地寻找更多最新的问题来处理。
scanf("%i", &x);
printf("%d", x);
#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;
}