运行下面C++程序后变量 a 的值是( )。
int a = 42; int* p = &a; *p = *p + 1;
运行下面C++程序后变量 a 的值是( )。
int a = 42; int* p = &a; *p = *p + 1;
给定如下定义的数组 arr ,则 *(*(arr + 1) + 2) 的值是( )。
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};下面这段C++代码会输出( )。
int add(int a, int b = 1); // 函数声明
int main() {
cout << add(2) << " " << add(2, 3);
return 0;
}
int add(int a, int b) { // 函数定义
return a + b;
}下面这段C++代码会输出( )。
int x = 5;
void foo() {
int x = 10;
cout << x << " ";
}
void bar() {
cout << x << " ";
}
int main() {
foo();
bar();
}下面C++程序运行的结果是( )。
void increaseA(int x) {
x++;
}
void increaseB(int* p) {
(*p)++;
}
int main() {
int a = 5;
increaseA(a);
cout << a << " ";
increaseB(&a);
cout << a;
}关于结构体初始化,以下哪个选项中正确的是( )。
struct Point {int x,y;};运行如下C++代码会输出( )。
struct Cat {
string name;
int age;
};
void birthday(Cat& c) {
c.age++;
}
int main() {
Cat kitty{"Mimi", 2};
birthday(kitty);
cout << kitty.name << " " << kitty.age;
}下面C++代码试图实现选择排序,使其能对数组 nums 排序为升序,则横线上应分别填写( )。
void selectionSort(vector<int>& nums) {
int n = nums.size();
for (int i = 0; i < n - 1; ++i) {
int minIndex = i;
for (int j = i + 1; j < n; ++j) {
if ( __________ ) { // 在此处填入代码
minIndex = j;
}
}
_________; // 在此处填入代码
}
}下面C++程序实现插入排序(升序排序),则横线上应分别填写( )。
void insertionSort(int arr[], int n) {
for (int i = 1; i < n; i++) {
int key = arr[i];
int j = i - 1;
while ( j >= 0 && ____________________ ) { // 在此处填入代码
arr[j + 1] = arr[j];
j--;
}
________; // 在此处填入代码
}
}小杨正在爬楼梯,需要 n阶才能到达楼顶,每次可以爬 1阶或 2阶,求小杨有多少种不同的方法可以爬到 楼顶,横线上应填写( )。
int climbStairs(int n) {
if (n <= 2) return n;
int prev2 = 1;
int prev1 = 2;
int current = 0;
for (int i = 3; i <= n; ++i) {
________________ // 在此处填入代码
}
return current;
}假设有一个班级的成绩单,存储在一个长度为 n 的数组 scores 中,每个元素是一个学生的分数。老师想要找出 所有满足 scores[i] + scores[j] + scores[k] == 300 的三元组,其中 i < j < k。下面代码实现该功能,请问其时间复杂度是( )。
int cnt = 0;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
for (int k = j + 1; k < n; k++) {
if (scores[i] + scores[j] + scores[k] == 300) {
cnt++;
}
}
}
}以下C++代码能正确初始化指针。
int a = 5; int *p = a;
执行下面C++代码将输出 11 。
int x = 10;
void f() {
int x = x + 1;
cout << x << endl;
}
int main() {
f();
}以下C++代码合法。
struct Student {
string name;
int age;
float score;
};
Student* students = new Student[20];执行下面C++代码将输出 10 。
void func(int* p) {
*p = 10;
}
int main() {
int a = 5;
func(&a);
cout << a << endl;
return 0;
}下面C++代码将二维数组 arr 传递给函数 f ,函数内部用 arr[i][j] 访问元素,函数参数声明为 int arr[] [4] 是错误的。
void f(int arr[][4], int rows) {
// 访问 arr[i][j]
}
int main() {
int arr[3][4] = { /* 初始化 */ };
f(arr, 3);
}以下C++代码只能捕获 int 类型异常。
int main() {
try {
throw 42;
} catch (...) {
cout << "Caught" << endl;
}
return 0;
}以下C++代码将 Hello 写入文件 data.txt 。
ofstream file("data.txt");
cout<<"Hello"<< endl;
file.close();试题名称:排兵布阵
时间限制:1.0 s
内存限制:512.0 MB
3.1.1 题目描述
作为将军,你自然需要合理地排兵布阵。地图可以视为 n行 m列的网格,适合排兵的网格以 1 标注,不适合排兵的网格以 0 标注。现在你需要在地图上选择一个矩形区域排兵,这个矩形区域内不能包含不适合排兵的网格。请问可选择的矩形区域最多能包含多少网格?
3.1.2 输入格式
第一行,两个正整数 n,m,分别表示地图网格的行数与列数。
接下来 n行,每行 个整数
,表示各行中的网格是否适合排兵。
3.1.3 输出格式
一行,一个整数,表示适合排兵的矩形区域包含的最大网格数。
3.1.4 样例
3.1.4.1 输入样例 1
4 3 0 1 1 1 0 1 0 1 1 1 1 1
3.1.4.2 输出样例 1
4
3.1.4.3 输入样例 2
3 5 1 0 1 0 1 0 1 0 1 0 0 1 1 1 0
3.1.4.4 输出样例 2
3
3.1.5 数据范围
对于所有测试点,保证
。
试题名称:最长连续段
时间限制:1.0 s
内存限制:512.0 MB
3.2.1 题目描述
对于 k个整数构成的数组[b1,b2....bk] ,如果对1<=i<k 都有bi+1=bi+1 ,那么称数组 b是一个连续段。
给定由 n 个整数构成的数组[a1,a2....an] ,你可以任意重排数组 a中元素顺序。请问在重排顺序之后, a所有是连续段的子数组中,最长的子数组长度是多少?
例如,对于数组[1,0,2,4] ,可以将其重排为 [4,0,1,2],有以下 10个子数组:

其中除[4,0][4,0,1][4,0,1,2] 以外的子数组均是连续段,因此是连续段的子数组中,最长子数组长度为 3。
3.2.2 输入格式
第一行,一个正整数 ,表示数组长度。
第二行, n个整数 a1,a2....an,表示数组中的整数。
3.2.3 输出格式
一行,一个整数,表示数组 a重排顺序后,所有是连续段的子数组的最长长度。
3.2.4 样例
3.2.4.1 输入样例 1
4
4 0 1 2
3.2.4.2 输出样例 1
3
3.2.4.3 输入样例 2
3
9 9 8 2 4 4 3 5 3
3.2.4.4 输出样例 2
4
3.2.5 数据范围

可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
Ctrl / ⌘ + ZCtrl / ⌘ + YCtrl / ⌘ + FCtrl / ⌘ + ACtrl / ⌘ + CCtrl / ⌘ + XCtrl / ⌘ + V工具栏排版按钮编辑时自动保存到本机历史
提交记录AI
作答助手确定要清空代码吗?
确定退出考试模式吗?当前作答进度会暂存在本机会话中,下次可继续。
正在处理答卷,请稍候…