#include <stdio.h> int main() { long int m; char c0[50],*c ; while(scanf("%s",c0)!=EOF){ m = 0;c=c0; while(*c) m += (m + *(c++)-'0'); printf("%d\n",m); } return 0; }
首先要说,在计算机里面不存在十进制数。我们看到的输出的十进制数,其实是C编译器把真正的二进制数的数值以十进制形式显示在屏幕上。如果说计算机里面有十进制数的话,那么BCD数可以算是一种形式的十进制数。 而题目中的字符串格式的二进制数,也就是一串的'0','1'字符;转化为整数型其实就是求得其实际数值,最后以十进制形式输出。 #include int main() { long int m; char c0[50],*c ; while(scanf("%s",c0)!=EOF){ m = 0;c=c0; while(*c) m += (m + *(c++)-'0'); printf("%d\n",m); } return 0; }