#include <stdio.h>
int k,s,t;            /*这几个全局变量为了方便,哈,省的传参数了,k是用户输入的数,s为1的时候表示不是(的起始处,用来根据情况添+号的,t是判断是否要显示2(1)滴。*/
int show(int m)  /*显示2(1),2(0)什么的 */
{
    if(m!=k&&s)
    printf("+");
    switch(m)
        {
    case 1:printf("2(0)");m-=1;break;
    case 2:printf("2(1)");m-=2;break;
    }
    s=1;
    return(m);
}
int getanswer(int x)
{
    int t1,t2;
    if (x>0&&x<3)
    {
        x=show(x);
        return(0);
    }
    if (x<=0)
        return(0);
    t2=1;
    t1=0;
    t=1;
    if(x!=k&&s)
    printf("+");
    while((t2*2)<=x)
    {
    s=0;
    if (t)
        printf("2(1)(");
    t2*=2;
    t1++;
    t=0;
    }
    getanswer(t1);
    printf(")");
    getanswer(x-t2);
}
main()
{
    clrscr();
    printf("Please input a number(>0):");
    scanf("%d",&k);
    printf("%d=",k);
    getanswer(k);
    getch();
}
[此贴子已经被作者于2006-8-11 8:38:02编辑过]