#5289. YCL五级 C++ 理论题(整理版)
YCL五级 C++ 理论题(整理版)
YCL 五级 C++ 理论题
一、单选题(每题 2 分,共 15 题,合计 30 分)
1. 已知 int m = 0;,若下面各表达式分别在 m 初始值均为 0 的情况下单独计算,则与其他三个表达式结果不同的是( )
{{ select(1) }}
m++m += 1++mm + 1
2. 关于 C++ 函数中的形参和实参,下列说法正确的是( )
{{ select(2) }}
- 函数定义时参数列表中的参数称为形式参数,简称形参
- 函数调用时传入的参数称为形式参数,简称形参
- 函数调用时,是把形参复制给实参
- 函数定义时参数列表中的参数称为实际参数,简称实参
3. 对于一个 C++ 程序,以下叙述中正确的是( )
{{ select(3) }}
- 程序的执行通常从
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) }}
- 程序在某一台电脑上实际运行了多少秒
- 源代码一共有多少行
- 随输入规模增长,算法基本操作次数的增长趋势
- 程序中一共有多少条 C++ 语句
7. 若二维数组 a 有 m 行 n 列,并按 C++ 的行优先方式存储,则在 a[i][j] 之前共有多少个数组元素(下标从 0 开始)?
{{ select(7) }}
i * n + ji * m + ji * n + n + ji * 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) }}
- 函数可以接收参数,也可以没有参数
- 函数定义只写出函数名即可,不需要说明返回类型和函数体
- 一个函数可以被其他函数调用
- 函数可以通过
return返回结果(void函数也可以不返回数值)
12. 按照“FILO(先进后出)”原则组织数据的数据结构是( )
{{ select(12) }}
- 堆
- 栈
- 队列
- 链表
13. 已知数组定义如下:
int a[10][10];
若按行优先、下标从 0 开始计数,则数组中的第 10 个元素是( )
{{ select(13) }}
a[0][10]a[1][0]a[0][9]a[1][9]
14. 下列字符数组初始化方式中,错误的是( )
{{ select(14) }}
char s[] = "goodluck";char s[20] = "GoodLuck";char s[] = {'g', 'o', 'o', 'd'};char s[4] = "good";
15. 在常见 ASCII 编码环境下,若字符变量 c 中存放的是小写英文字母,下列可以将其转换为对应大写字母的是( )
{{ select(15) }}
c = c - 'A'c = c - 26c = c - 32c = c + 'a' - 'Z'
二、多选题(每题 3 分,共 5 题,合计 15 分)
16. 关于表达式 '9' - '0',下面说法错误的有( )
{{ 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 - 程序执行后,变量
c的值为200 - 程序执行后,
main函数中的变量b的值仍为100
18. 甲、乙、丙三个人在一起做一道数学题。三个人都给出答案后:
- 甲说:“我做错了。”
- 乙说:“甲做对了。”
- 丙说:“我做错了。”
丁看过三人的答案后说:
“你们三个人中,恰好有一个人做对了,并且恰好有一个人说对了。”
下面说法正确的有( )
{{ multiselect(18) }}
- 甲说得对
- 乙说得对
- 丙做得对
- 甲做得对
19. 以下关于 C++ 程序的叙述中,错误的有( )
{{ multiselect(19) }}
- 在允许的数据范围内,所有整数和实数都能被计算机准确无误地表示
- 一个 C++ 程序只能由
main函数组成 - 一个 C++ 程序可以由多个函数组成
- 一个 C++ 程序中只允许出现一个函数
20. 无名、有名、真名三个人是好朋友。他们三人中恰好有一人经商、一人是大学生、一人是士兵,并且三人的身份互不相同。
已知:
- 无名的年龄比士兵大;
- 大学生的年龄比有名小;
- 真名的年龄与大学生的年龄不同。
下面说法可能正确的有( )
{{ multiselect(20) }}
- 无名是大学生
- 有名是商人
- 有名是士兵
- 真名是商人
可以唯一确定三人的身份:
- 无名:大学生
- 有名:商人
- 真名:士兵 推理过程:
- “大学生的年龄比有名小”,说明有名不可能是大学生。
- “真名的年龄与大学生的年龄不同”,如果真名本人是大学生,那么“真名年龄=大学生年龄”,与条件矛盾,所以真名也不是大学生。
- 因此大学生只能是无名。
- 又因为“无名的年龄比士兵大”,所以士兵不可能是无名。
- 如果有名是士兵,那么:
- 无名 > 有名(无名比士兵大)
- 无名 < 有名(大学生比有名小,而无名就是大学生) 两者矛盾。
- 所以士兵只能是真名,剩下的有名就是商人。 年龄关系也能确定为: 有名 > 无名 > 真名。
粤公网安备44195502000252号