C语言实现代码
采用枚举算法的思想。例子 输入7 9 2 1 9
要求结果24可以得到7+9*2+1-9=24(运算顺序从左往右依次计算)
#include<stdio.h>
int main()
{
int num[6],i[5],j;
int result;
float temp; //临时变量,保存运算结果
int count=0;
char oper[5]={'a','+','-','*','/'};
printf("input 5 numbers:"); //输入5个数
for(j=1;j<=5;j++)
{
scanf("%d",&num[j]);
}
printf("\ninput result:");
scanf("%d",&result);
for(i[1]=1;i[1]<=4;i[1]++)
{
for(i[2]=1;i[2]<=4;i[2]++)
{
for(i[3]=1;i[3]<=4;i[3]++)
{
for(i[4]=1;i[4]<=4;i[4]++)
{
temp=num[1];
for(j=1;j<=4;j++)
{
switch(oper[i[j]])
{
case '+':
temp=temp+num[j+1];
break;
case '-':
temp=temp-num[j+1];
break;
case '*':
temp=temp*num[j+1];
break;
case '/':
temp=temp/num[j+1];
break;
}
}
if (temp==result) //比较结果
{
printf("yes!" );
count++;
for (j=1;j<=4;j++)
{
printf("%d%c",num[j],oper[i[j]]); //输出等式
}
printf("%d=%d\n",num[5],result);
}
}
}
}
}
if(count==0)
{printf("error!");}
return 0;
}