近年来,线上授课变得普遍,很多有助于改善教学效果的设备也逐渐流行,其中包括比较常用的手写板,那么它属于哪类设备?( )。
如果 a 和 b 均为 int 类型的变量,且 b 的值不为 ,那么下列能正确判断"a 是 b 的 倍"的表达式是( )。
如果变量 a 和 b 分别为 double 类型和 int 类型,则表达式 (a = 6, b = 3 * (7 + 8) / 2, b += a) 的计算结果为( )。
有关下面 C++ 代码说法错误的是( )。
01// sumA()和sumB()用于求从1到N之和 02#include <iostream> 03using namespace std; 04int sumA(int n) { 05 int sum = 0; 06 for (int i = 1; i < n + 1; i++) 07 sum += i; 08 return sum; 09} 10int sumB(int n) { 11 if (n == 1) 12 return 1; 13 else 14 return n + sumB(n - 1); 15} 16int main() { 17 int n = 0; 18 cin >> n; 19 cout << sumA(n) << " " << sumB(n) << endl; 20 return 0; 21}
下面 C++ 代码以递归方式实现字符串反序,横线处应填上代码是( )。
01//字符串反序 02#include <iostream> 03#include <string> 04using namespace std; 05string sReverse(string sIn) { 06 if (sIn.length() <= 1) { 07 return sIn; 08 } else { 09 return ____________ // 此处填写代码 10 } 11} 12int main() { 13 string sIn; 14 cin >> sIn; 15 cout << sReverse(sIn) << endl; 16 return 0; 17}
印度古老的汉诺塔传说:创世时有三根金刚柱,其中一柱从下往上按照大小顺序摞着 片黄金圆盘,当圆盘逐一从一柱借助另外一柱全部移动到另外一柱时,宇宙毁灭。移动规则:在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。下面的 C++ 代码以递归方式实现汉诺塔,横线处应填入代码是( )。
01#include <iostream> 02using namespace std; 03// 递归实现汉诺塔,将N个圆盘从A通过B移动C 04// 圆盘从底到顶,半径必须从大到小 05void Hanoi(string A, string B, string C, int N) { 06 if (N == 1) { 07 cout << A << " -> " << C << endl; 08 } else { 09 Hanoi(A, C, B, N - 1); 10 cout << A << " -> " << C << endl; 11 ____________; // 此处填写代码 12 } 13} 14int main() { 15 Hanoi("甲", "乙", "丙", 3); 16 return 0; 17}
根据下面 C++ 代码的注释,两个横线处应分别填入( )。
01#include <iostream> 02#include <vector> 03#include <algorithm> 04using namespace std; 05 06bool isOdd(int N) { 07 return N % 2 == 1; 08} 09bool compare(int a, int b) { 10 if (a % 2 == 0 && b % 2 == 1) 11 return true; 12 return false; 13} 14int main() { 15 vector<int> lstA; // lstA是一个整型向量 16 for (int i = 1; i < 100; i++) 17 lstA.push_back(i); 18 // 对lstA成员按比较函数执行结果排序 19 sort(lstA.begin(), lstA.end(), ____________); // 此处填写代码1 20 21 vector<int> lstB; 22 for (int i = 0; i < lstA.size(); i++) // lstB成员全为奇数 23 if (____________) // 此处填写代码2 24 lstB.push_back(lstA[i]); 25 26 cout << "lstA: "; 27 for (int i = 0; i < lstA.size(); i++) 28 cout << lstA[i] << " "; 29 cout << endl; 30 31 cout << "lstB: "; 32 for (int i = 0; i < lstB.size(); i++) 33 cout << lstB[i] << " "; 34 cout << endl; 35 return 0; 36}
有关下面代码正确的是( )。
01// 在C++语言中,可以通过函数指针的形式,将一个函数作为另一个函数的参数。 02// 具体来说:bool checkNum(bool (*Fx)(int), int N); 声明了一个函数, 03// 其第一个参数是函数指针类型,指向一个接收一个int参数且返回值为bool的函数。 04#include <iostream> 05using namespace std; 06 07bool isEven(int N) { 08 return N % 2 == 0; 09} 10bool checkNum(bool (*Fx)(int), int N) { 11 return Fx(N); 12} 13int main() { 14 cout << checkNum(isEven, 10) << endl; 15 return 0; 16}
有关下面 C++ 代码正确的是( )。
01#include <iostream> 02using namespace std; 03 04bool isOdd(int N) { 05 return N % 2 == 1; 06} 07int Square(int N) { 08 return N * N; 09} 10bool checkNum(bool (*Fx)(int), int x) { 11 return Fx(x); 12} 13int main() { 14 cout << checkNum(isOdd, 10) << endl; // 输出行A 15 cout << checkNum(Square, 10) << endl; // 输出行B 16 return 0; 17}
下面代码执行后的输出是( )。
01#include <iostream> 02using namespace std; 03 04int jumpFloor(int N) { 05 cout << N << "#"; 06 if (N == 1 || N == 2) { 07 return N; 08 } else { 09 return jumpFloor(N - 1) + jumpFloor(N - 2); 10 } 11} 12int main() { 13 cout << jumpFloor(4) << endl; 14 return 0; 15}
下面代码中的 isPrimeA() 和 isPrimeB() 都用于判断参数 N 是否素数,有关其时间复杂度的正确说法是( )。
01#include <iostream> 02#include <cmath> 03using namespace std; 04 05bool isPrimeA(int N) { 06 if (N < 2) 07 return false; 08 for (int i = 2; i < N; i++) 09 if (N % i == 0) 10 return false; 11 return true; 12} 13bool isPrimeB(int N) { 14 if (N < 2) 15 return false; 16 int endNum = int(sqrt(N)); 17 for (int i = 2; i <= endNum; i++) 18 if (N % i == 0) 19 return false; 20 return true; 21} 22int main() { 23 cout << boolalpha; 24 cout << isPrimeA(13) << " " << isPrimeB(13) << endl; 25 return 0; 26}
下面代码用于归并排序,其中 merge() 函数被调用次数为( )。
01#include <iostream> 02using namespace std; 03 04void mergeSort(int * listData, int start, int end); 05void merge(int * listData, int start, int middle, int end); 06 07void mergeSort(int * listData, int start, int end) { 08 if (start >= end) 09 return; 10 int middle = (start + end) / 2; 11 mergeSort(listData, start, middle); 12 mergeSort(listData, middle + 1, end); 13 merge(listData, start, middle, end); 14} 15void merge(int * listData, int start, int middle, int end) { 16 int leftSize = middle - start + 1; 17 int rightSize = end - middle; 18 19 int * left = new int[leftSize]; 20 int * right = new int[rightSize]; 21 for (int i = 0; i < leftSize; i++) 22 left[i] = listData[start + i]; 23 for (int j = 0; j < rightSize; j++) 24 right[j] = listData[middle + 1 + j]; 25 26 int i = 0, j = 0, k = start; 27 while (i < leftSize && j < rightSize) { 28 if (left[i] <= right[j]) { 29 listData[k] = left[i]; 30 i++; 31 } else { 32 listData[k] = right[j]; 33 j++; 34 } 35 k++; 36 } 37 38 while (i < leftSize) { 39 listData[k] = left[i]; 40 i++; 41 k++; 42 } 43 while (j < rightSize) { 44 listData[k] = right[j]; 45 j++; 46 k++; 47 } 48 delete[] left; 49 delete[] right; 50} 51int main() { 52 int lstA[] = {1, 3, 2, 7, 11, 5, 3}; 53 int size = sizeof(lstA) / sizeof(lstA[0]); 54 55 mergeSort(lstA, 0, size - 1); // 对lstA执行归并排序 56 57 for (int i = 0; i < size; i++) 58 cout << lstA[i] << " "; 59 cout << endl; 60 return 0; 61}
归并排序将序列不断分成两半、分别递归排序后再合并,这种算法设计思想属于( )。
归并排序算法的基本思想是( )。
有关下面代码的说法正确的是( )。
01#include <iostream> 02 03class Node { 04public: 05 int Value; 06 Node * Next; 07 08 Node(int Val, Node * Nxt = nullptr) { 09 Value = Val; 10 Next = Nxt; 11 } 12}; 13 14int main() { 15 Node * firstNode = new Node(10); 16 firstNode->Next = new Node(100); 17 firstNode->Next->Next = new Node(111, firstNode); 18 return 0; 19}
TCP/IP 的传输层的两个不同的协议分别是 UDP 和 TCP。
在特殊情况下流程图中可以出现三角框和圆形框。
找出自然数 以内的所有质数,常用算法有埃氏筛法和线性筛法,其中埃氏筛法效率更高。
在 C++ 中,可以使用二分法查找链表中的元素。
在 C++ 中,通过恰当的实现,可以将链表首尾相接,形成循环链表。
贪心算法的解可能不是最优解。
一般说来,冒泡排序算法优于归并排序。
C++ 语言中的 qsort 库函数是不稳定排序。
质数的判定和筛法的目的并不相同,质数判定旨在判断特定的正整数是否为质数,而质数筛法意在筛选出范围内的所有质数。
下面的 C++ 代码执行后将输出 0 5 1 6 2 3 4 。
01#include <iostream> 02#include <algorithm> 03using namespace std; 04 05bool compareModulo5(int a, int b) { 06 return a % 5 < b % 5; 07} 08int main() { 09 int lst[7]; 10 for (int i = 0; i < 7; i++) 11 lst[i] = i; 12 13 // 对序列所有元素按compareModulo5结果排序 14 sort(lst, lst + 7, compareModulo5); 15 16 for (int i = 0; i < 7; i++) 17 cout << lst[i] << " "; 18 cout << endl; 19 return 0; 20}