题目描述:
把一个二进制数转化为十进制数。
输入格式
第一行一个正整数 n(1≤n≤30),表示二进制数的长度。
第二行一个二进制数。
输出格式
输出一个整数,表示对应的十进制数。
输入样例
5
10101
解题方法
例:11010[2进制]=1X2^4+1X2^3+0X2^2+1X2^1+0X2^0=26[10进制]
即让个位数乘2^0,十位数乘2^1,百位数乘2^2......
解题思路
首先输入一个数n表示二进制数长度,接着依次使用getchar()将这n个数字接收,将接收到的第一个数乘2^n-1,第二个数乘2^n-2...最后一个数乘2^0,将每个乘积相加即得到对应的十进制数。
运行代码
#include <stdio.h>
#include <math.h>
int main() {
char a;//接收二进制中的数字
int n, i = 1, s = 0, k;
scanf("%d", &n);
getchar();//接收多余的回车键
k = n;
while (i <= n) {//输入到第n个数停止循环
a = getchar() - '0';//减去0的ASCII值,得到a的实际值
s += a * pow(2, k - 1);//二进制转换十进制公式
k--;
i++;
}
printf("%d\n", s);//此时s即为所求十进制值
return 0;
}