2024 CCF非专业级别软件能力认证第一轮¶
(CSP-J1) 入门级C++语言试题¶
一、单项选择题(共 15 题,每题 2 分,共计 30 分;每题有且仅有一个正确选项)¶
-
32 位 int 类型的存储范围是( )。
A. \(-2147483647 \sim +2147483647\)
B. \(-2147483647 \sim +2147483648\)
C. \(-2147483648 \sim +2147483647\)
D. \(-2147483648 \sim +2147483648\)
-
计算\((14_8-1010_2)*D_{16}-1101_2\)的结果,并选择答案的十进制值:( )。
A. \(13\)
B. \(14\)
C. \(15\)
D. \(16\)
-
某公司有 10 名员工,分为 3 个部门:A 部门有 4 名员工,B 部门有 3 名员工、C 部门有3 名员工。现需要从这 10 名员工中选出 4 名组成一个工作组,且每个部门至少要有 1 人。问有多少种选择方式?( )
A. \(120\)
B. \(126\)
C. \(132\)
D. \(238\)
-
以下哪个序列对应数组\(0\)至\(7\)的4位二进制格雷码(Gray code)?( )
A. \(0000,0001,0011,0010,0110,0111,0101,1000\)
B. \(0000,0001,0011,0010,0110,0111,0100,0101\)
C. \(0000,0001,0011,0010,0100,0101,0111,0110\)
D. \(0000,0001,0011,0010,0110,0111,0101,0100\)
-
记 1KB 为 1024字节(byte)、1MB 为 1024 KB,那么 1MB 是多少二进制位(bit)?( )
A. \(1000000\)
B. \(1048576\)
C. \(8000000\)
D. \(8388608\)
-
以下哪个不是 C++ 中的基本数据类型?( )
A.
int
B.
float
C.
struct
D.
char
-
以下哪个不是 C++ 中的循环语句?( )
A.
for
B.
while
C.
do-while
D.
repeat-until
-
在 C/C++ 中,
(char)('a'+13)
与下面哪一个值相等?( )A.
m
B.
n
C.
z
D.
3
-
假设有序表中有 1000 个元素,则用二分法查找元素 x 最多需要比较( )次。
A. 25
B. 10
C. 7
D. 1
-
下面的哪一个不是操作系统名字?( )。
A. Notepad
B. Linux
C. Windows
D. macOS
-
在无向图中,所有顶点的度数之和等于( )。
A. 图的边数
B. 图的边数的两倍
C. 图的顶点数
D. 图的顶点数的两倍
-
已知二叉树的前序遍历为 [A,B,D,E,C,F,G],中序遍历为 [D,B,E,A,F,C,G],请问该二叉树的后序遍历结果是?( )
A. [D,E,B,F,G,C,A]
B. [D,E,B,F,G,A,C]
C. [D,B,E,F,G,C,A]
D. [D,B,E,F,G,A,C]
-
给定一个空栈,支持入栈和出栈操作。若入栈操作的元素依次是 1 2 3 4 5 6,其中 1 最先入栈、6 最后入栈。下图哪种出栈顺序是不可能的?( )
A. 6 5 4 3 2 1
B. 1 6 5 4 3 2
C. 2 4 6 5 3 1
D. 1 3 5 2 4 6
-
有 5 个男生和 3 个女生站成一排,规定 3 个女生必须相邻。问有多少种不同的排列方式?( )
A. 4320 种
B. 5040 种
C. 3600 种
D. 2880 种
-
编译器的主要作用是什么?( )
A. 直接执行源代码
B. 将源代码转换为机器代码
C. 进行代码调试
D. 管理程序运行时的内存
二、阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填 ✓,错误填✕;除特殊说明外,判断题 1.5 分,选择题 3 分,共计 40 分)¶
(1)¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
|
判断题¶
-
当输入为 "10"时,程序的第一个输出为"4",第二个输出为"17" 。( )
-
若将
isPrime(i)
函数中的条件改为i*i<=n/2
输入"20"时,countPrimes(20)
的输出将变为 "6" 。( ) -
sumPrimes
函数计算的是从 2 到 n 之间的所有素数之和。( )
单选题¶
-
当输入为 "50" 时,
sumPrimes(50)
的输出为( )。A. 1060
B. 328
C. 381
D. 275
-
如果将
for (int i = 2; i * i <= n; i++)
改为for (int i = 2; i <= n; i++)
,输入 "10" 时,程序的输出( )。A. 将不能正确计算 10 以内素数个数及其和
B. 仍然输出 "4" 和 "17"
C. 输出 "3" 和 "10"
D. 输出结果不变,但运行时间更短
(2)¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
判断题¶
-
当输入的 cost 数组为 {10,15,20} 时,程序的输出为 15 。( )
-
如果将
dp[i-1]
改为dp[i-3]
,程序可能会产生编译错误。( ) -
(2分)程序总是输出
cost
数组中最小的元素。( )
单选题¶
-
当输入的
cost
数组为{1,100,1,1,1,100,1,1,100,1}
时,程序的输出为( )。A. "6"
B. "7"
C. "8"
D. "9"
-
(4分)如果输入的 cost 数组为
{10,15,30,5,5,10,20}
,程序的输出为( )。A. "25"
B. "30"
C. "35"
D. "40"
-
若将代码中的
min(dp[i-1], dp[i-2]) + cost[i-1]
修改为dp[i-1]+cost[i-2]
,输入cost
数组为{5,10,15}
时,程序的输出为( )。A. "10"
B. "15"
C. "20"
D. "25"
(3)¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
假设输入的n是绝对值不超过 1000 的整数,完成下面的判断题和单选题。
判断题¶
-
当输入为 "2 3" 时,
customFunction(2, 3)
的返回值为 "64"。( ) -
当 b 为负数时,
customFunction(a, b)
会陷入无限递归。( ) -
当 b 的值越大,程序的运行时间越长。( )
单选题¶
-
当输入为 "5 4" 时,
customFunction(5, 4)
的返回值为( )。A. 5
B. 25
C. 250
D. 625
-
如果输入 x=3 和 y=3,则程序的最终输出为( )。
A. "27"
B. "81"
C. "144"
D. "256"
-
(4分)若将
customFunction
函数改为return a + customFunction(a-1, b-1)
,并输入 "3 3",则程序的最终输出为( )。A. 9
B. 16
C. 25
D. 36
三、完善程序( 单选题,每小题3分,共计30分 )¶
(1)(判断平方数)问题:给定一个正整数n,判断这个数 是不是完全平方数,即存在一个正 整数 x 使得 x 的平方等于 n
试补全程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
-
(1) 处应填( )
A. 1
B. 2
C. 3
D. 4
-
(2) 处应填( )
A.
(int)floor(sqrt(num)-1)
B.
(int)floor(sqrt(num))
C.
floor(sqrt(num/2))-1
D.
floor(sqrt(num/2))
-
(3) 处应填( )
A.
num=2*i
B.
num==2*i
C.
num=i*i
D.
num==i*i
-
(4) 处应填( )
A.
!(num=2*i)
B.
num==2*i
C.
true
D.
false
-
(5) 处应填( )
A.
num=i*i
B.
num!=2*i
C.
true
D.
false
(2)(汉诺塔问题)给定三根柱子,分别标记为 A、B 和 C。初始状态下,柱子 A 上有若干个圆盘,这些圆盘从上到下按从小到大的顺序排列。任务是将这些圆盘全部移到柱子 c 上,且必须保持原有顺序不变。在移动过程中,需要遵守以不规则:
- 只能从一根柱子的顶部取出圆盘,并将其放入另一根柱子的顶部。
- 每次只能移动一个圆盘
- 小圆盘必须始终在大圆盘之上。
试补全程序。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
-
(1) 处应填( )
A. 0
B. 1
C. 2
D. 3
-
(2) 处应填( )
A.
src,tmp
B.
src,tgt
C.
tmp,tgt
D.
tgt,tmp
-
(3) 处应填( )
A.
src,tmp,tgt
B.
src,tgt,tmp
C.
tgt,tmp,src
D.
tgt,src,tmp
-
(4) 处应填( )
A.
src,tmp,tgt
B.
tmp,src,tgt
C.
src,tgt,tmp
D.
tgt,src,tmp
-
(5) 处应填( )
A. 0
B. 1
C. i-1
D. i