第一篇:扑克牌24点游戏c设计
C程序设计 24点小游戏
1设计内容
有
2、
3、
4、
5、
6、
7、
8、
9、
10、J、Q、K、A共13张牌,编一程序,判断对任意给定的4张牌,能否在进行加、减、乘、除运算后,其运算结果等于24。其中J按11计算,Q按12计算,K按13计算,A按1计算。如果能得到结果24,则输出可得到该结果的计算表达式。
若输入数据符合要求,且经过加、减、乘、除运算后,运行结果能得到24,如输入5,5,5,1,则显示可得到该结果的计算表达式,如5*(5-(1/5))。
若输入数据小于1或者大于13或者不是整数时,提示输入错误。 若输入不能运算出24的数据,如1,1,1,1,则显示经过加、减、乘、除运算后,运行结果不能得到24。
2程序设计
2.1存储结构设计
由于要储存的数据不多,主要是储存所输入的4个整数,所以采用一维数组(a[4])储存。而计算过程会出现小数,所以数据类型采用浮点型(float)。
2.2主要程序设计
程序采用穷举法,对输入的4个数进行排列,有 4!=24种。用for来循环,if来判断,算法如下。 for (i=0;i<4;i++) for (j=0;j<4;j++) if (j!=i) for (k=0;k<4;k++) if (k!=j && k!=i) for (l=0;l<4;l++) if (l!=i && l!=j && l!=k) { calculate(a[i],a[j],a[k],a[l]);}
用if来判断括号的类型,然后作出不同顺序的运算。括号有两对,主要有两种类型:一种是( ) ( )型,如(a+b)*(c+d) ;另一种是 ( ( ) )型,继续细分又有
41 种类型,如下a*(b*(c+d)) ,(a*(b+c))*d ,a*((b+c)*d) ,((a+b)*c)*d。算法如下 if ((!(i==3 && b==0)) && (!(j==3 && c==0)) && (!(k==3 && d==0))) { sum1=arithmetic(i,a,b); sum2=arithmetic(j,sum1,c); sum3=arithmetic(k,sum2,d); } if (k==2) { sum1=arithmetic(i,a,b); sum2=arithmetic(j,c,d); sum3=sum1*sum2; } if (k==3) { sum1=arithmetic(i,a,b); sum2=arithmetic(j,c,d); if(sum2!=0) { sum3=sum1/sum2; } } 在输入方面,按要求,数据类型是 1 至13 的整数,符合则进行运算,不符合则重新输入。用if语句来实现,如下 if (a[i]<1 || a[i]>13 || a[i]!=int(a[i]))
在输出方面,运算结果等于 24就输出,利用调用的参数判断输出形式,有5种:(a+b)*(c+d),a*(b*(c+d)) ,(a*(b+c))*d ,a*((b+c)*d) ,((a+b)*c)*d。算法如下:
void show(int type,int i,int j,int k,float a,float b,float c,float d)
2 { if (type==1) {
if(j==4 || j==5) {
if (k==4 || k==5)
cout< else
cout<<"("
cout<}
else
cout<<"(("<
} if (type==2 || type==3) { cout<<"("<
程序流程框图如图2-3所示:
3
图2-3 3程序调试
3.1测试用例
开始运行时的页面如图4-1所示:
4
图4-1 首先,测试程序能不能运算出正确的结果,输入数据6,6,6,6,出现了44组符合要求的解,如图4-2所示。
接着输入数据2,9,7,14,提示输入错误,重新输入2,7,5,13,能得到正确运行结果,如图4-2所示。
输入4,9,11,13,不能运算得到24,显示“你所输入的数,经过四则运算后,不等于24点”,如图4-3所示。
输入5,5,5,1,这组数据要运算得到24,一定会出现小数,因为只有一种运算,即5*(5* /" 4个运算符号选3个,有4*4*4=64种
for (j=0;j<6;j++)
// 3种运算符排列
有 3!=6 种
for (k=0;k<6;k++)
{
if ((!(i==3 && b==0)) && (!(j==3 && c==0)) && (!(k==3 && d==0))) // 括号的类型为(()) { // 3为做除法运算的标志,除数为 0 时,跳过
= =
sum1=arithmetic(i,a,b);
//a,b做 以 i 为标志的运算,然后把值赋给sum1
sum2=arithmetic(j,sum1,c); //sum1,c做 以 j 为标志的运算,然后把值赋
10 给sum2
sum3=arithmetic(k,sum2,d); //sum2,d做 以 k 为标志的运算,然后把值赋给sum3
if (fabs(sum3-24)<0.001)//判断能否运算出24,出现小数时,能够包含在内
{
check++;
//标志能运算出24
show(1,i,j,k,a,b,c,d); // 输出运算出 24 的表达式
}
}
if (k==2)// ()*()
{
sum1=arithmetic(i,a,b); //a,b做 以 i 为标志的运算,然后把值赋给sum1
sum2=arithmetic(j,c,d); //sum1,c做 以 j 为标志的运算,然后把值赋给sum2
sum3=sum1*sum2;
if (fabs(sum3-24)<0.001)//出现小数时,能够包含在内
{
check++;
//标志能运算出24
show(2,i,j,k,a,b,c,d); // 输出运算出 24 的表达式
}
}
if (k==3)// 括号的类型为()()
{
sum1=arithmetic(i,a,b); //sum1,c做 以 j 为标志的运算,然后把值赋给sum2
11
sum2=arithmetic(j,c,d); //sum1,c做 以 j 为标志的运算,然后把值赋给sum2
if (sum2!=0)
{
sum3=sum1/sum2;
if (fabs(sum3-24)<0.001)//出现小数时,能够包含在内
{
check++;
//标志能运算出24
show(3,i,j,k,a,b,c,d);
// 输出运算出 24 的表达式
}
}
}
} }
void main() { int i,j,k,l,m=0;
float a[4];
//储存所输入的 4个 整数
while(m==0) { m=1;
cout<< "请输入4 个 1--13 的整数:"<
for(i=0;i<4;i++) {
cin>>a[i];
if (a[i]<1 || a[i]>13 || a[i]!=int(a[i])) //判断是否为符合要求的整数
{ if(m!=0) {
}
cout<<"输入错误,请重新输入!"<
m=0; } } for (i=0;i<4;i++)
//4的排列 4!=24,每中情况调用calculate
for (j=0;j<4;j++)
if (j!=i)
//第2数和第1个数不能重复
for (k=0;k<4;k++)
if (k!=j && k!=i) //第3数和第1,2个数不能重复
for (l=0;l<4;l++)
if (l!=i && l!=j && l!=k) //第4数和第1,2,3个数不能重复
{ calculate(a[i],a[j],a[k],a[l]);//调用calculate函数,进行进行加、减、乘、除运算
}
} if (check==0) //不能运算出24 { cout<<"你所输入的数,经过四则运算后,不等于24点"<
13
第二篇:扑克牌中的数学游戏(24点)讲解
奥数 > 奥数题库 > 三年级奥数题及答案 > 正文
小学奥数知识系列之---扑克牌中的数学游戏
有一种叫“24点”的游戏曾经风靡美国、日本等许多国家,深受青少年朋友的喜爱。这种游戏将两张王牌去掉,把A、J、Q、K分别看作1点,11点、12点、13点,或者将它们均看1点,其余牌面是几点,就是几点。
例1 抽出下面四组牌:(A,J,Q,K分别为1点,11点,12点,13点)
(1)2,3,4,5
(2)3,4,5,10
(3)K,7,9,5
(4)J,6,Q,5
你能算出24点吗?
例2 如果恰巧四个人抽出的扑克牌是“1~9”中的同一数字的牌,请你帮忙想一想哪种情况可以算出“24”?怎样算?
例3 填上适当的运算符号,使算式成立
(1)4 4 4 4=5
(2)4 4 4 4=6
(3)4 4 4 4=7
(4)4 4 4 4=8
(5)4 4 4 4=9
(6)4 4 4 4=10
例4 不用(),且运算符号不超过三次,添在适当位置,使下面的算式成立。
9 9 9 9 9 9 9 9 9=1000
例5 填入适当运算符号,使下式成立。
9 8 7 6 5 4 3 2 1=1000
例6 在下列算式中合适的地方,填上括号,使算式成立。
(1)4+5×6+8÷4-2=30
(2)4+5×6+8÷4-2=39
(3)4+5×6+8÷4-2=21
(4)4+5×6+8÷4-2=140
练习题
1.在“24”点游戏中提出了下面几组牌,你能很快求出“24”吗?
(1)1,3,5,7
(2)2,5,7,9
(3)1,3,9,10
(4)10,4,10,4
(5)K,Q,J,J
(6)Q,10,Q,1
2.在“24”点游戏中,抽出了下面两组牌,你能求出“24”吗?
(1)3,3,7,7 (2)1,5,5,5
3.抽的四张牌恰好是“1~9”中从大到小连续排列的四张,这样的牌能算出“24”吗?
4.添上适当的运算符号,使算式成立。
(1)6 6 6 6=1 (2)6 6 6 6=2
(3)6 6 6 6=3 (4)6 6 6 6=4
(5)6 6 6 6=5 (6)6 6 6 6=6
5.用7个7组成4个数,并使运算结果为100
7,7,7,7,7,7,7=100
6.在9个9之间填适当的运算符号,使下面算式成立。
9 9 9 9 9 9 9 9 9=2008
7.填上适当的运算符号,使算式成立。
9 8 7 6 5 4 3 2 1=2007
8.在11~15之间,选择恰当位置,填上适合的运算符号,使算式结果为100。
11 12 13 14 15=100
9.现有的牌为1~10,请从中选牌,每张牌只用一次,使下列“24”点游戏成立。
(1)□+□×6+11=24
(2)(□+5)×2+□=24
(3)(□×10-□)÷4+11=24
(4)□×3-□÷2=24
(5)□×5-4÷4=24
(6)13+□×3-10=24
10.在适当的位置中,填上括号,使下列算式成立。
(1)9+60÷3+2×4-1=30
(2)9+60÷3+2×4-1=56
(3)9+60÷3+2×4-1=15 (4)9+60÷3+2×4-1=45
1 解:
(1)(5+7)×(3-1)=24 (2)5×7-9-2=24
(3)(1+10)×3-9=24
(4)(10×10-4)÷4=24
(5)13+12-11÷11=24
(6)12×(12-10)×1=24
2 解:(1)(3+3÷7)×7=24
(2)(5-1÷5)×5=24
3解:
(1)依据4×6=24得8÷(9-7)×6=24
(2)依据2×12=24得(7+5)×(8-6)=24
(3)依据2×12=24得(5+7)×(6-4)=24
(4)依据4×6=24得2×(3+4+5)=24
(5)依据4×6=24得1×2×3×4=24
4 解:
(1)(6+6)÷(6+6)=1
(2)(6÷6)+(6÷6)=2
(3)(6+6+6)÷6=3
(4)6-[(6+6)÷6]=4
(5)(6×6-6)÷6=5
(6)(6-6)×6+6=0
5解777÷7-77÷7=100 6 解:999+999+9÷9+9=2008 7解:9+8+7+654×3+21=2007 8 解:11+121-31-(4+1)÷5=100或111-21+3-1+4-1 +5=100 9解:
(1) ×6+11=24
(2)( +5)×2+ =24
(3)( ×10- )÷4=24 (4) ×3- ÷2=24
(5) ×5-4÷4=24
(6)13+□×3-10=24
10 解:(1)(9+60)÷3+2×4-1=30
(2)9+60÷(3+2)×4-1=56
(3)9+60÷(3+2×4-1)=15
(4)9+60÷(3+2)×(4-1)=45 1---
解:(1)依据2×12=24,可得2×(3+4+5)=24,
(2)依据3×8=12,可得3×(10÷5×4)=24,
(3)依据4×6=24,可得(13-7)×(9-5)=24,
(4)依据18+6=24,可得(11-5)+(6+12)=24 2---
解:依据27-3=24 ,可得3×3×3-3=24,
依据20+4=24 ,可得4×4+4+4=24,
依据25-1=24 ,可得5×5-5÷5=24,
依据12+12=24 ,可得(6+6)+(6+6)=24, 3---
(1)(4×4+4)÷ 4=5
(2)(4+4)÷4+4=6
(3)(4+4)-4÷4=7
(4)(4+4)×4÷4=8
(5)(4+4)+4÷4=9
(6)(44-4)÷4=10 4---
解:999+999÷999=1000
9999÷9-999÷9=1000 5--
解:987+6+5-4+3×2×1=1000
987+6+5+4-3+2-1=1000
987+6+(5-4)×(3×2+1)=1000
987+6+5+(4-3)×2×1=1000 987-(6-5+4+3)+21=1000 6--
(1)[(4+5)×6+8]÷4-2=30 (2)4+5×(6+8)÷(4-2)=39 (3)(4+5×物以类聚——+8)
俗话说“物以类聚,人以群分”.在数学中,我们把整式中那些含相同的字母、并且相同字母的次数也分别相同的单项式看作一类——称为同类项,一个多项式中的同类项可以合聚在一起——称为合并同类项.整式的加减实质就是去括号合并同类项.
整式的加减这一章涉及到许多概念,准确地掌握这些概念并注意它们的区别与联系是解相关问题的基础,归纳起来就是要注意以下几点: 理解“三式”和“四数”的概念、熟悉“两种排列”、掌握三个法则.
解与整式加减相关问题时,有括号先去括号,有同类项先合并同类项,这样能使解题过程大为简化.
) × ( 6 + 8 当 的取值范围为 时,式子 常数,这个值是
的值恒为一个
第三篇:算24点游戏--教学设计
“巧算24点”比赛教学设计
教学目标:
1、 进一步提高口算能力,增强四则运算的熟练度。
2、 掌握算24点的基本方法,知道不同的牌可以算成24,相同的牌有不同的算法,提高解决问题的策略和能力。
3、 增强学习数学的兴趣。进一步培养合作意识和探索能力。 教学准备:多媒体课件。 教学过程:
一、揭示课题
1、看今天数学课我带来了什么?
你们可别小看这样的一副牌,它有好多种玩法呢?你们知道扑克牌有哪些玩法呢?(学生举手说)刚刚有一位同学说牌可以用来算24点,你知道算24点是怎样玩的吗?
师:我们在玩算24点时,用四个数,通过加减乘除计算出24,每张牌有且只可用一次。今天我们来进行“巧算24点”的数学游戏,(揭题:“巧算24点”)正如象棋、围棋一样是人们喜闻乐见的娱乐活动。它对于培养我们快捷的心算能力和反应能力很有帮助。相信你会很快喜欢上它的!老师也想通过这节课看看谁最棒!
2、活动介绍:
先拿出一副牌,从中抽去两张大小王剩下52张,其中,A=1,J=11,Q=12,K=13。任意抽取4张牌(称牌组),用加、减、乘、除(可加括号)把牌面上的数算成24。每张牌必须用一次且只能用一次,如抽出的牌是
9、
7、J、2,那么算式为(9-7)×11+2=24。
播放视频片段,看四人合作怎么玩这个游戏。
经计算机准确计算,一副牌(52张)中,任意抽取4张可有1820种不同组合,有的牌组无解,其中有458个牌组算不出24点,如A、A、A、5。计算时,我们不可能把牌面上的4个数的不同组合形式一一去试,更不能瞎碰乱凑。“算24点”作为智力游戏,还应注意计算中的技巧问题。
3、热身练习
我们先一起来试几道题。集体计算以下牌组: (
2、
9、
10、3) (
6、
5、
4、2) (
2、
2、
4、8)
4、说说常用的方法
通过上面几道题的计算我们知道怎样才能更快算出24来。 利用想乘法3×8=
24、4×6=
24、2×12=
24、24×1=24,把牌面上的四个数想办法凑成3和
8、4和6,再相乘求解。实践证明,这种方法是利用率最大、命中率最高的一种方法。
利用0、1的运算特性求解。
同数相减得0,0加任何数的原数。相同数相除的1,1乘任何数得原数等。如
3、
4、
4、8可组成3×8+4-4=24等。又如
4、
5、J、K可组成11×(5-4)+13=24等。
二、挑战赛(三轮比赛) 经过刚刚练习大家熟悉了算24点的玩法了吗,不但搞清楚了玩法也懂得了一定的技巧,大家想不想来挑战一下,比比看谁更厉害。我们分队来进行比赛吧。
(一)第一轮必答题
今天的比赛共分三场,先进行第一场比赛。全班同学分为四个对进行,分别是红桃、方片、黑桃、梅花四个队。每组轮流答两道题,每题十分,答对得十分,答错不扣分。
(二)第二轮抢答题
每组选出一名观察员,在抢答时看那个队伍先举手抢到,我负责出牌,出牌后,大家积极思考,每道题给出30秒思考时间,当我说了开始之后再举手,想出方法的同学举手,得到允许然后在黑板上写出算式,大家听后认为正确的,每题得二十分。碰到想不出来的牌组,组长负责记在纸张上,课后再去思考。
(三)第三轮风险题。
共十二道题,有十分、二十分、三十分三种可供选择,答对得分答错倒扣相应的分数,队长来选题,限时一分钟内答完,一队答错其他队可以继续抢答。最后统分员把三轮比赛得分算出来,评出优胜队,老师颁发奖品。
三、总结
同学们,生活中蕴涵着很多数学,经常看到的扑克牌,今天变成了我们学习的学具,一节课的时间是短暂的,你可能还不过瘾,你今后可以常玩,相信不久的你一定会成为一个计算高手。 师:通过一节课的学习,你有什么收获? 你们想不想继续玩下去?回家后把这个方法教给邻里的小朋友,和他们用打扑克的方式进行计算。可以四人一组,每人发一张牌,用这四张牌计算24点,每张牌只能用一次,若出现不能计算时,每个人拿回自己的牌,重新再发一张。谁先算出24点谁就获胜一次,可以将其余三人的牌收为己有,最后谁得的牌越多,谁就是本组的计算24点小能手。回家和你的家人或者小伙伴玩一玩这个游戏吧,今天这节课就上到这里,下课,谢谢同学们,谢谢所有来现场指导的老师们。
第四篇:小学数学趣味教学:扑克牌玩24点玩算术游戏
昨日上午9时,北部新区童心小学四年级1班教室里,一堂数学课正在进行。不过,孩子们没有端正坐好听老师讲课,却三三两两玩起了扑克牌,你一张我一张出得很欢快,不时还传来我的牌最多,我赢了的欢呼声。
小学生在课堂上玩扑克牌?其实,他们是在用扑克牌玩24点算术游戏,这也是数学老师张先彬教学方法里重要的一部分。
比练习综合算术好玩多了
上课前,张先彬先把3副扑克牌分发到了班上的12位同学手中,然后问了一个与课堂似乎不太相干的问题:扑克牌,大家都听说过哪些玩法?问题一出,课堂上突然活跃了起来,我知道干瞪眼!我知道斗地主!我知道升级!
张先彬将班上12位同学分成3组,每4个人拿一副扑克牌。一副牌去掉大小王之后,还剩52张,除了数字牌外,J、Q、K都代表数字10,A代表数字1,每人手上13张牌。每一局游戏中,每位同学出一张牌,同一组的4位同学用这4张牌分别代表的数字思考算法,谁最先想出结果是24的算法,谁就获得这4张牌,最后谁手中牌最多谁就赢。
童心小学是所新学校,本学期刚开课,四年级1班的同学都是从其它学校转学来的,所以只有12个人。张先彬说:24点其实人多更好玩,会有更多的题目和解法。
同学向星樾告诉重庆晚报记者,以前她不是特别喜欢做计算题,但是却很喜欢张老师的24点算术游戏,比练习综合算术好玩多了,一点都感觉不到算术的烦心。星樾妈妈认为,这样的数学课增加了趣味性,让孩子在快乐中学习,对成长非常有帮助。
24点算术游戏有17份教案
数学课结束后,张先彬告诉重庆晚报记者,看似简单的24点算术游戏,他一共就准备了17份教案,这些教案从简单到复杂,蕴含着小学数学加减乘除四则运算的学习过程。
张先彬介绍说,17份教案就是17个课时,二年级开始学第1课时,随着运算学习的递进,到四年级时就可以学到后面的课时。也就是说,24点算术游戏课将穿插到二年级至四年级加减乘除运算学习的整个过程中,适时提高孩子的运算兴趣。
当然,平时的教学都是按照教学大纲进行,但是用什么样的方法进行教学,为孩子带来收获,我有自己的设计,24点游戏事实上就是四则运算的教学内容之一。张先彬说,在其它我任教的班上,二年级、三年级也将陆续用上这套教案。
北部新区童心小学校长秦波告诉记者,该校的教学理念是保护儿童的童真和天性,让他们在快乐中成长,所以老师们的教学方式都由自己决定,学校不做硬性安排。张先彬老师在这样的教学理念下,可以自由施展自己的教学才华。
这位数学老师还有很多招数
除了将24点算术游戏运用到教学中,数学老师张先彬还有很多招数。比如在小学一年级新生学到三角形、正方形、圆形的时候,引入找茬游戏,让孩子们在找茬游戏中辨别并记忆各种图形。
魔方也是教学重要道具。魔方非常有助于孩子智力发展,在玩魔方的过程中,可以学到图形的平面变化、空间变化,培养孩子的空间感。张先彬说。
此外,张先彬还要求孩子们写日记,当然,不是传统的语文课日记,而是数学日记。在孩子们的日记本上,密密麻麻地写着每天数学课的收获、思考过程。少则几十字,多则三四百字。
其实我没有要求字数,只要他们能写出数学学习中的思考,我就会努力抓住他们的闪光点,并运用到教学过程中。
张先彬说,你光是从数字答案中是看不出孩子的学习过程和思维的,只有通过孩子的表达,才能发现,培养孩子的数学思维比获取数学知识更关键,但这是个漫长的过程。
24点挑战赛
张先彬的17份教案中的最后一份是24点挑战赛。挑战赛有30题,其中部分题目比较基础,也有部分比较难,读者朋友们也来做一做,看能不能解答出这8组题目。
规则:用加减乘除四则运算,使每组数字运算结果为24,每个数字都必须使用,其中J、Q、K都代表10,A代表1。
答案:
1(8+8)9629(9-6)8
39(10-8))+649(610)+9
58(9-7)+86(108)-(78)
79(10-7)888(10-8)+8
第五篇:24点游戏
一、起源
24点游戏在我国已流行了几十年,据说是由华人孙士杰先生发明,他在1986年开始构思,而在1988年正式面世于美国。后来就在全美推广开了,并且迅速风行全美。在美国中小学生中,掀起了一股玩扑克牌“24点”的热潮。后来,竟发展成为一种全美学生的联赛。据说,通过玩这种游戏和比赛,许多美国学生的演算能力都有所提高,数学成绩进步神速。以至当时美国联邦政府教育部长拉马尔·亚历山大也感叹地说:“这种游戏寓教于乐,趣味盎然,而且既可以在学校课间玩,也可以在家里玩,十分方便。确实是一种提高学生数学成绩的法宝。”
二、玩法
计算“24点”的游戏内容如下:一副牌中抽去大小王剩下52张,其中A=1,J=11,Q=12,K=13 (如果初练也可只用1-10这40张牌)任意抽取4张牌(称之为一个牌组),用加、减、乘、除(可加括号)把牌面上的数算成24。每张牌必须用一次且只能用一次,如抽出的牌是
3、
8、
8、9,那么算式为(9-8)×8×3或 3×8÷(9-8)或(9-8÷8)×3等。
一般来讲,一个牌组的解法是多样的。当然也存在唯一解和无解的牌组,如
2、
2、
10、J,其算式只有(2×11-10)×2=24,而牌组
8、
8、
8、8用加、减、乘、除和括号是算不出24点的。这个游戏可以两个人玩,也可以三个人或四个人玩,甚至可以扩大到全班同学同时玩。一次出四张牌,谁先想到其运算结果是24 就抢先拍牌,然后说出运算过程。大家听后觉得他(她)说得有道理就把四张牌给他(她),已示鼓励。如果是全班同学同时玩,可把出牌的点数写在黑板上,看谁先举手然后说出运算过程,答案正确奖励扑克一张。也可分男生一组,女生一组或以班级原有小组为一组进行对抗赛,看那组给出的方法多。