#include<stdio.h>
#include<math.h>
int radix10(long int n);
int main()
{
long int n,dec; //定义2进制待转数和10进制转后数
printf("Input a binary number:\n");
scanf("%ld",&n);
dec=radix10(n);
printf("The number is %ld in decimal.\n",dec);
printf("The number is %o in octal.\n",dec);
printf("The number is %X in hexadecimal.\n",dec);
return 0;
}
int radix10(long int n) //转换为10进制
{
int decimalNumber = 0,i=0,remainder;
while(n!=0){
remainder = n%10; //取余数
n /=10; //剔除最后一位的数
decimalNumber += remainder*pow(2,i);
++i;
}
return decimalNumber;
}
codeblocks:
使用的编译器不一样,long int分配的大小可能有差别,你用个小的数字试下。
PS:有问题可以再问我,学习数据结构和算法、C/C++、Linux可以关注我。