#6732. 智汇少年的选择和判断题模拟卷3(高)
智汇少年的选择和判断题模拟卷3(高)
一、判断题
- 使用fstream打开文件时,可以同时指定ios::in和ios::out模式,表示可读可写。 {{ select(1) }}
- 正确
- 错误
- 实参如果是常量,它对应的形参只能定义为值传递,不能定义为引用传递。 {{ select(2) }}
- 正确
- 错误
- 函数 strlen("abc\0def") 的返回值是7。 {{ select(3) }}
- 正确
- 错误
- 模拟法通常不需要复杂的逻辑推理,只需要按照题目步骤一步步执行代码即可。 {{ select(4) }}
- 正确
- 错误
- 所有的递归算法都可以转化为非递归(迭代)算法来实现。 {{ select(5) }}
- 正确
- 错误
- 在 switch 语句中,case 后面的表达式必须是常量表达式,不能是变量。 {{ select(6) }}
- 正确
- 错误
- 使用 strcpy(dest, src) 函数时,必须确保 dest 指向的内存空间足够大,否则会溢出。 {{ select(7) }}
- 正确
- 错误
- 枚举法虽然实现简单,但在处理数据范围非常大的题目时,可能会导致超时。 {{ select(8) }}
- 正确
- 错误
- 递归函数每次调用自身时,都会在栈区分配新的内存空间用于保存局部变量。 {{ select(9) }}
- 正确
- 错误
- 字符串 "C++" 实际上在内存中占用4个字节(包含结束符)。 {{ select(10) }}
- 正确
- 错误
二、单选题
- 使用枚举法求解“鸡兔同笼”问题(头共h,脚共f),核心循环结构通常是? {{ select(11) }}
- 双重循环,分别枚举鸡和兔
- 单重循环,枚举鸡的数量,计算兔的数量并验证
- 三重循环
- 不需要循环,直接解方程
- 下列代码用于判断素数,k处应填入?
bool isPrime(int n) {
if (n < 2) return false;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0)
return false;
}
return true;
}
{{ select(12) }}
- n%i==0
- n%i!=0
- n/i==0
- i%n==0
- 想要找到数组a[10] 中的最大值,下列模拟过程最标准的是? {{ select(13) }}
- 假设 a[0] 是最大值,遍历比较,发现更大的就更新
- 假设 a[9] 是最大值,倒序遍历比较
- 直接输出 a[9]
- (空选项,按格式补齐)
- 若double x = 0.7;,执行 if (x == 0.7) 可能的判断结果是? {{ select(14) }}
- 一定为真
- 一定为假
- 可能因为浮点数精度问题导致判断为假
- 编译错误
- 下列循环语句中,循环次数与其他三项不同的是? {{ select(15) }}
- for(int i=0; i<10; i++) { ... }
- for(int i=0; i<=9; i++) { ... }
- for(int i=0; i<10; ++i) { ... }
- int i=0; while(++i<10) { ... }
- 定义数组 int a[5] = {1, 2, 3, 4, 5};,则 *(a + 2) 的值是? {{ select(16) }}
- 2
- 3
- 4
- 地址
- 阅读下列程序:
void func(int a) {
a = 10;
}
int main() {
int x = 5;
func(x);
cout << x;
return 0;
}
{{ select(17) }}
- 5
- 10
- 15
- 0
- 在模拟“时钟走字”的程序中,若minute变量从59增加到60,通常的处理方式是? {{ select(18) }}
- minute = 60;
- minute = 0; hour++;
- minute = 59;
- 报错
- 执行语句 cout << (5 & 3); 的结果是? {{ select(19) }}
- 8
- 2
- 1
- 7
- 想要将整数123转换为字符串"123",下列操作可行的是? {{ select(20) }}
- string s = (string)123;
- string s = to_string(123);
- string s = char(123);
- string s = "123";
- 下列关于函数重载的描述,正确的是? {{ select(21) }}
- 函数重载允许函数名相同,参数个数或类型不同
- 函数重载允许函数名相同,仅返回值类型不同
- 函数重载就是递归调用
- C++ 不支持函数重载
- 下列代码段运行后,s的值是?
int s = 0;
for (int i = 1; i <= 10; i++) {
if (i % 3 == 0)
break;
s += i;
}
{{ select(22) }}
- 18
- 3
- 6
- 55
- 有两个字符数组 char s1[]="abc", s2[]="ab";,执行 strcmp(s1, s2) 后,返回值的符号是? {{ select(23) }}
- 正数
- 负数
- 零
- 不确定
- 下列关于“枚举法”的描述,不正确的是? {{ select(24) }}
- 枚举法适合解的空间比较小的问题
- 枚举法的基本思想是尝试所有可能的情况,判断是否满足条件
- 枚举法的时间复杂度总是常数级 O (1)
- 使用循环结构通常是实现枚举法的关键
- 已知函数int f(int n) { return n < 2 ? 1 : f(n-1) + f(n-2); },则 f(4) 的值是? {{ select(25) }}
- 3
- 4
- 5
- 6
- 若一个递归函数没有正确的终止条件(基准情况),运行时会发生什么? {{ select(26) }}
- 编译错误
- 只输出一次结果
- 栈溢出或无限递归导致程序崩溃
- 自动转为循环执行
- 定义二维数组int a[3][2] = {{1}, {2, 3}, {4}};,则a[1][1] 的值是? {{ select(27) }}
- 1
- 2
- 3
- 0
- 使用“模拟法”解决问题的主要思想是? {{ select(28) }}
- 寻找数学公式直接计算结果
- 按照题目描述的步骤,一步步用代码还原操作过程
- 猜测答案并验证
- 将问题分解为更小的子问题
- 下列程序段的输出结果是?
int x = 0;
if (x > 0)
if (x > 2)
cout << "A";
else
cout << "B";
{{ select(29) }}
- A
- B
- AB
- 无输出
- 字符数组 char str[] = "Hello";,则strlen(str) 和sizeof(str) 的值分别是? {{ select(30) }}
- 5,5
- 5,6
- 6,5
- 6,6
- 下列关于函数参数传递的描述,错误的是? {{ select(31) }}
- 值传递时,形参的改变不会影响实参
- 数组作为参数传递时,实际上传递的是数组的首地址
- 引用传递(&)可以在函数内部直接修改外部变量的值
- 常量引用(const int&)也可以在函数内部修改对应实参的值
- 已知int a = 10, b = 20, c = 30;,执行表达式 (a > b ? a : b > c ? b : c) 后,该表达式的值是? {{ select(32) }}
- 10
- 20
- 30
- 编译错误
- 下列关于文件读写的描述中,正确的是? {{ select(33) }}
- 使用 ofstream 对象打开文件时,文件必须已经存在,否则会报错
- ifstream 默认以追加方式打开文件
- 读写文件操作完成后,必须调用 close() 函数关闭文件
- 文件流对象只能传递给函数,不能作为函数的返回值
- 执行代码char c = 'A'; cout << (int)c + 1; 后,输出的结果是? {{ select(34) }}
- B
- 66
- ’B’
- 65
- 在C++中,若要调用数学函数 pow(2, 3) 计算2的3次方,需要包含的头文件是? {{ select(35) }}
- <iostream>
- <cstdio>
- <cmath>
- <cstring>
三、多选题
- 阅读代码,选择所有输出为1的选项:
int a = 5, b = 4;
{{ multiselect(36) }}
- cout << (a % b);
- cout << (a / b);
- cout << (a > b ? 1 : 0);
- cout << (b - a < 0 ? 1 : -1);
- 下列关于函数定义和声明的说法,正确的有? {{ multiselect(37) }}
- 函数定义包括函数头和函数体
- 函数声明必须包含参数名
- 如果函数定义在 main 函数之后,必须在 main 前进行声明
- 函数可以没有返回值,此时类型为 void
- 对于二维数组 int a[3][4],下列表示地址或指针含义描述正确的有? {{ multiselect(38) }}
- a代表数组首地址
- a[1] 代表第二行的首地址
- a[2][3] 代表第三行第四列的元素值
- ((a+1)+2) 代表 a[1][2] 的值
- 下列哪些是类型转换中的安全转换(不会丢失信息)? {{ multiselect(39) }}
- int 转 long long
- float 转 double
- int 转 short (假设int值很大)
- double 转 int
- 下列关于模拟算法的描述,正确的有? {{ multiselect(40) }}
- 模拟算法通常不需要高深的数学技巧
- 模拟算法的关键在于精确地模拟题目中的每一个步骤和规则
- 模拟算法的效率通常很高,时间复杂度总是 O (logN)
- 比如模拟 “掷骰子” 1000 次统计点数分布,是典型的模拟应用
- 下列代码片段中,不会导致死循环的有? {{ multiselect(41) }}
- int i=0; while(i<10) { i++; }
- int i=0; do { i--; } while(i>0);
- for(int i=0; ; i++) { if(i>5) break; }
- int i=0; while(i<10) { int j=1; i+=j; }
- 在C++中,下列关于数组作为函数参数的说法,正确的有? {{ multiselect(42) }}
- 数组名可以作为函数实参
- 数组参数传递时会复制整个数组的值
- 在函数内部修改形参数组的元素,会影响实参数组
- 声明数组形参时,可以省略数组的大小
- 下列哪些情况适合使用“枚举法”解决问题? {{ multiselect(43) }}
- 已知密码是 4 位数字,忘记了具体是哪几个,需要暴力破解
- 寻找 1 到 1000 之间的所有水仙花数
- 计算 1 加到 100 的和
- 在一个已经排序的数组中查找某个数
- 下列关于递归的说法,正确的有? {{ multiselect(44) }}
- 递归函数必须有结束条件
- 递归函数通常包含 “递推” 和 “回归” 两个阶段
- 递归虽然代码简洁,但可能会消耗较多的栈空间
- 所有递归都可以用循环代替
- 下列哪些是C++中标准的字符串处理函数(包含在 中)? {{ multiselect(45) }}
- strlen() (计算字符串长度)
- strcpy() (字符串拷贝)
- strcmp() (字符串比较)
- push_back() (在string末尾添加字符)