把一个二进制数转化为十进制数。
输入格式
第一行一个正整数 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进制的数
}