🎯 井字棋大作战

课后小测 · 共15题

趣味C++课后练习
⚠️ 本次练习已提交,答案已锁定。如需重新练习请联系老师。
🎉 答题完成!
0
第1题 单选题 数组与棋盘
在C++里,声明一个3×3的棋盘,正确的写法是?
正确答案:B
二维数组要用两对方括号board[3][3],表示3行3列。类比电影院座位:先定第几排,再定第几号,两个下标缺一不可。
第2题 单选题 数组与棋盘
棋盘上 board[1][2] 这个位置,相当于电影院的?
正确答案:C
类比电影院座位:第一个数board[1]是"第几排",第二个数[2]是"第几号"。board[1][2]就是第1排第2号那个座位。注意下标从0开始,所以程序里要把用户输入的1~3减1。
第3题 单选题 综合应用
3×3井字棋,一共有多少条能连成三个的胜利线?
正确答案:D
横排3条、竖列3条、两条对角线,3+3+2=8条。就像在电影院找"哪三个座位刚好在一条直线上",横的、竖的、斜的都要数到。
第4题 单选题(中) 胜负判断
判断横排三个格子连成一样,正确的条件是?
正确答案:A
三个格子要全相等:第一个等于第二个,第二个等于第三个,两个条件用&&连起来。只判前两个相等不够——万一第三个是空的'.'呢?所以还要先排除'.'。
第5题 单选题 胜负判断
把"判断胜负"打包成一个函数checkWin(),主要好处是?
正确答案:B
函数封装就是"把重复用的代码打包起名字"。玩家下完调一次checkWin(),电脑下完再调一次,同一段8条线判断代码复用两次,改起来也只改一处。
第6题 单选题(中) 综合应用
电脑随机选落子位置,rand()%3 得到的数字是?
正确答案:A
rand()%3除以3的余数只有0、1、2,正好对应棋盘下标0~2。这次不用+1,因为数组下标本来就是从0开始的!
第7题 单选题 综合应用
电脑随机选到一个已经被占的格子,代码里用什么办法解决?
正确答案:C
用do-while:先随机选cr、cc,再检查board[cr][cc]是不是空位'.',不是就再随机选,直到选到空位为止。这叫"碰运气直到满意"。
第8题 单选题(中) 综合应用
老师秘诀说"开局抢中",中间那个位置的下标是?
正确答案:B
3×3棋盘下标0、1、2,正中间就是(1,1)。中间能连4条线(横中、竖中、两条对角),地盘最大,所以老师秘诀说开局先抢中间。
第9题 单选题 综合应用
checkWin()返回1代表什么意思?
正确答案:A
约定:返回1=玩家X赢、返回2=电脑O赢、返回0=平局、返回-1=还没下完。代码里看到board[i][0]=='X'就返回1,=='O'就返回2。
第10题 单选题(难) 综合应用
"博弈策略"里说下棋要先想对手下一步,这最接近下面哪个做法?
正确答案:D
博弈策略=站在对手角度想"他下一步会去哪"。发现对手两个X连一线,第三个位子就是他要赢的地方,提前占住就堵住了。这也是拓展2"堵截AI"的核心思想。
第11题 判断题 数组与棋盘
二维数组 board[3][3] 里一共有9个格子。
正确答案:✅ 正确
3行×3列=9个格子,用双重循环for(i)套for(j)正好遍历全部9个位置。
第12题 判断题 数组与棋盘
初始化棋盘时,所有格子应该先放成'X'。
正确答案:❌ 错误
开局棋盘是空的!应该全部初始化为'.'(空),等玩家或电脑落子后才变成X或O。一开始就放X那还没下就赢了。
第13题 判断题(中) 胜负判断
判断胜负时,只要有两个格子一样就说明有人赢了。
正确答案:❌ 错误
要三个连成一线才算赢!两个一样只是"快赢了",还需要堵。判断条件必须是三个格子都相等,即a==b && b==c。
第14题 判断题 数组与棋盘
对角线也算一条胜利线,比如 board[0][0]、board[1][1]、board[2][2]。
正确答案:✅ 正确
两条对角线是:左上→右下(0,0)(1,1)(2,2),和右上→左下(0,2)(1,1)(2,0)。它们也能连成一线,所以8条线里占了2条。
第15题 判断题(难) 综合应用
"侦探破案"这个类比,说的是下棋时通过观察已有棋子推理出关键位置。
正确答案:✅ 正确
侦探看现场线索推理凶手位置,下棋看已有两个连着的子推理出"第三个关键位子"。这就是逻辑推理在博弈里的应用——发现两个X连一线,第三个空位就是要堵的地方。