题目描述
将一个二进制数,转换为对应的十进制数。
输入:输入一个只含有’0’和’1’的字符串,以回车结束,表示一个二进制数。该二进制数无符号位,长度不超过31。
输出:输出一个整数,为该二进制数对应的十进制数。
样例输入 Copy
100000000001
样例输出 Copy
2049
分析
二进制转化十进制,我们先看一个例子:1001转化为十进制,1*+0*+0*+1*,所以我们可以利用这样的思想进行代码编写。
程序代码
#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
char a[100];//定义一个字符数组用来存放输入的二进制数
gets(a);//读入二进制数
int x=strlen(a);//测量二进制字符串的长度
int sum=0;//sum为每一次循环的累加值
int b=x;//让b等于x
for(int i=0;i<x;i++){
sum=sum+(a[i]-'0')*pow(2,b-1);
b--;
}
printf("%d",sum);//输出转换后的十进制数
return 0;
}