#2338. L2-10 阶段复习与测评

L2-10 阶段复习与测评

  1. 以下关于C++函数的说法,错误的是() {{ select(1) }}
  • 函数可以提高代码的复用性
  • 函数定义时的参数称为形式参数,调用时的参数称为实际参数
  • 函数必须有返回值
  • 函数声明可以省略参数名,但必须明确参数类型
  1. 函数void swap(int &x, int &y)试图交换两个整数的值,调用后变量实际值会() {{ select(2) }}
  • 交换成功
  • 不交换
  • 可能交换也可能不交换
  • 编译错误
  1. 函数void swap(int x, int y)试图交换两个整数的值,调用后变量实际值会() {{ select(3) }}
  • 交换成功
  • 不交换
  • 可能交换也可能不交换
  • 编译错误
  1. 若有int a[3] = {1,2,3}; int *p = a;,则*(p+2)的值是() {{ select(4) }}
  • 1
  • 2
  • 3
  • 地址
  1. 以下结构体定义不正确的是() {{ select(5) }}
  • struct Student {int id; char name;} s1, s2;
  • struct {int age;} Person = {18};
  • struct Book {char title[20]; float price;} b1 = {"C++", 59.9};
  • struct Node {int data; Node *next;};(C++环境下)
  1. 关于结构体数组,说法错误的是() {{ select(6) }}
  • 可以通过循环遍历每个结构体元素
  • 结构体每个元素的成员类型必须一致
  • 定义时可以初始化
  • 数组名是该数组首元素的地址
  1. 以下关于 C++ 结构体定义和初始化的说法,正确的是() {{ select(7) }}
  • 结构体成员必须是相同数据类型
  • 结构体定义后不能直接初始化,必须先声明变量再赋值
  • struct Student {int id; string name;} s = {101, "Alice"}; 是合法的初始化方式
  • 结构体变量不能作为函数参数传递
  1. 递推算法的核心思想是()
    {{ select(8) }}
  • 将大问题分解为相似的小问题,逐步推导
  • 直接暴力枚举所有可能
  • 依赖函数自身调用
  • 随机尝试所有路径
  1. 以下递归函数存在的问题是() {{ select(9) }}
    int f(int n) {
        if (n == 0) return 0;
        return f(n) + 1;
    }
    
  • 终止条件错误
  • 递归深度无限(死递归)
  • 语法错误
  • 返回值类型错误
  1. 递推与递归相比,优势通常在于() {{ select(10) }}
  • 代码更简洁
  • 时间复杂度更低(无重复计算)
  • 更适合解决所有问题
  • 空间复杂度更高