#6732. 智汇少年的选择和判断题模拟卷3(高)

智汇少年的选择和判断题模拟卷3(高)

一、判断题

  1. 使用fstream打开文件时,可以同时指定ios::in和ios::out模式,表示可读可写。 {{ select(1) }}
  • 正确
  • 错误
  1. 实参如果是常量,它对应的形参只能定义为值传递,不能定义为引用传递。 {{ select(2) }}
  • 正确
  • 错误
  1. 函数 strlen("abc\0def") 的返回值是7。 {{ select(3) }}
  • 正确
  • 错误
  1. 模拟法通常不需要复杂的逻辑推理,只需要按照题目步骤一步步执行代码即可。 {{ select(4) }}
  • 正确
  • 错误
  1. 所有的递归算法都可以转化为非递归(迭代)算法来实现。 {{ select(5) }}
  • 正确
  • 错误
  1. 在 switch 语句中,case 后面的表达式必须是常量表达式,不能是变量。 {{ select(6) }}
  • 正确
  • 错误
  1. 使用 strcpy(dest, src) 函数时,必须确保 dest 指向的内存空间足够大,否则会溢出。 {{ select(7) }}
  • 正确
  • 错误
  1. 枚举法虽然实现简单,但在处理数据范围非常大的题目时,可能会导致超时。 {{ select(8) }}
  • 正确
  • 错误
  1. 递归函数每次调用自身时,都会在栈区分配新的内存空间用于保存局部变量。 {{ select(9) }}
  • 正确
  • 错误
  1. 字符串 "C++" 实际上在内存中占用4个字节(包含结束符)。 {{ select(10) }}
  • 正确
  • 错误

