🎯 井字棋大作战
课后小测 · 共15题
趣味C++课后练习
⚠️ 本次练习已提交,答案已锁定。如需重新练习请联系老师。
🎉 答题完成!
0
📋 一键复制做题报告
📊 知识点掌握情况
第1题
单选题
数组与棋盘
在C++里,声明一个3×3的棋盘,正确的写法是?
B. char board[3][3];
A. char board[3,3];
C. char board[9];
D. int board[3];
正确答案:
B
二维数组要用两对方括号board[3][3],表示3行3列。类比电影院座位:先定第几排,再定第几号,两个下标缺一不可。
第2题
单选题
数组与棋盘
棋盘上 board[1][2] 这个位置,相当于电影院的?
C. 第1排(下标)第2号(下标)
A. 第1排第2排
B. 随便一个位置
D. 棋盘外面
正确答案:
C
类比电影院座位:第一个数board[1]是"第几排",第二个数[2]是"第几号"。board[1][2]就是第1排第2号那个座位。注意下标从0开始,所以程序里要把用户输入的1~3减1。
第3题
单选题
综合应用
3×3井字棋,一共有多少条能连成三个的胜利线?
D. 8条(3横+3竖+2对角)
A. 3条
B. 5条
C. 6条
正确答案:
D
横排3条、竖列3条、两条对角线,3+3+2=8条。就像在电影院找"哪三个座位刚好在一条直线上",横的、竖的、斜的都要数到。
第4题
单选题(中)
胜负判断
判断横排三个格子连成一样,正确的条件是?
A. board[i][0]==board[i][1] && board[i][1]==board[i][2]
B. board[i][0]==board[i][1]
C. board[i][0]+board[i][1]+board[i][2]
D. board[i][0]=='X'
正确答案:
A
三个格子要全相等:第一个等于第二个,第二个等于第三个,两个条件用&&连起来。只判前两个相等不够——万一第三个是空的'.'呢?所以还要先排除'.'。
第5题
单选题
胜负判断
把"判断胜负"打包成一个函数checkWin(),主要好处是?
B. 玩家下完、电脑下完都能调用同一段判断代码,不用重复写
A. 让程序变慢
C. 没办法判断输赢
D. 只能调用一次
正确答案:
B
函数封装就是"把重复用的代码打包起名字"。玩家下完调一次checkWin(),电脑下完再调一次,同一段8条线判断代码复用两次,改起来也只改一处。
第6题
单选题(中)
综合应用
电脑随机选落子位置,rand()%3 得到的数字是?
A. 0、1、2
B. 1、2、3
C. 1~9
D. 0~9
正确答案:
A
rand()%3除以3的余数只有0、1、2,正好对应棋盘下标0~2。这次不用+1,因为数组下标本来就是从0开始的!
第7题
单选题
综合应用
电脑随机选到一个已经被占的格子,代码里用什么办法解决?
C. do-while循环,选到空位才停
A. 不管它直接下
B. 程序退出
D. 报错死机
正确答案:
C
用do-while:先随机选cr、cc,再检查board[cr][cc]是不是空位'.',不是就再随机选,直到选到空位为止。这叫"碰运气直到满意"。
第8题
单选题(中)
综合应用
老师秘诀说"开局抢中",中间那个位置的下标是?
B. board[1][1]
A. board[0][0]
C. board[3][3]
D. board[2][2]
正确答案:
B
3×3棋盘下标0、1、2,正中间就是(1,1)。中间能连4条线(横中、竖中、两条对角),地盘最大,所以老师秘诀说开局先抢中间。
第9题
单选题
综合应用
checkWin()返回1代表什么意思?
A. 玩家(X)赢了
B. 电脑(O)赢了
C. 平局
D. 还没下完
正确答案:
A
约定:返回1=玩家X赢、返回2=电脑O赢、返回0=平局、返回-1=还没下完。代码里看到board[i][0]=='X'就返回1,=='O'就返回2。
第10题
单选题(难)
综合应用
"博弈策略"里说下棋要先想对手下一步,这最接近下面哪个做法?
D. 发现对手两个子连成一线,提前占住第三个空位堵他
A. 闭眼随便下
B. 只想着自己连线,不管对手
C. 下完就关机
正确答案:
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连一线,第三个空位就是要堵的地方。
提交答案