#include "stdio.h"
double plus(double a,double b,int logo)//函数 plus
{
double sum;
switch(logo)
{
case 0:sum=a+b;break;
case 1:sum=a-b;break;
case 2:sum=a*b;break;
case 3:sum=a/b;break;
}
return sum;
}
char f1(int logo)//函数f1
{
char c;
switch(logo)
{
case 0:c='+';break;
case 1:c='-';break;
case 2:c='*';break;
case 3:c='/';break;
}
return c;
}
main()
{
int j1,j2,j3,j4,j5,j6,j7,flag=0,n;
double s;
for(n=8;n<=888888;n=n*10+8)
{for(j1=0;j1<4;j1++)
{
if(flag==1)
break;
for(j2=0;j2<4;j2++)
{
if(flag==1)
break;
for(j3=0;j3<4;j3++)
{
if(flag==1)
break;
for(j4=0;j4<4;j4++)
{
if(flag==1)
break;
for(j5=0;j5<4;j5++)
{
if(flag==1)
break;
for(j6=0;j6<4;j6++)
{
if(flag==1)
break;
for(j7=0;j7<4;j7++)
{
s=plus(8,8,j1);
s=plus(s,8,j2);
if(n<888888)s=plus(s,n,j3);
if(n<88888)s=plus(s,8,j4);
if(n<8888)s=plus(s,8,j5);
if(n<888)s=plus(s,8,j6);
if(n<88)s=plus(s,8,j7);
if(s==1000)
{
flag=1;
printf("\n8%c8%c8%c%d",f1(j1),f1(j2),f1(j3),n);
if(n<88888)printf("%c8",f1(j4));
if(n<8888)printf("%c8",f1(j5));
if(n<888)printf("%c8",f1(j6));
if(n<88)printf("%c8",f1(j7));
printf("=%0.0lf",s);
break;
}
}
}
}
}
}
}
}
}
}
--------------------------------------------------
得出的结果只能从左往右算,如8+8*8+888-8-8=1000
不能先算乘。呵呵。不是很到位,高手指点一下,谢谢了!