朝外信奥1队课堂练习(答案版)
25题逐题答案与讲解
说明:第9题与第20题保留了“原题有歧义”的教学备注,方便课堂讲解。
第 1 题
在 C++ 程序中,假设一个字符占用的内存空间是 1 字节,则下列程序中,s 占用的内存空间是( )字节。
char s[] = "hello ojers";
size_t cnt = strlen(s);
cout << cnt << endl;
A. 10 B. 11 C. 13 D. 12
答案:D
讲解:字符串 “hello ojers” 一共 11 个字符,再加字符串结尾的 \0,占 12 个字节。strlen(s) 统计的是有效字符个数 11,不包含结尾的 \0。
第 2 题
十六进制数 B2025 转换成八进制数是( )。
A. 2620045 B. 2004526 C. 729125 D. 2420045
答案:A
讲解:可先把十六进制转成二进制:B2025 = 1011 0010 0000 0010 0101,再每 3 位一组转成八进制,得到 2620045。
第 3 题
以下能正确定义二维数组的是( )。
A. int a[3][]; B. int a[][]; C. int a[][4]; D. int a[][2] = {{1,2},{1,2},{3,4}};
答案:D
讲解:二维数组定义时,除第一维外其余维数必须确定。A、B、C 都缺少必要信息,只有 D 在定义和初始化上完整合法。
第 4 题
二进制 [10000011] 原码和 [10000011] 补码表示的十进制数值分别是( )。
A. -125,-3 B. -3,-125 C. -3,-3 D. -125,-125
答案:B
讲解:原码最高位是符号位,10000011 表示 -3;补码 10000011 先求反码再加 1,可还原为 -125。
第 5 题
在 C++ 中,下列定义方式中,变量的值不能被修改的是( )。
A. unsigned int a = 5; B. static double d = 3.14; C. string s = “ccf csp-j”; D. const char c = ‘k’;
答案:D
讲解:const 表示常量,定义后不能再修改。unsigned、static、string 都不表示“不可修改”。
第 6 题
非递归的深度优先搜索算法经常用到的数据结构是( )。
A. 向量 B. 栈 C. 链表 D. 队列
答案:B
讲解:深度优先搜索需要“后进先出”的访问顺序,最典型的辅助数据结构就是栈。
第 7 题
关于递归,以下叙述中正确的是( )。
A. 动态规划算法都是用递归实现的 B. 递归比递推更高级,占用的内存空间更少 C. A 函数调用 B 函数,B 函数再调用 A 函数不属于递归的一种 D. 递归是通过调用自身来求解问题的编程技术
答案:D
讲解:递归的本质就是函数直接或间接调用自己。A、B、C 都不正确。
第 8 题
以下不属于计算机输入设备的是( )。
A. 扫描仪 B. 显示器 C. 鼠标 D. 麦克风
答案:B
讲解:显示器属于输出设备;扫描仪、鼠标、麦克风都属于输入设备。
第 9 题
关于排序算法,下面的说法中正确的是( )。
A. 快速排序算法在最好情况下的时间复杂度是 O(nlogn) B. 插入排序算法的时间复杂度是 O(nlogn) C. 归并排序算法的时间复杂度是 O(nlogn) D. 冒泡排序算法是不稳定的
答案:C
讲解:按常规单选题更适合选 C,因为归并排序的时间复杂度稳定为 O(nlogn)。但这题有歧义:A“快速排序最好情况为 O(nlogn)”也成立,因此严格说并非唯一答案。
备注:这道题作为单选题不够严谨,课堂上建议顺手说明有多个合理选项。
第 10 题
下列关于 C++ 语言的叙述中不正确的是( )。
A. 变量没有定义也能使用 B. 变量名不能以数字开头,且中间不能有空格 C. 变量名不能和 C++ 语言中的关键字重复 D. 变量在定义的时候可以不用赋值
答案:A
讲解:C++ 中变量必须先定义再使用。B、C、D 都是正确表述。
第 11 题
如果 x 和 y 均为 int 类型的变量,下列表达式中能正确判断“x 等于 y”的是( )。
A. (1 == (x / y)) B. (x == (x & y)) C. (0 == (x ^ y)) D. (y == (x | y))
答案:C
讲解:两个整数相等时,按位异或的结果一定是 0;反过来也成立,所以 0 == (x ^ y) 能判断 x 与 y 是否相等。
第 12 题
在如今的智能互联网时代,AI 如火如荼,除了计算机领域以外,通信领域的技术发展也做出了很大贡献。被称为“通信之父”的是( )。
A. 克劳德·香农 B. 莱昂哈德·欧拉 C. 约翰·冯·诺依曼 D. 戈登·摩尔
答案:A
讲解:香农奠定了信息论基础,常被称为“信息论之父”或“通信之父”。
第 13 题
一棵满二叉树的深度为 3(根结点的深度为 1),按照后序遍历的顺序从 1 开始编号,则根结点的右子结点的编号是( )。
A. 3 B. 6 C. 7 D. 5
答案:B
讲解:深度为 3 的满二叉树共有 7 个结点。后序遍历顺序为“左子树、右子树、根”,右子树的根会在整棵树根之前访问,因此编号为 6。
第 14 题
三头奶牛 Bessie、Elsie 和 Nancy 参加考试,考场是连续的 6 间牛棚,用栅栏隔开。为了防止作弊,任意两头奶牛都不能在相邻的牛棚,则考场共有( )种不同的方法。
A. 18 B. 24 C. 30 D. 48
答案:B
讲解:先从 6 个位置中选出 3 个互不相邻的位置,共有 C(4,3)=4 种;再把 3 头不同奶牛排列到这 3 个位置上,有 3!=6 种,所以总数为 4×6=24。
第 15 题
为强化安全意识,某学校准备在其消防日连续 10 天内随机抽取 3 天进行消防紧急疏散演习,抽取的 3 天为连续 3 天的概率为( )。
A. 3/10 B. 3/20 C. 1/15 D. 1/18
答案:C
讲解:从 10 天中任选 3 天共有 C(10,3)=120 种。连续 3 天的选法有 8 种,因此概率为 8/120=1/15。
第 16 题
已知 int a = 17, b = 5; 则表达式 a / b + a % b 的值是( )。
A. 3 B. 5 C. 6 D. 7
答案:B
讲解:整数除法 17 / 5 = 3,取余 17 % 5 = 2,所以结果为 3 + 2 = 5。
第 17 题
执行下面代码后,变量 s 的值是( )。
int s = 0;
for (int i = 1; i <= 4; i++) s += i;
A. 6 B. 10 C. 12 D. 16
答案:B
讲解:循环把 1、2、3、4 依次加到 s 上,所以 s = 1 + 2 + 3 + 4 = 10。
第 18 题
设 bool p = true, q = false; 则表达式 p && (!q) 的结果是( )。
A. true B. false C. 0 D. 无法确定
答案:A
讲解:!q 等于 true,而 p 也为 true,所以 true && true 的结果为 true。
第 19 题
下列循环中,执行次数恰好为 5 次的是( )。
A. for(int i=0;i<5;i++) B. for(int i=1;i<5;i++) C. for(int i=0;i<=5;i++) D. for(int i=1;i<=4;i++)
答案:A
讲解:A 中 i 依次取 0、1、2、3、4,共 5 次。B、D 都是 4 次,C 是 6 次。
第 20 题
输入一个正整数 n,若要判断它是否为偶数,条件表达式应写为( )。
A. n / 2 == 0 B. n % 2 == 0 C. n % 2 == 1 D. (n & 1) == 0
答案:B
讲解:按基础语法题的常规写法,选 B。它用“除以 2 的余数是否为 0”判断偶数。注意这题也有歧义:D 用位运算判断偶数同样正确。
备注:这道题作为单选题不够严谨,课堂上建议顺手说明有多个合理选项。
第 21 题
若 int x = 3; 执行 x += 2 * x; 后,x 的值是( )。
A. 5 B. 6 C. 9 D. 12
答案:C
讲解:先算右边 2*x = 6,再执行 x += 6,相当于 x = x + 6,所以结果是 9。
第 22 题
已知 char ch = ‘A’; 则表达式 ch + 1 对应的字符是( )。
A. A B. B C. C D. 66
答案:B
讲解:字符 ‘A’ 的 ASCII 码是 65,加 1 后得到 66,对应字符 ‘B’。
第 23 题
若数组定义为 int a[5] = {1,2,3,4,5}; 则 a[2] 的值是( )。
A. 2 B. 3 C. 4 D. 5
答案:B
讲解:C++ 数组下标从 0 开始,所以 a[0]=1,a[1]=2,a[2]=3。
第 24 题
已知 int n = 12345; 若要得到 n 的个位数字,正确的表达式是( )。
A. n / 10 B. n % 10 C. n / 100 D. n % 100
答案:B
讲解:一个整数除以 10 的余数就是它的个位数字,因此应写成 n % 10。
第 25 题
执行下面代码后,输出结果是( )。
int x = 1;
while (x < 8) x *= 2;
cout << x;
A. 4 B. 6 C. 8 D. 16
答案:C
讲解:x 的变化过程是 1→2→4→8。到 8 时条件 x < 8 不再成立,输出 8。