朝外信奥 2 队 2026-05-31 笔试训练题目

答案版
题型:单项选择题
题量:27 题
用途:课堂讲评 / LearnDash 嵌入
一、单项选择题(共 15 题)
每题只有一个正确选项,绿色为正确答案。
1. 在网络上,若某台电脑的设备及数据可由其他电脑共享,这台电脑称为( )。
A. 个人计算机
B. 副机
C. 服务器
D. 主机
答案:C。服务器专门用于提供资源共享和服务。
2. C++ 运行程序时,是在哪种存储器中进行的( )。
A. 硬盘
B. RAM
C. ROM
D. CACHE
答案:B。程序运行时代码和数据存储在随机存取存储器(RAM)中。
3. 连接到 Internet 上的每台计算机都必须有 1 个( )地址,该地址共含( )个字节。前面若干个字节表示( );后面若干个字节表示( )。为了避免都使用数字,人们经常用字母替代,这些名字称为( )。
A. IP、四、网络地址、计算机地址、网
B. 网络、四、IP、地址、网内计算机地址、域名
C. 网络、不超过十、网页、网址、网名
D. IP、四、网络地址、网内计算机地址、域名
答案:D。IPv4 为 4 字节,由网络地址和主机地址组成,字母替代名即域名。
4. 下列由不同进制表示的数中,最大的一个数是( )。
A. (220.1)10
B. (11011011.1)2
C. (334.1)8
D. (DC.1)16
答案:C。转换至十进制:B=219.5, C=220.125, D=220.0625。C 最大。
5. 顺序表的优点是( )。
A. 插入效率高
B. 适用各种结构
C. 存储密度高
D. 删除效率高
答案:C。顺序表不需额外指针空间,存储利用率最高。
6. 设 a = 6,b = 11,则表达式 (a << 1) ^ b 的值是( )。
A. 7
B. 6
C. 5
D. 9
答案:A。6<<1=12(1100), 11(1011),异或结果为 0111(7)。
7. 下列选项中,不属于算法五大特征的是( )。
A. 有穷性
B. 确定性
C. 可行性
D. 递归性
答案:D。算法特征:有穷、确定、可行、输入、输出。递归是实现方式。
8. 下列数据结构中,属于非线性结构的是( )。
A. 顺序表
B. 链表
C. 栈
D. 二叉树
答案:D。树和图是非线性结构。
9. 若一个线性表需要频繁在中间位置进行插入和删除操作,则适合采用( )。
A. 顺序表
B. 链表
C. 数组
D. 栈
答案:B。链表插入删除时间复杂度为 O(1)(找到位置后)。
10. 当 A >= B && B >= C 为真时,表达式 A > C || B == C 的值( )。
A. 为真
B. 无法判定
C. 为假
D. 仅相等时真
答案:A。若A>C则为真;若A=C,因A>=B>=C,必有A=B=C,则B==C为真。
11. 下列关于链表的说法中,正确的是( )。
A. 单链表有两个指针
B. 双向只能往后
C. 循环尾可指头
D. 静态分布必连续
答案:C。循环链表的特征是首尾相连。
12. 甲箱子中有 20 个螺杆,其中有 16 个 A 型螺杆,乙箱子中有 24 个螺母,其中有 18 个 A 型,现从甲、乙两箱中各任取一个,能配成 A 型螺栓的概率为多少( )。
A. 1/20
B. 19/20
C. 3/5
D. 15/16
答案:C。(16/20) * (18/24) = 4/5 * 3/4 = 3/5。
13. 数组不具有的特点是( )。
A. 随机访问
B. 插入不需移动
C. 连续内存
D. 空间成正比
答案:B。数组插入删除通常需要移动后续元素。
14. 8 颗子弹按 1-8 序入栈,不可能的出栈序列是( )。
A. 12345678
B. 87654321
C. 32154876
D. 32164587
答案:D。6出栈后,5必须在4之前出栈,D序列违反了栈的特性。
15. 十进制数 111 和 101 的异或运算结果是( )。
A. 10
B. 3
C. 64
D. 8
答案:A。111(1101111) ^ 101(1100101) = 0001010(10)。
二、阅读程序
(一)计算数位累加,回答 16~19 题
#include <iostream>
int n, i, m, j, h, b[11];
int main() {
scanf("%d", &n);
for (i = 1; i <= 10; i++) {
m = n; j = 11;
while (m > 0) {
j = j - 1; b[j] = m % 10; m = m / 10;
}
for (h = 1; h <= 10; h++) n = n + b[h];
}
printf("%d", n);
return 0;
}
}
16. 将第 9 行修改为 while(m),输出结果不变。
A. TRUE
B. FALSE
答案:A。在 C++ 中非 0 即为真,对正整数 m 效果一致。
17. 时间复杂度为 O(n)。
A. TRUE
B. FALSE
答案:B。复杂度与 n 的位数有关,约 O(10 * log10(n)),即 O(log n)。
18. 当输入为 1234 时,输出为:
A. 1345
B. 1348
C. 1248
D. 1145
答案:B。每一轮 n 增加其当前数位之和,10 轮后为 1348。
19. 当输入为 1145 时,输出为:
A. 1265
B. 1145
C. 1255
D. 1919
答案:A。逻辑同上,累加 10 次数位和。
(二)最大子段和变体,回答 20~23 题
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int s, maxx;
int a[11];
int main() {
for (int i = 1; i <= 10; i++) cin >> a[i];
maxx = a[1]; s = a[1];
for (int i = 2; i <= 10; i++) {
if (s < 0) s = 0;
s = s + a[i];
if (s > maxx) maxx = s;
}
printf("%d", maxx);
return 0;
}
}
20. 将第 3 行删除,程序也能得到正确结果。
A. TRUE
B. FALSE
答案:A。第 3 行是 #include <cmath>,本程序没有用到数学函数,删除这一行后仍可正确编译并得到相同结果。
21. 将第 13 行 < 改为 <=,结果不变。
A. TRUE
B. FALSE
答案:A。s=0 时重新设为 0 不影响后续累加。
22. 输入 8 9 -1 24 6 5 11 15 -28 9 时,输出为:
A. 78
B. 24
C. 77
D. 50
答案:C。计算 8+9-1+24+6+5+11+15 = 77。
23. 将第 13 行(s<0 重置)删除,输出为:
A. 78
B. 24
C. 50
D. 77
答案:D。本题输入中 s 从未跌破 0,故该行是否删除不影响结果。
(三)组合数性质,回答 24~27 题
int co(int i1) {
int j1, s1; s1 = n;
for (int j1 = n - 1; j1 >= n - i1 + 1; --j1)
s1 = (s1 * j1) / (n - j1 + 1);
return s1;
}
int main() {
s = n + 1;
for (int i = 2; i <= n; ++i) s = s + co(i);
printf("s=%d", s);
}
24. 将 i=2 改为 i=1,结果不变。
A. TRUE
B. FALSE
答案:B。会多加一次 C(10, 1)=10。
25. 将第 8 行的 j1 去掉(循环变量重复声明),结果不变。
A. TRUE
B. FALSE
答案:A。for 循环内已重新声明。
26. 该程序的时间复杂度为:
A. O(n)
B. O(nlogn)
C. O(n^2)
D. O(2^n)
答案:C。双重循环。
27. 程序输出为:
A. s=512
B. s=1024
C. s=256
D. s=2048
答案:B。结果等于 ΣC(10, i),即 2^10 = 1024。