#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编辑过]