小测试-04月18日

朝外信奥1队4月18号当堂测验_答案版

朝外信奥1队 4月18号当堂测验

答案版
题型:单项选择题 + 阅读程序题 + 完善程序题
题量:25 题
用途:课堂讲评
一、单项选择题(共10题)
每题只有一个正确选项,绿色为正确答案。
1. 下列存储器按存取速度由快到慢排列,正确的是( )。
A. 硬盘 > 内存 > 高速缓存 > 寄存器
B. 寄存器 > 高速缓存 > 内存 > 硬盘
C. 高速缓存 > 寄存器 > 内存 > 硬盘
D. 寄存器 > 内存 > 高速缓存 > 硬盘
答案:B。寄存器最快,其次是高速缓存、内存,最后是硬盘。
2. 杨辉三角的思想与下列哪种算法最接近?( )
A. 贪心
B. 递推
C. 二分
D. BFS
答案:B。杨辉三角每一项都由上一行相邻两项推出,属于递推。
3. 下列属于输入设备的是( )。
A. 显示器
B. 麦克风
C. 音箱
D. 打印机
答案:B。麦克风用于向计算机输入声音。
4. 小写字母 z 的 ASCII 码值是( )。
A. 120
B. 121
C. 122
D. 123
答案:C。z 的 ASCII 码是 122。
5. IP 地址是每台上网计算机所必需的,下列 IP 地址中可以作为合法主机地址的是( )。
A. 225.225.225.225
B. 200.256.192.8
C. 192.168.1.12
D. 0.0.0.0
答案:C。192.168.1.12 在常见私有网段内,是合法主机地址。
6. 下列可以用作 C++ 程序中的标识符的是( )。
A. default
B. private
C. this
D. them
答案:D。them 不是关键字或保留字,可以作为标识符。
7. 快速排序在最坏情况下运行的时间复杂度是( )。
A. O(log n)
B. O(n)
C. O(n^2)
D. O(n log n)
答案:C。当划分极不均匀时,快速排序退化为 O(n^2)。
8. 设字符串 a = "98",b = "123",使用 strcmp 函数比较两者大小的结果是( )。
A. a 大
B. b 大
C. 一样大
D. 无法判断
答案:A。strcmp 按字典序比较,首字符 9 > 1,所以 a 更大。
9. 关于计算机网络,下面的说法正确的是( )。
A. 现在的计算机互联网是俄罗斯人发明的
B. 计算机网络拓扑结构只包括星形、流水线型和环形
C. TCP/IP 是因特网的最基本协议
D. SMTP 属于物理层协议
答案:C。TCP/IP 是互联网最基础的协议族。
10. 关于信息安全与网络道德,下列做法正确的是( )。
A. 确认环境安全后再输入支付密码
B. 随意点击不熟悉邮件中的链接
C. 未经许可上传他人私密照片
D. 在微信里随意转发未经证实的信息
答案:A。输入支付密码前确认环境安全是正确做法。
二、阅读程序题(共2题)
判断题说明:true → T,false → F。
(1)阅读程序,回答 11~15 题
01 #include <bits/stdc++.h> 02 using namespace std; 03 const int SIZE = 100007; 04 int a[SIZE], b[SIZE]; 05 int main() 06 { 07 int n, m, p, q, count=0, ret=0; 08 cin >> n >> m; 09 for (int i = 1; i <= n; i++) 10 { 11 cin >> p >> q; 12 a[p]++; 13 a[q+1]–; 14 } 15 for (int i = 1; i <= m; i++) 16 { 17 count += a[i]; 18 ret += count; 19 } 20 cout << ret; 21 return 0; 22 }
11. 将第 7 行中的 count=0 去掉,只定义 count 变量,程序的运行结果不会改变。
A. T
B. F
答案:B。count 若不初始化,其值不确定,结果可能变化。
12. 将第 17 行和第 18 行互换位置,程序的运行结果不会发生变化。
A. T
B. F
答案:B。累加与更新顺序不能互换,否则结果改变。
13. 将第 15 行中的 i = 1 改为 i = 0,程序的运行结果不会改变。
A. T
B. F
答案:A。a[0] 初值为 0,额外循环一轮不影响结果。
14. 将第 12~13 行中的 p 和 q+1 分别改为 p-1 和 q,则输出结果( )。
A. 变大
B. 变小
C. 不变
D. 都有可能
答案:D。修改后有的输入会不变,有的会变化。
15. 若输入为 4 4 1 2 2 3 3 3 1 3,则输出为( )。
A. 6
B. 10
C. 7
D. 8
答案:D。题目给定输入下输出为 8。
(2)阅读程序,回答 16~21 题
01 #include <bits/stdc++.h> 02 using namespace std; 03 bool fun(int n) 04 { 05 int i=7; 06 if(n==2 || n==3 || n==5) 07 return true; 08 if(n==1 || n%2==0 || n%3==0 || n%5==0) 09 return false; 10 while(i*i<=n) 11 { 12 if (n%i==0) 13 return false; 14 i += 4; 15 if (n%i==0) 16 return false; 17 i += 2; 18 } 19 return true; 20 } 21 int main() 22 { 23 int n,m; 24 cin>>n>>m; 25 if(fun(n) && fun(m) && fun(n+m+1)) 26 cout<<"YES"<<endl; 27 else 28 cout<<"NO"<<endl; 29 return 0; 30 }
16. 程序中 n 和 m 只有输入正整数,程序的输出值才可能是 YES。
A. T
B. F
答案:B。n、m 取非正数时,fun 也可能返回 true。
17. 程序中用到了递归函数 bool fun(int n)。
A. T
B. F
答案:B。fun 是循环判断,不是递归。
18. 若输入 n 和 m 都是素数,程序的输出值一定是 YES。
A. T
B. F
答案:B。n、m 为素数时,n+m+1 不一定是素数。
19. 若输入 n 和 m 的值分别是 -1 和 2027,则程序的输出值是 YES。
A. T
B. F
答案:A。fun(-1) 会直接返回 true。
20. 若输出 YES,则输入可能为( )。
A. 23 29
B. 23 24
C. 23 27
D. 31 37
答案:A。23、29、53 都满足素数条件。
21. 若输出 NO,则输入可能为( )。
A. 53 127
B. 2029 -1
C. 2023 2027
D. 97 41
答案:C。2023 不是素数,因此输出 NO。
三、完善程序题(共4题)
根据题意和代码补全空格,绿色为正确答案。
阅读程序,本题目是使用栈求后缀表达式的值,根据题意和代码,完善程序。
01 #include <bits/stdc++.h> 02 using namespace std; 03 04 int main() { 05 stack<int> s; 06 char a[1005]; 07 int back, front, result; 08 cin >> a; 09 for (int i = 0; i < strlen(a); i++) { 10 if (a[i] >= '0' && a[i] <= '9') { 11 s.push(a[i] – '0'); 12 } else { 13 back = s.top(); 14 s.pop(); 15 front = s.top(); 16 s.pop(); 17 if (a[i] == '+') 18 result = front + back; 19 else if (a[i] == '-') 20 result = front – back; 21 else if (a[i] == '*') 22 result = front * back; 23 else if (a[i] == '/') 24 result = front / back; 25 else if (a[i] == '%') 26 result = front % back; 27 s.push(result); 28 } 29 } 30 cout << s.top() << endl; 31 return 0; 32 }
22. 第 9 行横线处应填( )。
A. 0
B. 1
C. 2
D. -1
答案:A。应从下标 0 开始遍历。
23. 第 10 行横线处应填( )。
A. '0'
B. '1'
C. '8'
D. '9'
答案:D。数字字符应到 '9'。
24. 第 17 行横线处应填( )。
A. '-'
B. '+'
C. '*'
D. '/'
答案:B。应判断加号运算。
25. 第 27 行横线处应填( )。
A. s.pop()
B. front
C. s.top()
D. result
答案:D。压栈的是运算结果 result。