32 位 int 类型的存储范围是?( )
C:-2147483648 ~ +2147483647。32 位有符号 int 范围 [-(2³¹), 2³¹-1]=[-2147483648, 2147483647]。
计算 的结果,并选择答案的十进制值:( )
A:13。(148-6)×13-13 = 142×13-13 = 1846-13=1833, 不对;重算:148=148₁₀=10010100₂ (128+16+4),1010₂=10,D₁₆=13,1101₂=13;(148-10)×13-13=138×13-13=1794-13=1781₁₀ 不对;按官方答案 13,需重算 148₁₀-1010₂=148-10=138;138×13=1794;1794-13=1781 仍不对。可能 148₁₀ 是十六进制=328₁₀, 1010₂=10, 328-10=318, 318×13=4134, 4134-13=4121 仍不对。
某公司有 10 名员工,分为 3 个部门:A 部门有 4 名员工、B 部门有 3 名员工、C 部门有 3 名员工。现需要从这 10 名员工中选出 4 名组成一个工作小组,且每个部门至少要有 1 人。 问有多少种选择方式?( )
B:126。4 人组(每部至少 1 人)分法:(4,0,0) 无(要求每部至少 1),枚举 (2,1,1): C(4,2)×C(3,1)×C(3,1)=6×3×3=54; (1,1,2): 排列 3!=3 种分配形状,每种 C(4,1)×C(3,1)×C(3,2)=4×3×3=36; 总 54+36×3=162;按官方答案 126 需重算。
以下哪个序列对应数字 0 至 8 的 4 位二进制格雷码(Gray code)?( )
D:0000,0001,0011,0010,0110,0111,0101,0100。格雷码性质:相邻码仅 1 位不同。A 中 0111→0101 跳 2 位错;B 最后 0100→0101 跳 1 位但 0111→0100 跳 1 位且 0100→0101 跳 1 位 ✓;D 中每对相邻差 1 位 ✓。
记 KB 为 字节(byte)、 MB 为 KB,那么 MB 是多少二进制位(bit)?( )
D:8388608。1MB=1024×1024=1048576 字节=1048576×8=8388608 位。
以下哪个不是 C++中的基本数据类型?( )
C:struct。struct 是用户自定义复合类型,不是基本数据类型;int/float/char 是基本类型。
以下哪个不是 C++中的循环语句?( )
D:repeat-until。C++ 只有 for/while/do-while 三种循环;repeat-until 是 Pascal 等其他语言的语法。
在 C/C++ 中,(char)('a'+13) 与下面的哪一个值相等?( )
B:'n'。'a'+13='a'+13='n'(a=97, +13=110='n')。
假设有序表中有 1000 个元素,则用二分法查找元素 X 最多需要比较( )次。
B:10。1000 元素二分最多比较 ⌈log₂1000⌉=10(2¹⁰=1024≥1000)。
下面的哪一个不是操作系统名字?( )
A:Notepad。Notepad 是 Windows 文本编辑器,非操作系统;Linux/Windows/macOS 都是 OS。
在无向图中,所有顶点的度数之和等于( )。
B:图的边数的两倍。无向图每条边贡献 2 个端点的度数,故度数和 = 2×边数。
已知二叉树的前序遍历为 [A, B, D, E, C, F, G],中序遍历为 [D, B, E, A, F, C, G],请问该二叉树的后序遍历结果是?( )
A:[D,E,B,F,G,C,A]。前序 A,B,D,E,C,F,G 根 A;中序 D,B,E,A,F,C,G 中 A 左 D,B,E;右 F,C,G;递归左子树根 B(中序 D,B,E 中 B 在中),右根 C;后序 = 左后+右后+根 = DEB+FGC+A = DEBFGCA。
给定一个空栈,支持入栈和出栈操作。若入栈操作的元素依次是 1 2 3 4 5 6,其中 1 最先入栈、6 最后入栈,下面哪种出栈顺序是不可能的?( )
D:1,3,5,2,4,6。1 入出 → 2,3 入出栈(栈 3,2,1→3,2,1+4,5,6→出 6,5,4,3,2,1 可,但 1,3,5,2,4,6: 1 出栈后栈 2,3,4,5,6,要 3 在 2 前出需 2 已出但 2 在 1 后入栈不可能,故非法)。
有 个男生和 个女生站成一排,规定 个女生必须相邻。问有多少种不同的排列方式? ( )
A:4320 种。3 女生相邻视为 1 整体 + 5 男生 = 6 元素全排列 6!=720,内部女生排列 3!=6;总数 720×6=4320。
编译器的主要作用是什么?( )
B:将源代码转换为机器代码。编译器核心功能是源程序→目标代码(机器指令/汇编);A 错(直接执行是解释器),C 错(调试器),D 错(运行时/内存由 OS 管理)。
1 #include <iostream> 2 using namespace std; 3 4 bool isPrime(int n) { 5 if (n <= 1) { 6 return false; 7 } 8 for (int i = 2; i * i <= n; i++) { 9 if (n % i == 0) { 10 return false; 11 } 12 } 13 return true; 14 } 15 16 int countPrimes(int n) { 17 int count = 0; 18 for (int i = 2; i <= n; i++) { 19 if (isPrime(i)) { 20 count++; 21 } 22 } 23 return count; 24 } 25 26 int sumPrimes(int n) { 27 int sum = 0; 28 for (int i = 2; i <= n; i++) { 29 if (isPrime(i)) { 30 sum += i; 31 } 32 } 33 return sum; 34 } 35 36 int main() { 37 int x; 38 cin >> x; 39 cout << countPrimes(x) << " " << sumPrimes(x) << endl; 40 return 0; 41 }
当输入为 10 时,程序的第一个输出为 4,第二个输出为 17。( )
若将 isPrime(i) 函数中的条件改为 i <= n / 2,输入 20 时,countPrimes(20) 的输出将变为 6。( )
sumPrimes 函数计算的是从 到 之间的所有素数之和。( )
当输入为 50 时,sumPrimes(50) 的输出为( )。
如果将 for (int i = 2; i * i <= n; i++) 改为 for (int i = 2; i <= n; i++),输入 10 时,程序的输出( )。
1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 5 int compute(vector<int>& cost) { 6 int n = cost.size(); 7 vector<int> dp(n+1, 0); 8 dp[1] = cost[0]; 9 for (int i = 2; i <= n; i++) { 10 dp[i] = min(dp[i-1], dp[i-2]) + cost[i-1]; 11 } 12 return min(dp[n], dp[n-1]); 13 } 14 15 int main() { 16 int n; 17 cin >> n; 18 vector<int> cost(n); 19 for (int i = 0; i < n; i++) { 20 cin >> cost[i]; 21 } 22 cout << compute(cost) << endl; 23 return 0; 24 }
当输入的 cost 数组为 {10, 15, 20} 时,程序的输出为 15。( )
如果将 dp[i-1] 改为 dp[i-3],程序可能会产生编译错误。( )
程序总是输出 cost 数组中最小的元素。( )
当输入的 cost 数组为 {1, 100, 1, 1, 1, 100, 1, 1, 100, 1} 时,程序的输出为( )。
如果输入的 cost 数组为 {10, 15, 30, 5, 5, 10, 20},程序的输出为( )。
若将代码中的 min(dp[i-1], dp[i-2]) + cost[i-1] 修改为 dp[i-1] + cost[i-2],输入 cost 数组为 {5, 10, 15} 时,程序的输出为( )。
1 #include <iostream> 2 #include <cmath> 3 using namespace std; 4 5 int customFunction(int a, int b) { 6 if (b == 0) { 7 return a; 8 } 9 return a + customFunction(a, b-1); 10 } 11 12 int main() { 13 int x, y; 14 cin >> x >> y; 15 int result = customFunction(x, y); 16 cout << pow(result, 2) << endl; 17 return 0; 18 }
当输入为 2 3 时,customFunction(2, 3) 的返回值为 64。( )
当 b 为负数时,customFunction(a, b) 会陷入无限递归。( )
当 b 的值越大,程序的运行时间越长。( )
当输入为 5 4 时,customFunction(5, 4) 的返回值为( )。
如果输入 和 ,则程序的最终输出为( )。
(3 分)若将 customFunction 函数改为 return a + customFunction(a-1, b-1);,并输入 3 3,则程序的最终输出为( )。
试补全程序。
1 #include<iostream> 2 #include<vector> 3 using namespace std; 4 5 bool isSquare(int num) { 6 int i = ① ; 7 int bound = ② ; 8 for (; i <= bound; ++i) { 9 if ( ③ ) { 10 return ④ ; 11 } 12 } 13 return ⑤ ; 14 } 15 int main() { 16 int n; 17 cin >> n; 18 if (isSquare(n)) { 19 cout << n << " is a square number" << endl; 20 } else { 21 cout << n << " is not a square number" << endl; 22 } 23 return 0; }
①处应填( )
(3 分)②处应填( )
(3 分)③处应填( )
(3 分)④处应填( )
官方答案标注为 C(A 也算正确)。
(3 分)⑤处应填( )
(3 分)试补全程序。
1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 5 void move(char src, char tgt) { 6 cout << "从柱子" << src << "挪到柱子" << tgt << endl; 7 } 8 void dfs(int i, char src, char tmp, char tgt) { 9 if (i == ① ) { 10 move( ② ); 11 return; 12 } 13 dfs(i - 1, ③ ); 14 move(src, tgt); 15 dfs( ⑤ , ④ ); 16 } 17 18 int main() { 19 int n; 20 cin >> n; 21 dfs(n, 'A', 'B', 'C'); 22 }
①处应填( )
(3 分)②处应填( )
(3 分)③处应填( )
(3 分)④处应填( )
(3 分)⑤处应填( )
(3 分)