#z167. 基础篇测试1

基础篇测试1

1. 下列关于C++函数参数传递的说法中,正确的是( )

{{ select(1) }}

  • [选项1] 传值参数中,修改形参的值会影响实参的值
  • [选项2] 引用参数中,形参是实参的别名,修改形参等价于修改实参
  • [选项3] 函数参数只能通过传值或引用方式传递
  • [选项4] 传值参数传递时,实参和形参占用相同的内存空间

2. 在C++中,关于string类型的成员函数,下列说法错误的是( )

{{ select(2) }}

  • [选项1] size()函数可返回字符串的长度,与length()函数功能相同
  • [选项2] substr(pos, len)函数用于提取从pos位置开始、长度为len的子串,若pos+len超出字符串长度,则只提取到字符串末尾
  • [选项3] find(subs)函数若找到子串subs,返回子串起始位置;若未找到,返回-1
  • [选项4] replace(pos, len, new_str)函数用于将从pos位置开始、长度为len的子串替换为new_str

3. 关于C++结构体(struct),下列说法错误的是( )

{{ select(3) }}

  • [选项1] 结构体可以包含不同类型的数据成员
  • [选项2] 结构体变量可以整体赋值
  • [选项3] 结构体成员必须通过“结构体变量名.成员名”的方式访问,无法通过指针访问
  • [选项4] 结构体可以定义成员函数,实现特定功能

4. 下列关于指针的操作中,不合法的是( )

{{ select(4) }}

  • [选项1] int a = 10; int *p; *p = &a;
  • [选项2] int a[5] = {1,2,3,4,5}; int *p = a; cout << *(p+3);
  • [选项3] int a = 5; int *p = &a; int **pp = &p; cout << **pp;
  • [选项4] int a = 10; void *p = &a; cout << *(int*)p;

5. 下列关于C++中循环语句的说法,错误的是( )

{{ select(5) }}

  • [选项1] for循环的初始化、条件判断、增量表达式均可省略,但分号不能省略
  • [选项2] while循环的条件判断语句后不能加分号,否则会导致循环体无法执行
  • [选项3] do-while循环的循环体至少执行一次,适合需要“先执行再判断”的场景
  • [选项4] 循环嵌套时,内层循环的break语句可以跳出外层循环

6. 关于C++中数组的使用,下列说法正确的是( )

{{ select(6) }}

  • [选项1] 数组的下标从1开始,例如int a[5]的合法下标为1~5
  • [选项2] 定义数组时,数组长度可以是变量,例如int n=5; int a[n];是合法的
  • [选项3] 可以通过sizeof(a)/sizeof(a[0])计算数组的元素个数
  • [选项4] 数组名本质是普通变量,可以直接赋值给另一个数组名,例如int a[3]={1,2,3}, b[3]; b=a;

7. 下列关于C++中条件语句的说法,错误的是( )

{{ select(7) }}

  • [选项1] if语句的条件表达式必须用括号包裹,表达式值为非0时执行判断语句
  • [选项2] if-else语句中,else总是与最近的未配对if匹配
  • [选项3] switch语句的case后必须是常量表达式,不能是变量
  • [选项4] switch语句中,每个case后都必须加break,否则会导致“case穿透”

8. 下列关于C++中函数的说法,正确的是( )

{{ select(8) }}

  • [选项1] 函数的返回值类型必须与return语句返回的值类型一致,否则会编译错误
  • [选项2] 函数可以嵌套定义,即一个函数内部可以定义另一个函数
  • [选项3] 函数声明时必须指定所有参数的类型,参数名可以省略
  • [选项4] 调用无返回值(void类型)的函数时,可以将其作为表达式的一部分,例如cout << func();是合法的

9. 下列关于C++中变量命名与使用的说法,错误的是( )

{{ select(9) }}

  • [选项1] 变量名只能由字母、数字和下划线组成,且不能以数字开头
  • [选项2] 变量名区分大小写,例如int Ageint age是两个不同的变量
  • [选项3] 关键字(如intiffor)不能作为变量名使用
  • [选项4] 变量声明后即可直接使用,无需初始化,例如int x; cout << x + 5;是合法的

10. 下列关于C++中运算符优先级的说法,正确的是( )

{{ select(10) }}

  • [选项1] 赋值运算符(=)的优先级高于关系运算符(如==
  • [选项2] 逻辑与运算符(&&)的优先级高于逻辑或运算符(||
  • [选项3] 自增运算符(++)的优先级低于算术运算符(如+
  • [选项4] 括号运算符(())的优先级最低,用于改变默认运算顺序

11. 下列关于C++中字符串的说法,错误的是( )

{{ select(11) }}

  • [选项1] C风格字符串本质是字符数组,以'\0'作为结束标志,例如char s[] = "abc"等价于char s[] = {'a','b','c','\0'}
  • [选项2] 可以用strcmp(s1, s2)函数比较两个C风格字符串,返回0表示两字符串相等
  • [选项3] string类型字符串可以直接用==比较,无需调用函数
  • [选项4] C风格字符串可以直接用+进行连接,例如char s1[]="ab", s2[]="cd"; char s3[]=s1+s2;是合法的

12. 下列关于枚举算法的说法中,错误的是( )

{{ select(12) }}

  • [选项1] 枚举算法的核心是遍历所有可能的情况,逐一验证是否符合条件
  • [选项2] 枚举算法的时间复杂度通常较高,适用于问题规模较小的场景
  • [选项3] 枚举算法一定能找到问题的所有解
  • [选项4] 对于“判断一个数是否为质数”的问题,枚举到该数的平方根即可,无需枚举到该数本身

13. 下列关于C++中注释的说法,错误的是( )

{{ select(13) }}

  • [选项1] 单行注释以//开头,注释内容从//到行尾
  • [选项2] 多行注释以/*开头、*/结尾,注释内容可以跨多行
  • [选项3] 多行注释可以嵌套,例如/* 外层注释 /* 内层注释 */ 外层注释 */是合法的
  • [选项4] 注释不会被编译器编译,仅用于提高代码可读性

14. 下列关于C++中数组初始化的说法,正确的是( )

{{ select(14) }}

  • [选项1] 定义数组时若初始化了部分元素,未初始化的元素会被默认初始化为0(全局数组)或随机值(局部数组)
  • [选项2] int a[5] = {1,2,3};中,a[3]a[4]的值均为0
  • [选项3] int a[] = {1,2,3,4};中,数组a的长度为3,因为初始化列表有3个元素
  • [选项4] 二维数组初始化时,只能按行初始化,例如int a[2][3] = {{1,2},{3,4,5}}是非法的

15. 下列关于C++中基本数据类型的说法,错误的是( )

{{ select(15) }}

  • [选项1] int类型通常占用4个字节,取值范围约为-2³¹~2³¹-1
  • [选项2] char类型既可以存储字符,也可以存储整数,例如char c=65等价于char c='A'
  • [选项3] float类型是单精度浮点数,double类型是双精度浮点数,double的精度更高
  • [选项4] bool类型的取值只能是truefalse,其中true等价于1,false等价于0,不能用整数赋值给bool变量