32 位 int 类型的存储范围是?( )
计算 的结果,并选择答案的十进制值:( )
某公司有 10 名员工,分为 3 个部门:A 部门有 4 名员工、B 部门有 3 名员工、C 部门有 3 名员工。现需要从这 10 名员工中选出 4 名组成一个工作小组,且每个部门至少要有 1 人。 问有多少种选择方式?( )
以下哪个序列对应数字 0 至 8 的 4 位二进制格雷码(Gray code)?( )
记 KB 为 字节(byte)、 MB 为 KB,那么 MB 是多少二进制位(bit)?( )
以下哪个不是 C++中的基本数据类型?( )
以下哪个不是 C++中的循环语句?( )
在 C/C++ 中,(char)('a'+13) 与下面的哪一个值相等?( )
假设有序表中有 1000 个元素,则用二分法查找元素 X 最多需要比较( )次。
下面的哪一个不是操作系统名字?( )
在无向图中,所有顶点的度数之和等于( )。
已知二叉树的前序遍历为 [A, B, D, E, C, F, G],中序遍历为 [D, B, E, A, F, C, G],请问该二叉树的后序遍历结果是?( )
给定一个空栈,支持入栈和出栈操作。若入栈操作的元素依次是 1 2 3 4 5 6,其中 1 最先入栈、6 最后入栈,下面哪种出栈顺序是不可能的?( )
有 个男生和 个女生站成一排,规定 个女生必须相邻。问有多少种不同的排列方式? ( )
编译器的主要作用是什么?( )
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 分)