把一个二进制数转化为十进制数。
输入格式第一行一个正整数 n (1le nle 30)n (1≤n≤30),表示二进制数的长度。
第二行一个二进制数。
输出格式输出一个整数,表示对应的十进制数。
Sample Input
5 10101
二进制字符串转十进制的思路
把二进制字符串从最高位(左边第一位)开始用商乘以2再加余数(该位的数字),如此循环,左边第一位的商肯定是0。
#include#include int main() { int n, i, s = 0;//定义变量n:表示二进制长度,s表示最终要求的十进制数 char a[30]//定义一个数组 scanf("%d", &n);//输入二进制长度 getchar(); for (i = 0; i < n; i++) { scanf("%c", &a[i]);//输入数组 } for (i = 0; i < n; i++) { if (a[i] == '1') { s = s + pow(2, n - i - 1);//如果数组中的数为1,套用公式 } else { s = s + 0;//如果为0,s不变 } } printf("%d", s);//输出十进制数 return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)