#YCL5T01. YCL五级(C++)理论综合题(修订版)

YCL五级(C++)理论综合题(修订版)

YCL 青少年人工智能编程水平测试 - 五级(C++)理论综合题

本题根据原试卷第 1~20 题整理。单选题每题 2 分,多选题每题 3 分,共 45 分。

一、单选题(每题 2 分)

1. 自增表达式

已知 int m = 0;,下面表达式中,与其他三个表达式的值不相同的是( )。

{{ select(1) }}

  • m++
  • m += 1
  • ++m
  • m + 1

2. 形参和实参

关于 C++ 中形参和实参的描述,正确的是( )。

{{ select(2) }}

  • 函数定义时参数列表中的参数称为形式参数,简称形参
  • 函数调用时,系统会把形参复制给实参
  • 函数定义时参数列表中的参数称为实际参数,简称实参
  • 实参只能是变量,不能是常量或表达式

3. 程序入口

对于一个 C++ 程序,以下叙述正确的是( )。

{{ select(3) }}

  • 程序通常从 main 函数开始执行,并在 main 函数结束后终止
  • 程序总是从源文件中书写的第一个函数开始执行
  • 程序总是从源文件中书写的最后一个函数开始执行
  • 程序可以不包含 main 函数而直接运行

4. 哈希函数

关于哈希(hash)函数,下面说法最准确的是( )。

{{ select(4) }}

  • 哈希值可以无损还原出原始数据
  • 哈希函数与加密算法完全相同
  • 哈希值可用于校验文件内容是否一致
  • 相同的哈希值一定说明两个文件完全相同

5. 猜牌问题

箱子里有 16 张牌:红桃 A、Q、4;黑桃 J、8、4、2、7、3;草花 K、Q、4、5、6;方块 A、5。

无名取出一张牌,把点数告诉有名,把花色告诉真名。随后三人的对话如下:

  • 有名:“我不知道这张牌。”
  • 真名:“我知道你不知道这张牌。”
  • 有名:“现在我知道了。”
  • 真名:“我也知道了。”

无名拿到的是( )。

{{ select(5) }}

  • 红桃 A
  • 红桃 4
  • 方块 5
  • 方块 A

6. 时间复杂度

算法的时间复杂度主要表示( )。

{{ select(6) }}

  • 程序在某一台电脑上实际运行的秒数
  • 程序源代码的长度
  • 随问题规模增长,算法基本运算次数的增长趋势
  • 程序中语句的总条数

7. 二维数组位置

若二维数组 am 行、n 列,并按行优先存储,下标从 0 开始,则 a[i][j] 前面共有多少个元素?

{{ select(7) }}

  • i * n + j
  • i * m + j
  • i * n + n + j
  • i * n + n + j + 1

8. 算法描述

关于算法的描述,错误的是( )。

{{ select(8) }}

  • 算法是解决问题的准确而完整的步骤描述
  • 算法复杂度主要包括时间复杂度和“数据复杂度”
  • 算法具有确定性、可行性和有穷性等特征
  • 算法包括对数据的操作以及控制结构

9. 指针与数组

若有定义 int a[10], *p = a;,则 p + 5 表示( )。

{{ select(9) }}

  • 数组元素 a[5] 的值
  • 数组元素 a[5] 的地址
  • 数组元素 a[6] 的地址
  • 数组元素 a[0] 的值加 5

10. 右移运算

已知 int a = 20, b = 1;,那么 a >> b 的结果是( )。

{{ select(10) }}

  • 40
  • 20
  • 10
  • 1

11. 函数调用

关于 C++ 函数的描述,错误的是( )。

{{ select(11) }}

  • 函数可以有返回值,也可以使用 void 表示无返回值
  • 形参通常只在函数内部有效
  • 值传递时,在函数内部修改形参会直接改变调用处的实参
  • 同一个函数可以被多次调用

12. FILO 数据结构

按照“FILO(先进后出)”原则组织数据的结构是( )。

{{ select(12) }}

  • 队列
  • 链表

13. 二维数组元素

已知 int a[10][10];,按从第 1 个元素开始计数,数组 a 的第 10 个元素是( )。

{{ select(13) }}

  • a[0][10]
  • a[1][10]
  • a[0][9]
  • a[1][9]

14. 字符数组初始化

下列字符数组初始化中,错误的是( )。

{{ select(14) }}

  • char s[] = "goodluck";
  • char s[20] = "GoodLuck";
  • char s[] = {'g', 'o', 'o', 'd'};
  • char s[5] = "goodluck";

15. 小写字母转大写

已知字符变量 c 中存放的是一个小写英文字母,下列操作可将其转换为对应大写字母的是( )。

{{ select(15) }}

  • c = c - 'A';
  • c = c - 26;
  • c = c - 'a' + 'A';
  • c = c + 'a' - 'Z';

二、多选题(每题 3 分)

16. 字符运算

表达式 '9' - '0' 的值为整数 9。下面关于该表达式的说法中,错误的有( )。

{{ multiselect(16) }}

  • 结果是整数 9
  • 结果是字符 '9'
  • 表达式不合法
  • 结果是字符 '0'

17. 函数执行结果

阅读下面程序:

#include <iostream>
using namespace std;

int func(int a, int b) {
    int c;
    c = a * b;
    b = a;
    return c;
}

int main() {
    int a, b, c;
    a = 10;
    b = 100;
    c = func(a, b) + a;
    cout << c << endl;
    return 0;
}

下列说法正确的有( )。

{{ multiselect(17) }}

  • 程序执行后,main 中变量 a 的值为 10
  • 被调用的函数名称为 func
  • 程序执行后,main 中变量 c 的值为 200
  • 程序执行后,main 中变量 b 的值为 100

18. 真假话推理

甲、乙、丙三个人各自解答同一道题。甲说:“我做错了。”乙说:“甲做对了。”丙说:“我做错了。”丁看过答案后说:“三个人中恰好有一个人做对,且恰好有一个人说对。”

下列说法正确的有( )。

{{ multiselect(18) }}

  • 甲说得对
  • 乙说得对
  • 丙做得对
  • 甲做得对

19. C++ 程序组成

以下叙述中,错误的有( )。

{{ multiselect(19) }}

  • 在合法取值范围内,整数通常可以精确表示,而浮点数可能存在精度误差
  • C++ 程序只由 main 函数组成
  • C++ 程序可以由多个函数组成
  • C++ 程序中只允许定义一个函数

20. 身份推理

无名、有名、真名三人中,一人经商、一人上大学、一人参军。已知:

  • 无名的年龄比士兵大;
  • 大学生的年龄比有名小;
  • 真名的年龄与大学生的年龄不同。

下列说法可能正确的有( )。

{{ multiselect(20) }}

  • 无名是大学生
  • 有名是商人
  • 有名是士兵
  • 真名是商人