算法思想:把用户的二进制数(1011)当作十进制进行处理,分别拆开成1    0    1     1四个数,然后用

2*(2*((1*2)+0)+1)+1 = 11 得出十进制的值为11

模块设计:

  1. 除10取余函数:1011通过%10(除10取余),可得到1   1   0    1(逆序)
  2. 计算十进制:循环处

程序代码:

#include <stdio.h>
 #include <stdlib.h>
 
 int main(int argc, char *argv[]) {
     while(1)
     {
         printf("enter num:");
         int a;
         scanf("%d",&a);
         int b[20];
         int i=0;
         while(a)//二进制数拆分 
         {
             b[i]=a%10;
             a=a/10;
             i++;    
         }
         int j;
         for(j=0;j<i;j++)//输出拆分结果,是否符合预期(逆序) 
         {
             printf("%d\n",b[j]);
             if(b[j]!=0&&b[j]!=1)
             {
                 printf("error\n");
                 return 0;
             }
         }
         int c=0;
         int k;
         for(k=i-1;k>=0;k--)//计算十进制 
         {
             if(k==0)
                 c=c+b[k];
             else
                 c=(c+b[k])*2;
         }
         printf("c=%d\n",c);
     }
     return 0;
 }

 

posted on 2013-06-02 17:00  欧小弟  阅读(234)  评论(0编辑  收藏  举报