是怎么算的

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 16:33:05
是怎么算的

是怎么算的
是怎么算的

是怎么算的
运用+,-,×,÷和括号使结果是24

能不能说得具体点?

运用四则运算,将四个数的最后答案算为24

运用+,-,×,÷和括号四则运算,将四个数的最后答案算为24

24% 3=8

把下面代码打进VC6编译器 你会神器的发现24点毫无压力
#include
#include
float data[4]={0};
float data_num[4]={0};
int data_1[4]={0};
char fu[5]={' ','+','-','*','/'};//1=+ 2=- 3=* 4...

全部展开

把下面代码打进VC6编译器 你会神器的发现24点毫无压力
#include
#include
float data[4]={0};
float data_num[4]={0};
int data_1[4]={0};
char fu[5]={' ','+','-','*','/'};//1=+ 2=- 3=* 4=/
float as[100][7]={0};
int st=-1;
void print_1(int n)
{
if(as[n][2]>99)
printf("(%.f%c%.f)%c(%.f%c%.f)\n",as[n][0],fu[((int)as[n][2])-100],as[n][1],fu[((int)as[n][6])-100],as[n][3],fu[((int)as[n][5])-100],as[n][4]);
else
printf("%.f%c(%.f%c(%.f%c%.f))\n",as[n][0],fu[((int)as[n][6])-100],as[n][1],fu[((int)as[n][5])-100],as[n][2],fu[((int)as[n][4])-100],as[n][3]);
}
void print()
{
int j=0;
for(int i=0;i {
 print_1(i);
printf("\n");
}
}
float make_1_do1(int a[],int n)
{
if(n==0)
return data_num[4-n-1];
if(a[n-1]==1)
return make_1_do1(a,n-1)+data_num[4-n-1];
if(a[n-1]==2)
return data_num[4-n-1]-make_1_do1(a,n-1);
if(a[n-1]==3)
return make_1_do1(a,n-1)*data_num[4-n-1];
if(a[n-1]==4)
return data_num[4-n-1]/make_1_do1(a,n-1);
}
int make_c(int a[])
{
for(int i=0;iif(as[i][4]==a[0]+100.0&&as[i][5]==a[1]+100.0&&as[i][6]==a[2]+100.0)
return 1;
return 0;
}
float make_1_do2(int a[])
{
if(!(a[0]<3&&a[1]<3&&a[2]>2))
return 0;
float a1,a2,a3;
if(a[0]==1)
a1=data_num[0]+data_num[1];
else if(a[0]==2)
a1=data_num[0]-data_num[1];
if(a[1]==1)
a2=data_num[2]+data_num[3];
else if(a[1]==2)
a2=data_num[2]-data_num[3];
if(a[2]==3)
return a1*a2;
else if(a[2]==4)
return a1/a2;
}
int make_d(int a[])
{
for(int i=0;iif(as[i][2]==a[0]+100.0&&as[i][5]==a[1]+100.0&&as[i][6]==a[2]+100.0)
return 1;
return 0;
}
void make_1()
{
int a[3]={0};
float s=0;
for(a[0]=1;a[0]<5;a[0]++)
for(a[1]=1;a[1]<5;a[1]++)
for(a[2]=1;a[2]<5;a[2]++)
{
s=make_1_do1(a,3);
if(s>23.9999&&s<24.0001)
{
 if(make_c(a))
 continue;
st++;
as[st][0]=data_num[0];
as[st][1]=data_num[1];
as[st][2]=data_num[2];
as[st][3]=data_num[3];
as[st][4]=a[0]+100.0;
as[st][5]=a[1]+100.0;
as[st][6]=a[2]+100.0;
}
s=make_1_do2(a);
if(s>23.9999&&s<24.0001)
{
 if(make_d(a))
 continue;
 st++;//printf("ff");
as[st][0]=data_num[0];
as[st][1]=data_num[1];
as[st][2]=a[0]+100.0;
as[st][3]=data_num[2];
as[st][4]=data_num[3];
as[st][5]=a[1]+100.0;
as[st][6]=a[2]+100.0;
}
}
}
void fun(int u)
{
if(u==5)
{

make_1();
return;
}
for(int i=0;i<4;i++)
{
if(data_1[i]==0)
{ data_1[i]=1;
data_num[u-1]=data[i];
fun(u+1);
data_1[i]=0;
}
}
}

int main()
{
printf("用户请输入:\n");
for(int i=0;i<4;i++)
{
printf("第%d个数是:",i+1);
scanf("%f",&data[i]);
}
fun(1);
print();
_getch();
return 0;
}

收起