乐于分享
好东西不私藏

CSP-J 第一轮第二期认证模拟题

CSP-J 第一轮第二期认证模拟题

本模拟题基于近十年CSP-J初赛命题规律编制,覆盖计算机基础、进制运算、数据结构、图论、组合数学等高频考点,整理的过程中难免有误,如有发现之处,及时反馈,我们将及时更新,谢谢大家。

如果有需要原题的留言,分享给你们。

一、单项选择题(共15题,每题2分,共计30分;每题有且仅有一个正确选项)

1.计算机中,CPU的主要功能是( )。

A. 存储数据和程序 

B. 进行算术运算和逻辑运算,并控制计算机各部件协调工作 

C. 实现人机交互 

D. 管理计算机的硬件资源

答案:B

2.十进制小数0.625转换成二进制是( )。

A. 0.101 

B. 0.110 

C. 0.111 

D. 0.100

答案:

解析:0.625 × 2 = 1.25 → 取10.25 × 2 = 0.5 → 取00.5 × 2 = 1.0 → 取1,得到 0.101

3.已知字符'A'ASCII码为 65,则字符 'F' ASCII码是( )。

A. 66 

B. 68 

C. 70 

D. 72

答案:

解析:'A'65'B'66'C'67'D'68'E'69'F'70

4.以下哪个不是合法的C++标识符?( )

A. _count 

B. int 

C. a123 

D. Name

答案:

解析:int 是 C++ 的保留关键字,不能用作标识符。

5.一棵完全二叉树有100个节点,则其叶子节点数为( )。

A. 50 

B. 49 

C. 51 

D. 48

答案:

解析:完全二叉树中,叶子节点数n/2⌉ 100/2⌉ = 50

6.数组a[10][10]按行优先存储,每个元素占4个字节,a[0][0]的地址为1000,则 a[3][5] 的地址为( )。

A. 1060 

B. 1070 

C. 1100 

D. 1140

答案:

解析:按行优先,a[3][5] 前面有 3×10 + 5 = 35 个元素,地址 = 1000 + 35×4 = 1140

7.入栈序列为 1,2,3,4,以下哪个出栈序列不可能出现?( )

A. 4,3,2,1 

B. 1,4,3,2 

C. 2,4,3,1 

D. 3,4,1,2

答案:

解析:D中,3出栈前12已在栈中(12下方),3出栈后栈中为122在上方),4入栈出栈后,下一个出栈的应为2而不是1,故不可能。

8.4个男生和3个女生站成一排,要求女生互不相邻,共有多少种排法?( )

A. 1440

B. 2400

C. 3600

D. 4800

答案:

解析:先排4个男生:A(4,4)=24,形成5个空位(含两端),选3个空位给女生:C(5,3)×A(3,3)=10×6=60,总数=24×60=1440,选A

9.C++中,以下哪个关键字用于释放动态分配的内存?( )

A. new 

B. delete 

C. free 

D. malloc

答案:

解析:C++中用 new 分配、delete 释放;free 和 malloc C语言的函数。

10.有向图G5个顶点,若每个顶点的入度之和为10,则出度之和为( )。

A. 5 

B. 10 

C. 15 

D. 20

答案:

解析:有向图中,所有顶点的入度之和所有顶点的出度之和 边数。

11.已知中缀表达式为(a+b)*c-d/e,则对应的后缀表达式是( )。

A. ab+c*de/- 

B. ab+cde/-* 

C. abc+*de/- 

D. ab+c*de/-

答案:

解析:(a+b) → ab+(a+b)*c → ab+c*d/e → de/,整体 → ab+c*de/-

12.采用冒泡排序对 7,3,5,1,9 进行升序排序,第一趟排序后的结果是( )。

A. 3,5,1,7,9 

B. 3,1,5,7,9 

C. 3,5,1,9,7 

D. 1,3,5,7,9

答案:

解析:冒泡排序第一趟从左到右相邻比较,73交换→3,7,5,1,975交换→3,5,7,1,971交换→3,5,1,7,97<9不交换,第一趟结束为3,5,1,7,9

