运行下面程序后变量 a 的值是( )。
01int a = 42; 02int* p = &a; 03*p = *p + 1;
以下关于数组的描述中,( )是错误的。
给定如下定义的数组 arr,则 *(*(arr + 1) + 2) 的值是( )。
01int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
下面这段代码会输出( )。
01int add(int a, int b = 1); // 函数声明 02 03int main() { 04 cout << add(2) << " " << add(2, 3); 05 return 0; 06} 07 08int add(int a, int b) { // 函数定义 09 return a + b; 10}
下面这段代码会输出( )。
01int x = 5; 02 03void foo() { 04 int x = 10; 05 cout << x << " "; 06} 07 08void bar() { 09 cout << x << " "; 10} 11 12int main() { 13 foo(); 14 bar(); 15}
下面程序运行的结果是( )。
01void increaseA(int x) { 02 x++; 03} 04void increaseB(int* p) { 05 (*p)++; 06} 07int main() { 08 int a = 5; 09 increaseA(a); 10 cout << a << " "; 11 increaseB(&a); 12 cout << a; 13}
关于结构体初始化,以下哪个选项中正确的是( )。
01struct Point {int x,y;};
运行如下代码会输出( )。
01struct Cat { 02 string name; 03 int age; 04}; 05 06void birthday(Cat& c) { 07 c.age++; 08} 09 10int main() { 11 Cat kitty{"Mimi", 2}; 12 birthday(kitty); 13 cout << kitty.name << " " << kitty.age; 14}
关于排序算法的稳定性,以下说法错误的是( )。
下面代码试图实现选择排序,使其能对数组 nums 排序为升序,则横线上应分别填写( )。
01void selectionSort(vector<int>& nums) { 02 int n = nums.size(); 03 for (int i = 0; i < n - 1; ++i) { 04 int minIndex = i; 05 for (int j = i + 1; j < n; ++j) { 06 if ( ____________ ) { // 在此处填入代码 07 minIndex = j; 08 } 09 } 10 ____________; // 在此处填入代码 11 } 12}
下面程序实现插入排序(升序排序),则横线上应分别填写( )。
01void insertionSort(int arr[], int n) { 02 for (int i = 1; i < n; i++) { 03 int key = arr[i]; 04 int j = i - 1; 05 while ( j >= 0 && ____________ ) { // 在此处填入代码 06 arr[j + 1] = arr[j]; 07 j--; 08 } 09 ____________; // 在此处填入代码 10 } 11}
关于插入排序的时间复杂度,下列说法正确的是( )。
小杨正在爬楼梯,需要 阶才能到达楼顶,每次可以爬 阶或 阶,求小杨有多少种不同的方法可以爬到楼顶,横线上应填写( )。
01int climbStairs(int n) { 02 if (n <= 2) return n; 03 int prev2 = 1; 04 int prev1 = 2; 05 int current = 0; 06 for (int i = 3; i <= n; ++i) { 07 ____________ // 在此处填入代码 08 09 } 10 return current; 11}
假设有一个班级的成绩单,存储在一个长度为 的数组 scores 中,每个元素是一个学生的分数。老师想要找出所有满足 scores[i] + scores[j] + scores[k] == 300 的三元组,其中 。下面代码实现该功能,请问其时间复杂度是( )。
01int cnt = 0; 02for (int i = 0; i < n; i++) { 03 for (int j = i + 1; j < n; j++) { 04 for (int k = j + 1; k < n; k++) { 05 if (scores[i] + scores[j] + scores[k] == 300) { 06 cnt++; 07 } 08 } 09 } 10}
关于异常处理,以下说法错误的是( )。
以下代码能正确初始化指针。
01int a = 5; 02int *p = a;
执行下面 C++ 代码将输出 。
01int x = 10; 02void f() { 03 int x = x + 1; 04 cout << x << endl; 05} 06 07int main() { 08 f(); 09}
以下 C++ 代码合法。
01struct Student { 02 string name; 03 int age; 04 float score; 05}; 06Student* students = new Student[20];
执行下面 C++ 代码将输出 。
01void func(int* p) { 02 *p = 10; 03} 04 05int main() { 06 int a = 5; 07 func(&a); 08 cout << a << endl; 09 return 0; 10}
下面代码将二维数组 arr 传递给函数 f,函数内部用 arr[i][j] 访问元素,函数参数声明为 int arr[][4] 是错误的。
01void f(int arr[][4], int rows) { 02 // 访问 arr[i][j] 03} 04 05int main() { 06 int arr[3][4] = { /* 初始化 */ }; 07 f(arr, 3); 08}
递推是在给定初始条件下,已知前一项(或前几项)求后一项的过程。
虽然插入排序的时间复杂度为 ,但由于单元操作相对较少,因此在小数据量的排序任务中非常受欢迎。
对整数数组 {4, 1, 3, 1, 5, 2} 进行冒泡排序(将最大元素放到最后),执行一轮之后是 {4, 1, 3, 1, 2, 5}。
以下代码只能捕获 int 类型异常。
01int main() { 02 try { 03 throw 42; 04 } catch (...) { 05 cout << "Caught" << endl; 06 } 07 return 0; 08}
以下代码将 Hello 写入文件 data.txt。
ofstream file("data.txt");
cout<<"Hello"<< endl;
file.close();