算24游戏c语言程序报告,C语言版的算24游戏代码

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

#include "stdafx.h"

#include

#include

double sum(double a,double b)

{

return a+b;

}

double mi(double a,double b)

{

return a-b;

}

double mul(double a,double b)

{

return a*b;

}

double di(double a,double b)

{

return a/b;

}

double (*ops[4])(double a,double b)={sum,mi,mul,di};

double num[4];/*输入的数*/

double num3[4];/*第二次运算时暂时保存*/

double num4[4];/*第一次运算时暂时保存*/

double numf[4];/*输入的数保存输出时候用*/

/*复制数组*/

void copyarr(double *src,double *des)

{

int i;

double t[4];

for(i=0;i<4;i++)

des[i]=src[i];

}

/*第一次计算后,合并为前三个数*/

void reorder4(int cp4,double re4)

{

switch(cp4)

{

case 0:

num[0]=re4;

num[1]=num[2];

num[2]=num[3];

break;

case 1:

num[1]=re4;

num[2]=num[3];

break;

case 2:

num[2]=re4;

break;

}

}

/*第二次计算后,合并为两个数*/

void reorder3(int cp3,double re3)

{

switch(cp3)

{

case 0:

num[0]=re3;

num[1]=num[2];

break;

case 1:

num[1]=re3;

break;

}

}

/*根据运算得到操作符*/

char opc(double(*opt)(double a,double b))

{

if(opt==sum)

return '+';

else if(opt==mi)

return '-';

else if(opt==mul)

return '*';

else if(opt==di)

return '/';

}

/*输出*/

void printresult(double *num,int ta3,int ta4,double(*op2)(double a,double b),double(*op3)(double a,double(*op4)(double a,double b))

{

double n0=num[0];

double n1=num[1];

double n2=num[2];

double n3=num[3];

switch(ta4)

{

case 0:

if(ta3==0)

printf("((%.0f%c%.0f)%c%.0f)%c%.0f\n",n0,opc(op4),n1,opc(op3),n2,opc(op2),n3);

else if(ta3==1)

printf("(%.0f%c%.0f)%c(%.0f%c%.0f)\n",n3);

break;

case 1:

if(ta3==0)

printf("(%.0f%c(%.0f%c%.0f))%c%.0f\n",n3);

else if(ta3==1)

printf("%.0f%c((%.0f%c%.0f)%c%.0f)\n",n3);

break;

case 2:

if(ta3==0)

printf("(%.0f%c%.0f)%c(%.0f%c%.0f)\n",n3);

else if(ta3==1)

printf("%.0f%c(%.0f%c(%.0f%c%.0f))\n",n3);

break;

}

}

int main(void)

{

int a,b,c,d;/*输入的数*/

int cp3,cp4;/*cp3,cp4分别是第二次和第一次运算时的两个数运算,前一个数所在的位置*/

int i,j,k;/*循环各种运算*/

double re2,re3,re4;/*第3,2,1次运算的结果*/

double(*cop2)(double a,double b);/*第3次操作符*/

double(*cop3)(double a,double b);/*第2次操作符*/

double(*cop4)(double a,double b);/*第1次操作符*/

scanf("%d%d%d%d",&a,&b,&c,&d);

num[0]=(double)a;

num[1]=(double)b;

num[2]=(double)c;

num[3]=(double)d;

/*每次运算之前备份,运算后合并以供后面的运算,但是如果没有找到解必须恢复备份*/

copyarr(num,numf);

copyarr(num,num4);

for(cp4=0;cp4<=2;cp4++)

{

for(i=0;i<4;i++)

{

cop4=ops[i];

re4=(*cop4)(num[cp4],num[cp4+1]);

reorder4(cp4,re4);

copyarr(num,num3);

for(cp3=0;cp3<=1;cp3++)

{

for(j=0;j<4;j++)

{

cop3=ops[j];

re3=(*cop3)(num[cp3],num[cp3+1]);

reorder3(cp3,re3);

for(k=0;k<4;k++)

{

cop2=ops[k];

re2=(*cop2)(num[0],num[1]);

if(re2==24)

{

printresult(numf,cp3,cp4,cop2,cop3,cop4);

system("pause");

return 0;

}

}

copyarr(num3,num);

}

}

copyarr(num4,num);

}

}

system("pause");

return 0;

}

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

总结

以上是编程之家为你收集整理的C语言版的算24游戏代码全部内容,希望文章能够帮你解决C语言版的算24游戏代码所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值