13.某算法的递推关系为 T(n)=2T(n/2)+nT(1)=1,则T(n)的时间复杂度为( )。

A. O(n) 

B. O(n log n) 

C. O(n²

D. O(log n)

答案:

解析:符合主定理情形2T(n)=O(n log n),即归并排序的时间复杂度。

14.以下哪个不是存储设备?( )

A. 硬盘 

B. 内存 

C. CPU缓存 

D. 显示器

答案:

解析:显示器是输出设备,不是存储设备。

15.在一个连通无向图中,若有n个顶点,则至少需要( )条边才能保证图连通。

A. n 

B. n-1 

C. n+1 

D. n²

答案:

解析:连通图至少需要n-1 条边(构成一棵树)。

二、阅读程序(共3题,每题约13-14分,共计40分)

说明:阅读程序题包含判断题和选择题。判断题正确填√,错误填×;除特殊说明外,判断题每题1.5分,选择题每题3分。程序输入不超过数组或字符串定义的范围。

程序一

#include<iostream>using namespace std;intmain(){    int n;    cin>>n;    int count = 0;    for (int i = 1; i <= n; i++) {        int x = i;        while (x>0) {            if (x % 10 == 7) count++;            x /= 10;        }    }    cout << count << endl;    return 0;}

判断题

16. 若输入为 7,输出为 1。( )

17. 若输入为 20,输出为 2。( )

18. 若输入为 100,输出为 19。( )

单选题

19. 若输入为 77,输出为( )。

A. 8 

B. 15 

C. 16 

D. 17

20. 该程序的功能是( )。

A. 统计 到 中数字 出现的次数 

B. 统计 到 中能被 整除的数的个数 

C. 统计 到 中个位是 的数的个数 

D. 统计 到 中数字之和为 的数的个数

16
17
18
19
20
×
C
A

程序二

#include <iostream>using namespace std;int a[100][100];int n, m;int main() {    cin>>n>>m;    for (int i = 0; i < n; i++) {        for (int j = 0; j < m; j++) {            cin>>a[i][j];        }    }    for(int i = 0; i < n; i++) {        for (int j = 0; j < m; j++) {            int sum = 0;            if (i>0sum += a[i-1][j];            if (i < n-1sum += a[i+1][j];            if (j>0sum += a[i][j-1];            if (j < m-1sum += a[i][j+1];            cout << sum << " ";        }        cout << endl;    }    return 0;}

判断题

21. 若输入为 2×矩阵 [[1,2],[3,4]],输出矩阵中每个元素是原矩阵上下左右相邻元素之和。( )

22. 输出矩阵中,每个位置的数值都等于原矩阵中该位置四个相邻位置的和。( )

23. 若输入的矩阵为 1×矩阵 [1,2,3],则输出为 [2,4,2]。( )

单选题

24. 若输入为:

3 3

1 2 3

4 5 6

7 8 9

输出矩阵中第一行第一列的值为()。

A. 5 

B. 6 

C. 7 

D. 8

25. 若输出矩阵中某个位置的值为 20,则原矩阵中该位置的四个相邻位置之和为( )。

A. 16 

B. 20 

C. 24 

D. 无法确定

21
22
23
24
25
B
B

程序三

#include<iostream>using namespace std;intf(int x, int y){    if (x == 0 || y == 0return 1;    return f(x - 1, y) + f(x, y - 1);}intmain(){    int n, m;    cin>>n>>m;    cout << f(n, m) << endl;    return 0;}

判断题

26. 调用 f(0, 5) 的返回值为 1。( )

27. 调用 f(1, 1) 的返回值为 2。( )

28. 函数 f(x, y) 的计算过程中,存在重复计算。( )

单选题

29. 调用 f(2, 2) 的返回值为( )。

A. 4 

B. 5 

C. 6 

D. 8

30. 调用 f(3, 2) 的返回值为( )。

A. 8 

B. 9 

C. 10 

D. 12

31. 函数 f(x, y) 的返回值等价于( )。

A. C(x+y, x) 

B. x + y 

C. x × 

D. 2^(x+y)

26
27
28
29
30
31
C
C
A

三、程序完善题(共2题,每题15分,共计30分)

说明:阅读程序,根据题目要求,从备选项中选择正确的选项填入空白处,使程序能够正确运行。每题有5个空,每空3分。

程序一(素数判断)

题目描述:输入一个正整数n,判断 是否为素数。若是输出 "Yes",否则输出 "No"

备选项:

① 

A. n % 2 == 0 

B. n / 2 == 0  

C. n == 1  

D. n % 2 != 0

② 

A. i <= sqrt(n) 

B. i < sqrt(n)  

C. i <= n  

D. i * i <= n

③ 

A. n % i == 0 

B. i % n == 0  

C. n / i == 0  

D. n % 2 == 0

④ 

A. isPrime(n) 

B. isPrime  

C. isPrime(n) == false  

D. n  0

⑤ 若输入为 17,输出为( )。 

A. Yes 

B. No 

C. 17 

D. 无法确定

程序二(斐波那契数列)

题目描述:输入正整数n,输出斐波那契数列的第 项。斐波那契数列定义:F(1)=1F(2)=1F(n)=F(n-1)+F(n-2)n3)。要求使用迭代方式实现,空间复杂度为 O(1)

