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 }
  • 相关阅读:
    Android常见问题——找不到HttpClient和okHttp的包
    linux大文件的日志查询
    ubuntu ssh连不上
    linux查询核数
    ubuntu系统安装手动分区
    计算服务器带宽
    linux命令
    打包jar 运行
    打印pdf
    运行 jar 包
  • 原文地址:https://www.cnblogs.com/LeoFeng/p/4311992.html
Copyright © 2011-2022 走看看