荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Peter (小飞侠), 信区: Program
标  题: 算24点小程序
发信站: BBS 荔园晨风站 (Thu Jan 21 21:05:17 1999), 转信


#include "stdio.h"
main()
{
int a[4];
register int i;
void round(int a[4]);
printf("Input n1,n2,n3,n4 (0<ni<11):\n")
for(i=0;i<4;i++)scanf("%d",&a[i]);
round(a);
}
void round(int a[4])
{
float b[4];
register int i,j,k;
int cal(float b[4]);
for(i=0;i<4;i++)
{
  b[0]=(float)a[i];
  for(j=0;j<4;j++)
  {
   if(j!=i)b[1]=(float)a[j];else continue;
   for(k=0;k<4;k++)
   {
    if(k!=j&&k!=i)b[2]=(float)a[k];else continue;
    b[3]=(float)a[6-i-j-k];
    if(cal(b)) exit(1);
   }
  }
}
printf("No answer!");
}
int cal(float b[4])
{
float c(float a, float b, int i);
void print(float a, float b,float c,int i);
register int j,i,k;
float x,y,z;
for(i=0;i<6;i++)
{
  x=c(b[0],b[1],i);
  for(j=0;j<6;j++)
  {
   y=c(x,b[2],j);
   for(k=0;k<6;k++)
   {
    z=c(y,b[3],k);
    if((z-24)<0.001&&(z-24)>-0.001)
    {
     print(b[0],b[1],x,i);
     print(x,b[2],y,j);
     print(y,b[3],z,k);
     return(1);
    }
   }
  }
}
for(i=0;i<3;i++)
{
  x=c(b[0],b[1],i);
  for(j=0;j<3;j++)
  {
   y=c(b[2],b[3],j);
   z=x*y;
   if((z-24)<0.001&&(z-24)>-0.001)
   {
    print(b[0],b[1],x,i);
    print(b[2],b[3],y,j);
    print(x,y,z,3);
    return(1);
   }
  }
}
for(i=3;i<6;i++)
{
  x=c(b[0],b[1],i);
  for(j=3;j<6;j++)
  {
   y=c(b[2],b[3],j);
   for(k=0;k<3;k++)
   {
    z=c(x,y,k);
   if((z-24)<0.001&&(z-24)>-0.001)
   {
    print(b[0],b[1],x,i);
    print(b[2],b[3],y,j);
    print(x,y,z,k);
    return(1);
   }
   }
  }
}
return(0);
}
float c(float a,float b,int i)
{
switch(i)
{
  case 0:return(a+b);
  case 1:return(a-b);
  case 2:return(b-a);
  case 3:return(a*b);
  case 4:return(a/b);
  case 5:if((int)(a*100))
         return(b/a);
         else
         return(0);
}
}
void print(float a,float b,float c,int i)
{
switch(i)
{
case 0:printf("    %5.2f+%5.2f=%5.2f",a,b,c);break;
case 1:printf("    %5.2f-%5.2f=%5.2f",a,b,c);break;
case 2:printf("    %5.2f-%5.2f=%5.2f",b,a,c);break;
case 3:printf("    %5.2f*%5.2f=%5.2f",a,b,c);break;
case 4:printf("    %5.2f/%5.2f=%5.2f",a,b,c);break;
case 5:printf("    %5.2f/%5.2f=%5.2f",b,a,c);break;
}

--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.1.3]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店