一、单项选择题(共15题,每题2分,共30分)

  1. 【计算机基础】 下列不属于操作系统的是( )。

A. Windows

B. Linux

C. Python

D. macOS

  1. 【C++语法】 下列哪个关键字用于在C++中定义常量?

A. const

B. static

C. define

D. volatile

  1. 【C++语法】 表达式 (int)(3.14 * 2 + 0.5) 的值是( )。

A. 6

B. 6.28

C. 6.5

D. 7

  1. 【数组与字符串】 有定义 int arr[5] = {1, 2};,则 arr[3] 的值是( )。

A. 0

B. 1

C. 2

D. 随机值

  1. 【程序阅读】 以下代码段的输出是( )。
for (int i = 0; i < 5; i++) {
    if (i % 2 == 0) continue;
    cout << i << " ";
}

A. 0 2 4

B. 1 3

C. 0 1 2 3 4

D. 1 3 5

  1. 【逻辑推理】 有4个人要过一座桥,每次最多过两人,且只有一只手电筒(过桥必须用手电筒)。四人过桥所需时间分别为1分钟、2分钟、5分钟、10分钟。两人一起过桥时,以较慢者的时间为准。请问所有的人都过桥至少需要( )分钟。

A. 17

B. 18

C. 19

D. 20

  1. 【数据结构】 下列关于二叉树的叙述中,正确的是( )。

A. 二叉树中每个节点的度都小于等于2

B. 二叉树的深度等于其节点数

C. 完全二叉树一定也是满二叉树

D. 二叉树不能为空树

  1. 【算法概念】 下列排序算法中,平均时间复杂度为O(n log n)的是( )。

A. 冒泡排序

B. 插入排序

C. 选择排序

D. 归并排序

  1. 【数学知识】 从1, 2, 3, 4, 5这五个数字中任取两个数字,组成一个两位数,是偶数的概率是( )。

A. 1/5

B. 2/5

C. 3/5

D. 4/5

  1. 【程序阅读】 以下代码的输出是( )。
#include <iostream>
using namespace std;
void swap(int a, int b) {
    int temp = a;
    a = b;
    b = temp;
}
int main() {
    int x = 10, y = 20;
    swap(x, y);
    cout << x << " " << y;
    return 0;
}

A. 10 20

B. 20 10

C. 10 10

D. 20 20

  1. 【数据结构】 一个栈的入栈序列为1, 2, 3, 4, 5。下列哪个不可能是其出栈序列?

A. 3, 2, 1, 5, 4

B. 4, 3, 2, 1, 5

C. 2, 3, 1, 5, 4

D. 1, 2, 3, 4, 5

  1. 【算法概念】 递归函数必须包含( )。

A. for循环

B. while循环

C. 递归出口(终止条件)

D. 多个参数

  1. 【C++语法】 在C++中,下列关于函数的说法正确的是( )。

A. 函数必须返回一个值

B. 函数不能调用自身

C. 函数可以重载

D. 函数定义不能放在main函数之后

  1. 【程序阅读】 以下代码的输出是( )。
#include <iostream>
using namespace std;
int main() {
    int i = 0;
    while (i < 5) {
        i++;
        if (i == 3) break;
        cout << i << " ";
    }
    return 0;
}

A. 1 2

B. 1 2 3

C. 1 2 3 4

D. 1 2 3 4 5

  1. 【数学知识】 二进制数1101.101对应的十进制数是( )。

A. 13.625

B. 13.5

C. 12.625

D. 12.5

2 条评论

  • @ 2025-9-14 16:49:05

    参考答案及解析 一、单项选择题

    1. B 【解析】队列是先进先出(FIFO)的线性表。
    2. A 【解析】abs(-5)=5, sqrt(9)=3, pow(2,3)=8, 5+3+8=16。
    3. A 【解析】255除以16得15余15,15的十六进制是F,所以是FF。
    4. C 【解析】递归必须要有边界条件(终止条件)来结束递归,否则会无限递归导致栈溢出。
    5. D 【解析】最坏情况是逆序,需要进行 (n-1) + (n-2) + ... + 1 = n(n-1)/2 次交换。
    6. A 【解析】数组部分初始化,未初始化的元素会被默认初始化为0。
    7. C 【解析】二叉树性质:叶子结点数 n0 = n2 + 1。所以 n0 = 10 + 1 = 11。
    8. B 【解析】这段代码不使用临时变量,通过加减运算交换了 x 和 y 的值。
    9. C 【解析】A错,main函数标准写法是int main()或int main(int argc, char* argv[]);B错,一个程序只能有一个main函数;D错,//是单行注释,/* ... */是多行注释。
    10. B 【解析】continue跳过偶数。i=1,3,5时累加,1+3+5=9。
    11. A 【解析】算术运算符优先级:*, /, % > +, -。
    12. B 【解析】队列是FIFO,所以出队序列必须和入队序列一致,为1,2,3,4。
    13. B 【解析】选项B定义的字符数组没有以'\0'结束,因此不是一个C风格字符串,用cout输出会导致未定义行为。
    14. A 【解析】三目运算符:如果 a>b 为真,则表达式的值为 a,否则为 b。
    15. C 【解析】自底向上的动态规划通常使用循环迭代和数组(或表格)来存储子问题的解。 二、阅读程序 (一)
    16. √ 【解析】循环遍历所有可能因子,如果能整除则累加。
    17. √ 【解析】质数的因子只有1和它本身,所以和为n+1。
    18. A 【解析】单层循环,时间复杂度O(n)。
    19. A 【解析】12的因子有1,2,3,4,6,12,和为1+2+3+4+6+12=28。 (二)
    20. √ 【解析】递归过程不断除以2取余数,并逆序输出,正是十进制转二进制的算法。
    21. √ 【解析】10除以2商5余0,5除以2商2余1,2除以2商1余0,1除以2商0余1。逆序输出余数是1010。
    22. C 【解析】函数convert自己调用自己,是递归。
    23. B 【解析】main函数中对输入0做了特殊处理,直接输出0。 (三)
    24. × 【解析】冒泡排序是稳定的排序算法(相邻元素交换,不会破坏相等元素的相对顺序)。
    25. √ 【解析】已经有序,则内层循环的if条件始终不成立,swap不会执行。
    26. C 【解析】算法特征:相邻元素比较交换,每轮将最大元素“冒泡”到末尾,是典型的冒泡排序。
    27. A 【解析】最好情况是已经有序,内层循环遍历一次但无交换,外层循环仍进行n-1次,时间复杂度是O(n²)。(原答案O(n)是错的,已修正) 虽然可以通过设置标志位优化到O(n),但本题代码未做此优化。 三、完善程序 (一)
    28. C 【解析】判断质数只需遍历到 sqrt(n) 即可,因为如果 n 有大于 sqrt(n) 的因子,那么它必然有一个小于 sqrt(n) 的对应因子。
    29. A 【解析】如果 n 能被 i 整除(n % i == 0),则 n 不是质数。
    30. D 【解析】is_prime 是布尔变量,其值本身就可作为条件。is_prime == true 是等价的写法。 (二)
    31. A 【解析】根据状态转移方程,到达(i, j)的路径数等于从左边(i, j-1)来的路径数加上从上面(i-1, j)来的路径数。
    32. C 【解析】数组下标从0开始,终点是(n-1, m-1)。
    • @ 2025-9-13 10:11:12

      C A A A A

      A A D B A

      C C C A A

      • 1