码迷,mamicode.com
首页 > 其他好文 > 详细

2的次幂表示

时间:2015-03-03 23:30:36      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

 

 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 }

2的次幂表示

标签:

原文地址:http://www.cnblogs.com/LeoFeng/p/4311992.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!