• 大小: 195KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-23
  • 语言: C/C++
  • 标签:

资源简介

一个关于如何计算出给定4个数得到24点的算法,在代码中我给了详细的注释,没用的什么复杂的算法和数据结构,尤其适合那些看不懂网上其他人代码的人,还有那些基础不好的同学,超简单,但是功能还算可以,基本上把每种可能都包含进去了

资源截图

代码片段和文件信息

#include “stdio.h“
main()
{
float a[4];    //存放数字的
char b[4];  //存放运算符的
int c[1+4];   //输出时将float转换为int
b[0]=‘+‘;
b[1]=‘-‘;
b[2]=‘*‘;
b[3]=‘/‘;
int q=0;
float record1record2record3;
int number1number2number3number4;
int operat1operat2operat3;
float result; //计算没有括号和有一个括号的情况
float result1result2;//计算有两个括号的情况
printf(“请输入4个数字:\n“);
scanf(“%f %f %f %f“&a[0]&a[1]&a[2]&a[3]);
/*
   先考虑没有括号和有一个括号的情况
   */
for(number1=0;number1<4;number1++)    //排列第一个数
{
result=a[number1];
record1=result;
for(operat1=0;operat1<4;operat1++)    //第一个运算符
{
for(number2=0;number2<4;number2++)//第二个数
{
result=record1;
if(number2!=number1)
{
if(operat1==0)
{result+=a[number2];}
if(operat1==1)
{result-=a[number2];}
if(operat1==2)
{result*=a[number2];}
if(operat1==3)
{result/=a[number2];}
record2=result;
for(operat2=0;operat2<4;operat2++)  //第二个运算符
{
for(number3=0;number3<4;number3++)  //第三个数
{
result=record2;
if(number1!=number2&&number2!=number3&&number1!=number3)
{
if(operat2==0)
{
result+=a[number3];
}
if(operat2==1)
{
result-=a[number3];
}
if(operat2==2)
{
result*=a[number3];
}
if(operat2==3)
{result/=a[number3];}
record3=result;
for(operat3=0;operat3<4;operat3++) //第三个运算符
{   
for(number4=0;number4<4;number4++)//第四个数
{  
result=record3;
if(number1!=number2&&number2!=number3&&number3!=number4&&
number1!=number3&&number1!=number4&&number2!=number4)
{
if(operat3==0)
{result+=a[number4];}
if(operat3==1)
{result-=a[number4];}
if(operat3==2)
{result*=a[number4];}
if(operat3==3)
{result=result/a[number4];}
if(result==24)
{
c[1]=(int)a[number1]c[2]=(int)a[number2]c[3]=(int)a[number3]c[4]=(int)a[number4];
c[0]=(int)result;
printf(“((%d %c %d) %c %d) %c %d =%d  %d\n“c[1]
b[operat1]c[2]b[operat2]c[3]b[operat3]c[4]c[0]q);
result=0;
q++;

}
}
}
}
}
}
}
}
}
}
}
printf(“********************************************\n“);
//此处开始计算有2个括号的情况,总共有C4_2*2*2*2*2=192种结
result=0;
q=0;
for(number1=0;number1<4;number1++)    //排列第一个数
{
for(operat1=0;operat1<4;operat1++)    //第一个运算符
{
for(number2=0;number2<4;number2++)//第二个数
{
if(number2!=number1)
{
if(operat1==0)
{result1=a[number1]+a[number2];}
if(operat1==1)
{result1=a[number1]-a[number2];}
if(operat1==2)
{result1=a[number1]*a[number2];}
if(operat1==3)
{result1=a[number

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4533  2013-04-02 01:18  24点游戏C语言版5\24点游戏.cpp

     文件       3427  2013-03-31 00:48  24点游戏C语言版5\24点游戏.dsp

     文件        541  2013-03-31 01:19  24点游戏C语言版5\24点游戏.dsw

     文件      50176  2013-04-08 22:33  24点游戏C语言版5\24点游戏.ncb

     文件      49664  2013-04-08 22:33  24点游戏C语言版5\24点游戏.opt

     文件        764  2013-04-02 20:53  24点游戏C语言版5\24点游戏.plg

     文件     208987  2013-04-02 20:53  24点游戏C语言版5\Debug\24点游戏.exe

     文件     259136  2013-04-02 20:53  24点游戏C语言版5\Debug\24点游戏.ilk

     文件       6096  2013-04-02 20:53  24点游戏C语言版5\Debug\24点游戏.obj

     文件     213732  2013-04-02 01:18  24点游戏C语言版5\Debug\24点游戏.pch

     文件     467968  2013-04-02 01:18  24点游戏C语言版5\Debug\24点游戏.pdb

     文件      50176  2013-04-08 22:27  24点游戏C语言版5\Debug\vc60.idb

     文件      53248  2013-04-02 01:18  24点游戏C语言版5\Debug\vc60.pdb

     目录          0  2013-04-08 22:52  24点游戏C语言版5\Debug

     目录          0  2013-04-08 22:52  24点游戏C语言版5

----------- ---------  ---------- -----  ----

              1368448                    15


评论

共有 条评论

相关资源