正文

stu(1162)2005-08-30 20:18:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/elva6401/4274.html

分享到:

#include <stdio.h> #include <math.h> int change(int test);    /* 判定函数 测试TEST */ int fun(int num);        /* 判断NUM中可以找到最大的2^n 返回n */ int nn(int n);           /* 返回2^n的大小 */ void main() {      int n=0;           scanf("%d",&n);           while(n)           {               change(n);               printf("\n");               scanf("%d",&n);           }                 } int nn(int n) {   int i,sum=1;      for(i=0;i<n;i++)       sum=sum*2;       return sum;   } int fun(int num)     {         int i=0;     if(num<2)     {       return 0;      }     else     i++;     return i+fun((int)(num/2));      } int change(int test) {       int n;      if(test==2)      {         printf("2");       }      else if(test==1)      {         printf("2(0)");      }      else if(test==3)      {          printf("2+2(0)");      }      else if(test>3)      {          printf("2(");          n=fun(test); /* 根据N的大小用函数求出2(N)的N的展开情况 重复调用CHANGE 函数 */          change(n);   /* 调用自身 */          printf(")");           if(test-nn(n)>0)           {               printf("+"); /* 如果TEST 在经过一次展开之后余下部分仍然大于0 那么输出一个“+”号 */               change(test-nn(n)); /* 并且将剩下的部分继续用此函数展开 */           }       }       return 1;   /* 正常结束返回1 */ }

阅读(2491) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册