算 24 的源代码(C)
#include "stdio.h"
#include<conio.h>
#include<math.h>
#include<conio.h>
#include<string.h>
char sig[4]={'+','-','*','/'};
int count=0;
main()
{
void fun(float n[],char ch[][50],int m);
float num[4];
int i;
char cx[4][50];
printf("Please input 4 integers:");
for(i=0;i<4;i++)
scanf("%f",&num);
for(i=0;i<4;i++)
{
sprintf(cx,"%d",(int)num);
}
fun(num,cx,4);
printf("\n");
return 0;
}
void fun(float n[],char ch[][50],int m)
{
int x[2],y,i,j;
float num[4];
char cc[4][50];
if(m>1)
{
for(x[0]=0;x[0]<m;x[0]++)
{
for(x[1]=0;x[1]<m;x[1]++)
{
if(x[1]==x[0])continue;
for(y=0;y<4;y++)
{
switch(y)
{
case 0: num[0]=n[x[0]]+n[x[1]];break;
case 1: num[0]=n[x[0]]-n[x[1]];break;
case 2: num[0]=n[x[0]]*n[x[1]];break;
case 3: if(n[x[1]]==0)break;
num[0]=n[x[0]]/n[x[1]];break;
default:break;
}
if(y!=3||n[x[1]]!=0)
if(m!=2)
sprintf(cc[0],"(%s%c%s)",ch[x[0]],sig[y],ch[x[1]]);
else
sprintf(cc[0],"%s%c%s",ch[x[0]],sig[y],ch[x[1]]);
for(i=0,j=1;i<m;i++)
if(i!=x[0]&&i!=x[1])
{
num[j]=n;
strcpy(cc[j],ch);
j++;
}
fun(num,cc,m-1);
}
}
}
}
else
{
if(fabs(n[0]-24.0)<0.0001)
{
printf("解%d:%s=24\t",++count,ch[0]);
if(count%3==0) printf("\n");
}
}
}