2026年绍兴市信息学竞赛练习卷
一、单项选择题(共20题,每题3分,共计60分;每题有且仅有一个正确选项)
1. 下列软件中,用于音频编辑的是( )。
A. Photoshop
B. Audacity
C. Microsoft Word
D. Excel
2. 关于网络安全,下列做法正确的是( )。
A. 使用公共Wi-Fi进行网上银行操作
B. 随意点击来自陌生人的邮件链接
C. 定期更新操作系统和应用程序
D. 将所有密码设置为相同的简单数字
3. 已知字符“A”的十进制ASCII编码值是65,则字符“M”的十六进制ASCII编码值是( )。
A. 4D
B. 77
C. 4C
D. 6D
4. 下列哪个是合法的电子邮件地址?( )
A. example@.com
B. example@domain.com
C. example@domain
D. .com@example
5. 执行以下代码片段后,变量x的值是多少?
int x = 5, y = 10;
if (x > y) {
x = x + y;
} else {
x = x - y;
}
A. 15
B. -5
C. 5
D. 10
6. 下列计算机网络相关名词解释错误的是( )。
A. HTML: 超文本标记语言
B. FTP: 文件传输协议
C. DNS: 域名系统
D. HTTP: 远程登录协议
7. 十进制数 255 的二进制表示是( )。
A. 11111111
B. 10000000
C. 11110000
D. 00001111
8. 一部高清电影的容量约为2GB,这里的2GB等于多少字节?
A. 2 * 1024 * 1024
B. 2 * 1024 * 1024 * 1024
C. 2 * 1000 * 1000
D. 2 * 1000 * 1000 * 1000
9. 在C++中,定义一个二维数组int arr[5][10];,该数组占用多少字节的内存空间?(假设int类型占4字节)
A. 20
B. 50
C. 200
D. 40
10. 一个栈的入栈顺序是a, b, c, d, e,如果第一个出栈的是e,则第三个出栈的可能是( )。
A. a
B. b
C. c
D. d
11. 一个具有n个节点的完全二叉树,其深度为( )。
A. log₂n
B. log₂n + 1
C. n
D. n-1
12. 由3个a,2个b和1个c构成的所有字符串中,包含子串“abc”的共有( )个。A. 6
B. 12
C. 24
D. 36
13. 下列关于算法的说法,正确的是( )。
A. 算法必须有至少一个输入和一个输出
B. 算法的时间复杂度总是可以精确计算的
C. 算法是解决特定问题的有限步骤集合
D. 算法只能用流程图表示
14. 对数组(15, -3, 24, 12, 7, 5, 19, -2)进行从小到大排序,使用冒泡排序算法,最少需要交换( )次。
A. 4
B. 5
C. 6
D. 7
15. 已知变量year = 2026,能正确获取其十位上数字2的表达式是( )。
A. year / 10 % 10
B. year % 100 / 10
C. year / 100 % 10
D. year % 10 / 10
16. 若变量a为int类型,x、y为float类型,且a = 5, x = 3.2, y = 4.1,则执行cout << x + a / 2 * (int)(x + y) % 3;的结果是( )。
A. 3.2
B. 4.2
C. 5.2
D. 运行错误
17. 下列排序算法中,平均时间复杂度为O(n²)的是( )。
A. 快速排序
B. 归并排序
C. 冒泡排序
D. 堆排序
18. 有5个不同的科研项目分配给3所大学,每所大学至少获得一个项目,共有( )种分配方案。
A. 60
B. 90
C. 120
D. 150
19. 小明有12枚外观相同的硬币,其中有一枚是假币,重量稍轻。使用不带砝码的天平称重,最少需要称( )次才能确保找出假币。
A. 3
B. 4
C. 5
D. 6
20. 有20只皮卡丘排成一圈,编号从1到20顺时针排列。[18]从编号为1的皮卡丘开始,顺时针数到第n只(n从1开始递增),数完一圈后继续下一圈。当数到第2026只时,对应的皮卡丘编号是( )。
A. 6
B. 7
C. 8
D. 9
二、程序阅读理解题(共3大题,每大题分判断题和选择题,判断题1.5分,选择题4分,共计40分)
1. 阅读以下C++程序并回答问题
#include <cstdio>
const int MOD = 1000;
int n, i, sum = 0, a[100];
int main() {
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
a[i] %= MOD;
}
for (i = 0; i < n; i++) {
sum = (sum + a[i]) % MOD;
}
printf("%d\n", sum);
return 0;
}
判断题
(1) 如果输入的n为1000,则在访问数组a时不会越界。( )
(2) 如果输入的n为1,且输入的a[0]为1500,则输出结果为500。( )
(3) 该程序的时间复杂度为O(n)。( )
选择题
(4) 如果输入的n为100,a[i]为0到2000之间的整数,那么输出可能的最大值是( )。
A. 999
B. 1000
C. 1999
D. 2000
(5) 如果将MOD的值改为100,其他条件不变,输出可能的最大值是( )。
A. 99
B. 100
C. 199
D. 200
2. 阅读以下C++程序并回答问题
#include <cstdio>
int n, i, a[100010], maxPos;
long long sum = 0;
int main() {
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
maxPos = n - 1;
for (i = n - 2; i >= 0; i--) {
if (a[i] > a[maxPos]) {
maxPos = i;
}
sum += maxPos - i;
}
printf("%lld\n", sum);
return 0;
}
判断题
(1) 如果输入的n是不超过100000的整数,a[i]是不超过1000000的整数,那么输出的sum一定不会小于0。( )
(2) 如果将第8行的maxPos = n - 1;改为maxPos = 0;,并将循环改为for (i = 0; i < n; i++),同时修改比较条件为a[i] < a[maxPos],输出结果不变。( )
(3) 如果输入的n为3,a数组为{3, 1, 2},那么输出的sum为2。( )
选择题
(4) 如果输入的n为5,a数组为{1, 5, 3, 4, 2},那么输出的sum为( )。
A. 6
B. 7
C. 8
D. 9
(5) 如果输入的n确定,a数组为递减序列,那么输出的sum可能的最大值是( )。
A. n(n-1)/2
B. n(n+1)/2
C. n²
D. n
3. 阅读以下C++程序并回答问题
#include <cstdio>
int n, i, j, flag = 1, count1 = 0, count2 = 0;
int a[1010], b[1010];
int main() {
scanf("%d", &n);
for (i = 0; i < n; i++) scanf("%d", &a[i]);
for (i = 0; i < n; i++) scanf("%d", &b[i]);
for (i = 0; i < n - 1; i++) {
if (a[i] > a[i + 1]) flag = 0;
if (b[i] > b[i + 1]) flag = 0;
}
if (!flag) {
printf("invalid data\n");
return 0;
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (a[i] > b[j]) count1++;
}
}
printf("%d\n", count1);
int pos = 0;
for (i = 0; i < n; i++) {
while (pos < n && b[pos] < a[i]) pos++;
count2 += pos;
}
printf("%d\n", count2);
return 0;
}
判断题
(1) 如果输入的n是不超过1000的正整数,a[i]、b[i]是不超过1000000的正整数,那么输出的count1与count2一定不相等。( )
(2) 如果将第16行的if (a[i] > b[j])改为if (a[i] < b[j]),并将第22行的count2 += pos;改为count2 += n - pos;,输出的count1与count2一定相等。( )
选择题
(3) 当输入的n为4,a数组为{1, 3, 5, 7},b数组为{2, 4, 6, 8}时,输出的count2为( )。
A. 4
B. 6
C. 8
D. 10
(4) 第20到第23行的时间复杂度为( )。
A. O(n)
B. O(n²)
C. O(n!)
D. O(nlogn)
(5) 若输入的n确定,a数组和b数组均为递增序列,且a数组的最大值小于b数组的最小值,则输出的count2可能的最大值为( )。
A. n²
B. n(n+1)/2
C. n(n-1)/2
D. (n-1)²