🎯 21点扑克牌对战

课后小测 · 共15题

趣味C++课后练习
⚠️ 本次练习已提交,答案已锁定。如需重新练习请联系老师。
🎉 答题完成!
0
第1题 单选题 点数判断
21点游戏中,J、Q、K(花牌)的点数是多少?
正确答案:B
21点规则里,J、Q、K一律当10点。所以代码里判断hand[i]>=10时,都加10分——不管是10还是J(11)Q(12)K(13)。
第2题 单选题 点数判断
A牌(Ace)在21点里可以当多少点?
正确答案:C
A是最灵活的牌!程序的算法是:先把A都当11(最"大"),如果加起来超过21爆了,就把一个A改成1(总和减10),还爆就再改一个。这样A永远选最有利的值。
第3题 单选题 点数判断
什么叫"爆牌(Bust)"?
正确答案:B
爆牌就是点数超过21,直接输掉该局。比如16点再要一张10点牌,就变成26爆了。所以16点要不要牌是个经典难题——这就是"走钢丝"的类比!
第4题 单选题 综合应用
赌场庄家的基本策略是什么?
正确答案:B
这是赌场定的"最优策略"——数学证明这样庄家长期胜率最高。代码里就是while(calcPoint(dealer,dCnt)<17)循环要牌,到17就自动停。
第5题 单选题 随机发牌
rand() % 13 + 1 生成的随机数范围是?
正确答案:B
rand()%13的余数是0~12,再加1变成1~13,正好对应A(1)、2~10、J(11)、Q(12)、K(13)。一副牌13个点数,完美对应!
第6题 单选题(中) 综合应用
数组 int hand[10] 最多能存几张牌?
正确答案:B
int hand[10]表示这个数组有10个位置,下标是0~9,所以能存10张牌。要访问第1张用hand[0],第10张用hand[9]——注意下标从0开始!
第7题 单选题(中) 综合应用
玩家19点,庄家18点,谁赢?
正确答案:A
21点规则:谁的点数更接近21(且不爆)谁赢。19比18大,更接近21,所以玩家赢。代码里就是else if(pP>dP) cout<<"你赢了"。
第8题 单选题(难) 点数判断
玩家22点(爆牌),庄家25点(也爆牌),这一局谁赢?
正确答案:B
这是21点最关键的规则!玩家先爆牌就直接输,庄家不用再要牌也赢。所以代码里第一个判断就是if(pP>21) cout<<"你爆牌,庄家赢"——玩家爆了就直接结束,不用比点数。
第9题 单选题(中) 综合应用
函数calcPoint(int hand[], int cnt)的作用是什么?
正确答案:B
这就是函数封装的威力!把"算点数"这件事写成函数,玩家算一次、庄家算一次、判胜负再算一次——写一次到处用,代码更简洁不容易错。函数参数hand[]是这手牌,cnt是有几张。
第10题 单选题(难) 点数判断
"爆牌概率"这个数学概念,生活类比是什么?
正确答案:A
爆牌概率类比"抽奖箱里剩多少炸弹"——箱子里10、J、Q、K这些"大牌炸弹"越多,你再摸一张就越可能爆。B是期望值的类比,C是策略决策的类比,D是简单统计的类比。
第11题 判断题 综合应用
A牌在任何情况下都必须当11点。
正确答案:❌ 错误
错误!A可以当1也可以当11。程序会自动选最有利的——先全当11,如果加起来爆了就把A改成1(总和减10)。比如A+5+10=16,A当11时总和16不爆,A当1时总和16也不爆,选11更有利。
第12题 判断题 点数判断
玩家爆牌(点数超过21)就直接输掉该局,不用再和庄家比点数。
正确答案:✅ 正确
正确!这是21点最重要的规则。玩家先爆先输,庄家即使也爆了也算玩家输。所以代码里第一个判断就是if(pP>21)直接输出"你爆牌,庄家赢"。
第13题 判断题(中) 综合应用
庄家在16点时必须停牌。
正确答案:❌ 错误
错误!庄家的规矩是"不到17必须要牌"。16点小于17,庄家必须再要一张。17点及以上才停牌。这就是赌场的基本策略。
第14题 判断题 综合应用
数组int hand[10]可以用hand[0]、hand[1]...hand[9]访问里面的牌。
正确答案:✅ 正确
正确!数组下标从0开始。hand[10]有10个位置,下标0~9。第1张牌用hand[0],第2张用hand[1]...这是C++数组的基本规则,别写成hand[10](那会越界)。
第15题 判断题(难) 综合应用
把"算一手牌点数"写成函数calcPoint(),可以在玩家算点、庄家算点、判胜负时重复使用。
正确答案:✅ 正确
正确!这就是函数封装的意义——写一次,到处用。如果不写函数,玩家算点要写一遍、庄家算点又要写一遍、判胜负再写一遍,代码又长又容易写错。函数让代码更简洁、更好维护。