我想从二进制转换为十进制但转换函数不会返回任何问题的地方吗?
#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;
}
答案 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));