题目答案
72
题目解析
先定第一个棋子后,第二个棋子只能在与之不同的3行3列上选取,即有9种选法。 由于棋子的选择没有先后顺序,每种方案都被重复计算了一次,最终结果需要除以 2。因此总方案数计算如下:(16x9)/2。
题目答案
D
题目解析
下标最大的结点为最下最右的结点。2的四次方-1=15,
顺序存储会浪费空间,适合存储完全二叉树结构。各层结点的编号为(自左到右),第一层:1;第二层:2,3;第三层:6,7;第四层:15。
我的答案
12(将/8余1误认为找100以内8的倍数)
题目答案
13
题目解析
可以采用分析功能的方法。此程序计算 0~99 以内除以 8 余 1 的数有多少个。计算可知共 13 个。
题目答案
填空位置 ①:
cin.get()
填空位置 ②:
num = c - ‘0’
填空位置 ③:
c > ‘0’ && c < ‘9’
填空位置 ④:
num = num * 10 + c - ‘0’
填空位置 ⑤:
num = -num
题目解析
此题主要实现的是ReadInt函数,该函数通过逐个读取字符的方法读取一个整数。
该函数的正确流程应该是:过滤掉非数值字符,读取连续数值字符直到遇到非数值字符,同时将读取的字符转化为数值,最后输出数值。
所以,第一个while循环实现的功能是过滤非数字,这一步只需要不断读取就好,所以仿照上文写cin.get()。
当退出过滤非数字的while循环时有两种情况:读取到了数字的第一个字符或者读取到了负数标记。else分支对应的是读取到了数值,所以应该用字符c更新num的大小。
第三,四空是在读取连续的数字,因此循环条件为读取到的字符仍然为数字字符,对num的更新就是num*10+c-‘0’。注意:第二、三问的c值都必须减去‘0’对应的数值才是正确结果!
第五空对应的是负数的处理,如果负数标记为 1,那么应该取相反数。