备选项:

⑤ 

A. 1 

B. n  

C. 0  

D. -1

⑥ 

A. a + b 

B. a - b  

C. a * b  

D. b - a

⑦ 

A. b 

B. c  

C. a + 1  

D. b + 1

⑧ 

A. a 

B. b  

C. c  

D. a + b

⑨ 

A. a 

B. b  

C. c  

D. n

⑩ 若输入为 10,输出为( )。 

A. 34 

B. 55 

C. 89 

D. 144

参考答案汇总

一、单项选择题

题号

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

答案

B

A

C

B

A

D

D

A

B

B

A

A

B

D

二、阅读程序

题号

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

答案

×

A

B

B

A

部分解析

程序一:统计1n中数字7出现的次数。

16题:n=7,数字71→ 输出→ 判√

17题:1-20中含7的数字:71个)、171个)→ 共2个 → √

18题:1-100中含7的数字:7,17,27,37,47,57,67,70-7911个),87,97 → 共20个 → 判×(应为20,不是19

19题:77中两个→ 输出应为16 → 选C

程序二:计算每个元素上下左右相邻元素之和(边界元素只计算存在的相邻元素)。

21题:正确

22题:边界元素只有23个相邻,不是4个 → 判×

23题:1×3矩阵[1,2,3],输出:位置0(右邻2)→2,位置1(左邻1+右邻3)→4,位置2(左邻2)→→ [2,4,2] → √

程序三:递归计算组合数C(x+y, x)

- f(2,2) = f(1,2)+f(2,1) = [f(0,2)+f(1,1)] + [f(1,1)+f(2,0)] = (1+2)+(2+1)=6 → 选C

- f(3,2) = C(5,3)=10 → 选C

三、程序完善题

程序一:

题目

答案

A

D

A

解析:①排除偶数(2已处理);②用 i*i <= n 更高效;③判断整除;④调用判断函数;⑤17是素数 → Yes

程序二:

题目

答案

A

A

B

C

C

B

解析:n=12时输出1;⑥c=a+b;⑦a=b;⑧b=c;⑨输出c(第n项);⑩F(10)=55 → 选B

试卷命题说明

题型

题量

分值

主要考点

单项选择题

15

30

计算机基础、进制转换、数据结构、排列组合、算法复杂度

阅读程序-判断

13

19.5

代码阅读能力、逻辑推理、边界条件

阅读程序-选择

8

24

程序功能分析、输出结果预测

程序完善题

10

30分 

算法理解、代码填空能力

难度分布:基础题约40%,中等题约45%,较难题约15%,与CSP-J历年真题难度曲线一致。