二、单选题

  1. 使用枚举法求解“鸡兔同笼”问题(头共h,脚共f),核心循环结构通常是? {{ select(11) }}
  • 双重循环,分别枚举鸡和兔
  • 单重循环,枚举鸡的数量,计算兔的数量并验证
  • 三重循环
  • 不需要循环,直接解方程
  1. 下列代码用于判断素数,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
  1. 想要找到数组a[10] 中的最大值,下列模拟过程最标准的是? {{ select(13) }}
  • 假设 a[0] 是最大值,遍历比较,发现更大的就更新
  • 假设 a[9] 是最大值,倒序遍历比较
  • 直接输出 a[9]
  • (空选项,按格式补齐)
  1. 若double x = 0.7;,执行 if (x == 0.7) 可能的判断结果是? {{ select(14) }}
  • 一定为真
  • 一定为假
  • 可能因为浮点数精度问题导致判断为假
  • 编译错误
  1. 下列循环语句中,循环次数与其他三项不同的是? {{ 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) { ... }
  1. 定义数组 int a[5] = {1, 2, 3, 4, 5};,则 *(a + 2) 的值是? {{ select(16) }}
  • 2
  • 3
  • 4
  • 地址
  1. 阅读下列程序:
void func(int a) {    
     a = 10;
}     
int main() {     
	 int x = 5;         
	 func(x);         
	 cout << x;         
	 return 0;     
}

{{ select(17) }}

  • 5
  • 10
  • 15
  • 0
  1. 在模拟“时钟走字”的程序中,若minute变量从59增加到60,通常的处理方式是? {{ select(18) }}
  • minute = 60;
  • minute = 0; hour++;
  • minute = 59;
  • 报错
  1. 执行语句 cout << (5 & 3); 的结果是? {{ select(19) }}
  • 8
  • 2
  • 1
  • 7
  1. 想要将整数123转换为字符串"123",下列操作可行的是? {{ select(20) }}
  • string s = (string)123;
  • string s = to_string(123);
  • string s = char(123);
  • string s = "123";
  1. 下列关于函数重载的描述,正确的是? {{ select(21) }}
  • 函数重载允许函数名相同,参数个数或类型不同
  • 函数重载允许函数名相同,仅返回值类型不同
  • 函数重载就是递归调用
  • C++ 不支持函数重载
  1. 下列代码段运行后,s的值是?
int s = 0;
for (int i = 1; i <= 10; i++) {
	if (i % 3 == 0)
		break;
		s += i;     
}

{{ select(22) }}

  • 18
  • 3
  • 6
  • 55
  1. 有两个字符数组 char s1[]="abc", s2[]="ab";,执行 strcmp(s1, s2) 后,返回值的符号是? {{ select(23) }}
  • 正数
  • 负数
  • 不确定
  1. 下列关于“枚举法”的描述,不正确的是? {{ select(24) }}
  • 枚举法适合解的空间比较小的问题
  • 枚举法的基本思想是尝试所有可能的情况,判断是否满足条件
  • 枚举法的时间复杂度总是常数级 O (1)
  • 使用循环结构通常是实现枚举法的关键
  1. 已知函数int f(int n) { return n < 2 ? 1 : f(n-1) + f(n-2); },则 f(4) 的值是? {{ select(25) }}
  • 3
  • 4
  • 5
  • 6
  1. 若一个递归函数没有正确的终止条件(基准情况),运行时会发生什么? {{ select(26) }}
  • 编译错误
  • 只输出一次结果
  • 栈溢出或无限递归导致程序崩溃
  • 自动转为循环执行
  1. 定义二维数组int a[3][2] = {{1}, {2, 3}, {4}};,则a[1][1] 的值是? {{ select(27) }}
  • 1
  • 2
  • 3
  • 0
  1. 使用“模拟法”解决问题的主要思想是? {{ select(28) }}
  • 寻找数学公式直接计算结果
  • 按照题目描述的步骤,一步步用代码还原操作过程
  • 猜测答案并验证
  • 将问题分解为更小的子问题
  1. 下列程序段的输出结果是?
int x = 0;
if (x > 0)
	if (x > 2)
		cout << "A"; 
	else         
		cout << "B";

{{ select(29) }}

  • A
  • B
  • AB
  • 无输出
  1. 字符数组 char str[] = "Hello";,则strlen(str) 和sizeof(str) 的值分别是? {{ select(30) }}
  • 5,5
  • 5,6
  • 6,5
  • 6,6
  1. 下列关于函数参数传递的描述,错误的是? {{ select(31) }}
  • 值传递时,形参的改变不会影响实参
  • 数组作为参数传递时,实际上传递的是数组的首地址
  • 引用传递(&)可以在函数内部直接修改外部变量的值
  • 常量引用(const int&)也可以在函数内部修改对应实参的值
  1. 已知int a = 10, b = 20, c = 30;,执行表达式 (a > b ? a : b > c ? b : c) 后,该表达式的值是? {{ select(32) }}
  • 10
  • 20
  • 30
  • 编译错误
  1. 下列关于文件读写的描述中,正确的是? {{ select(33) }}
  • 使用 ofstream 对象打开文件时,文件必须已经存在,否则会报错
  • ifstream 默认以追加方式打开文件
  • 读写文件操作完成后,必须调用 close() 函数关闭文件
  • 文件流对象只能传递给函数,不能作为函数的返回值
  1. 执行代码char c = 'A'; cout << (int)c + 1; 后,输出的结果是? {{ select(34) }}
  • B
  • 66
  • ’B’
  • 65
  1. 在C++中,若要调用数学函数 pow(2, 3) 计算2的3次方,需要包含的头文件是? {{ select(35) }}
  • <iostream>
  • <cstdio>
  • <cmath>
  • <cstring>

三、多选题

  1. 阅读代码,选择所有输出为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);
  1. 下列关于函数定义和声明的说法,正确的有? {{ multiselect(37) }}
  • 函数定义包括函数头和函数体
  • 函数声明必须包含参数名
  • 如果函数定义在 main 函数之后,必须在 main 前进行声明
  • 函数可以没有返回值,此时类型为 void
  1. 对于二维数组 int a[3][4],下列表示地址或指针含义描述正确的有? {{ multiselect(38) }}
  • a代表数组首地址
  • a[1] 代表第二行的首地址
  • a[2][3] 代表第三行第四列的元素值
  • ((a+1)+2) 代表 a[1][2] 的值
  1. 下列哪些是类型转换中的安全转换(不会丢失信息)? {{ multiselect(39) }}
  • int 转 long long
  • float 转 double
  • int 转 short (假设int值很大)
  • double 转 int
  1. 下列关于模拟算法的描述,正确的有? {{ multiselect(40) }}
  • 模拟算法通常不需要高深的数学技巧
  • 模拟算法的关键在于精确地模拟题目中的每一个步骤和规则
  • 模拟算法的效率通常很高,时间复杂度总是 O (logN)
  • 比如模拟 “掷骰子” 1000 次统计点数分布,是典型的模拟应用
  1. 下列代码片段中,不会导致死循环的有? {{ 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; }
  1. 在C++中,下列关于数组作为函数参数的说法,正确的有? {{ multiselect(42) }}
  • 数组名可以作为函数实参
  • 数组参数传递时会复制整个数组的值
  • 在函数内部修改形参数组的元素,会影响实参数组
  • 声明数组形参时,可以省略数组的大小
  1. 下列哪些情况适合使用“枚举法”解决问题? {{ multiselect(43) }}
  • 已知密码是 4 位数字,忘记了具体是哪几个,需要暴力破解
  • 寻找 1 到 1000 之间的所有水仙花数
  • 计算 1 加到 100 的和
  • 在一个已经排序的数组中查找某个数
  1. 下列关于递归的说法,正确的有? {{ multiselect(44) }}
  • 递归函数必须有结束条件
  • 递归函数通常包含 “递推” 和 “回归” 两个阶段
  • 递归虽然代码简洁,但可能会消耗较多的栈空间
  • 所有递归都可以用循环代替
  1. 下列哪些是C++中标准的字符串处理函数(包含在 中)? {{ multiselect(45) }}
  • strlen() (计算字符串长度)
  • strcpy() (字符串拷贝)
  • strcmp() (字符串比较)
  • push_back() (在string末尾添加字符)