#include <stdlib.h>
#include <math.h>
char op[3], o[5]="+-*/"
float n[4], on[10]
int used[4] = {0}, top=0, tp=0, x
void chk(float k)
void search24(int d)
float calc(float n1, float n2, char o)
void make(int i, float p, float q, char o, int d)
int main( void )
{
printf("please input 4 card number:\n")
scanf("%f%f%f%f", &n[0], &n[1], &n[2], &n[3])
search24(0)
printf("No answer.\n")
return 0
}
void chk(float k)
{
if( (tp != 3) || ( fabs(k-24.0) >0.000001 )) //没有用完3个运算符或者结果不为24就退出.
return
for(x=0x<5x+=2) 肆哪 //这样设计是为了使3个选中的符号都可以得到输出.
printf("%g%c%g=%g\n", on[x], op[x/2], on[x+1], //分析得到的.
calc(on[x], on[x+1], op[x/2]))
system("pause")
exit(0)
}
float calc(float n1, float n2, char o)
{
switch(o){
case '+': return (n1+n2)
case '-': return (n1-n2)
case '*': return (n1*n2)
case '/': return (n1/n2)
default: exit(0)
}
}
void make(int i, float p, float q, char o, int d)
{
if(fabs(q)>0.000001 || o!='/') //除数不为0,或者为0的时候不能为除数.
n[i] = calc(p, q, o)
op[tp++] = o
chk(n[i])
search24(d+1)
tp-- //因为是全是全局变量,所以在做试验性的循环递归问题时,如果失败,要在递归函数后面重新恢复回原来的值
}
void search24(int d)
{
int i, j, k
float p, q
if(d>=3) //控制递归深度,就是运算符的输出个数.
return
for(i=0i<4i++)
for(j=0j<4j++)
if( (i!=j)&&(used[i]+used[j] == 0) ) //i!=j是防止重复,(used[i]+used[j] == 0)是防止又再匹配已经用过的j,
//但是i可以新来.
{
used[j] = 1 //j得到匹配之后,赋值为1,表示已慧册经使用
p=n[i]
q=n[j]
on[top++] = p
on[top++] = q
for(k=0k<4k++) //运算符的循环试用.
make(i, p, q, o[k], d)
n[i] = p //因为是全是全局变量,所以在做试验性的循环递归问题时,
裂碧码 used[j] = 0 //如果失败,要在递归函数后面重新恢复回原来的值
top -= 2 //
}
}
出处:http://blog.sina.com.cn/s/blog_491de9d60100d5er.html
计算机24点是一款数学类小游戏,可以在电脑上进行游戏练习。要打开计算机答灶核24点,可以参考以下步骤:1. 首先,需要在电脑上安装计算机24点游戏软件,可以在各大软件下载网站上下载相应版本的软件。
2. 安装完成后,在程序列表中找到该游戏程序。
3. 双击程序图标打辩漏开游戏程序,进入游戏界面。如有必要,按照界面提示提供相关的游戏配置信息。清掘
4. 在游戏界面中,点击游戏开始按钮即可开始游戏。玩家需要根据屏幕上的数字,利用加、减、乘、除等运算符,以组合出24的结果。
需要注意的是,计算机24点是一款锻炼大脑思维的好游戏,玩家可以通过练习和掌握相关技巧,提升自己的计算能力和游戏水平。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)