题目描述:
输入格式把一个二进制数转化为十进制数。
输出格式第一行一个正整数 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#include 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("%dn", s);//此时s即为所求十进制值 return 0; }



