zoukankan      html  css  js  c++  java
  • 2的次幂表示

     1 #include<stdio.h>
     2 
     3 void Power(int n);
     4 
     5 int main()
     6 {
     7     int n;
     8 
     9     while(scanf("%d",&n)!=EOF) //读取正整数未出错 
    10     {
    11         Power(n);
    12         printf("\n");
    13     }
    14     
    15     return 0;
    16 }
    17 /*********************************************************************************************************
    18 ** 函数功能 : 把正整数用2的次幂表示
    19 ** 函数说明 : 利用除2取余法把十进制正整数转换为二进制数,并用递归实现把正整数用2的次幂表示, 一边递归一边输出
    20 ** 入口参数 : n : 要用2的次幂表示的正整数 
    21 ** 出口参数 : 无 
    22 *********************************************************************************************************/
    23 void Power(int n)
    24 {
    25     int i=0,j=0;
    26     int remainder; //用于记录余数 
    27     int location[32]; //用于记录除2取余法中余数1的位置 
    28     
    29     //除2取余法 
    30      while(n)
    31      {
    32         remainder=n%2; //得到除2的余数 
    33         if(remainder==1) //如果余数等于1 
    34              location[i++]=j; //记录1的位置 
    35         j++;
    36         n/=2; //正整数除以2 
    37      }
    38      
    39      //用递归实现,一边递归一边输出
    40      for(j=i-1;j>=0;j--) //倒序取余 
    41      {
    42         if(location[j]==0)
    43             printf("2(0)");
    44         else if(location[j]==1)
    45             printf("2");
    46         else if(location[j]==2)
    47             printf("2(2)");
    48         else
    49         {
    50             printf("2(");
    51             Power(location[j]); //递归 
    52             printf(")");
    53         }
    54         
    55         if(j!=0)
    56             printf("+");//如果不是最后一个就得输出 +
    57      }
    58 }
  • 相关阅读:
    面试点滴
    算法之归并排序
    博客园代码高亮样式更换-测试
    MacOS 10.12 设置找不到 任何来源 的话 这么操作 教程
    HTTP代理协议 HTTP/1.1的CONNECT方法
    Linux命令
    Linux命令
    Linux命令
    vmware虚拟机linux桥接模式设置
    GDB调试 (七)
  • 原文地址:https://www.cnblogs.com/LeoFeng/p/4311992.html
Copyright © 2011-2022 走看看