发新话题
打印

算 24 的源代码(C)

算 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");
    }
}
}
发新话题