Problem Description
题目很简单,就是把一个二进制数转换为十进制数,然后输出。
Input Description
多组测试数据,第一行一个正整数 n (n<=1000),表示后面有 n 组测试数据,每组一行。
接下来有 n 行,每行为一个不超过32位的二进制数。
Output Description
对每组测试数据,在一行中输出对应的十进制数。
Sample Input
2
0111
1111
Sample Output
7
15
我的代码:
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
int n;
scanf("%d", &n);
char a[33];
int i, j, k;
unsigned int sum;
for (i = 1;i <= n;i++)
{
sum = 0;
scanf("%s", a);
for (j = strlen(a)-1, k=0;j >=0;j--, k++)
{
sum += (a[j]-'0') * pow(2, k);
}
printf("%u\n", sum);
}
return 0;
}
既然j从高位开始,为何k从0开始