C语言版的算24游戏代码

C语言版的算24游戏代码,第1张

概述C语言版的算24游戏代码

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。

内存溢出小编现在分享给大家,也给大家做个参考。

#include "stdafx.h"#include <stdio.h>#include <stdlib.h> 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游戏代码所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1232045.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存