把一个二进制数转化为十进制数。
第一行一个正整数 n\ (1<= n<= 30)n (1≤n≤30),表示二进制数的长度。
第二行一个二进制数。
输出一个整数,表示对应的十进制数。
Sample Input
5 10101
Sample Output
21
#include<stdio.h> #include<math.h> int main() { int n,sum=0;//定义sum为总和 char b[999];//随便定义了一个较大的数组 int i; scanf("%d",&n); getchar(); //getchar用于排除换行符 for(i=0;i<n;i++){ scanf("%c",&b[i]);//输入1个字符存储于b数组 } for(i=0;i<n;i++){ if(b[i]=='1'){//调用数学函数pow指数 sum=sum+pow(2,n-i-1); //发现2进制转换为10进制的规律,如1101,右边第一位是1*2^0,第二位是0*2^1, }else{ //第三位是1*2^2,第四位是1*2^3次,发现规律设计程序 sum=sum+0; } } printf("%d",sum); //输出二进制转换为10进制的数 }