2-1 下列对变量的引用中错误的是____。

A.int a; int&p = a;

B.char a; char&p = a;

C.int a; int&p; p=a;

D.float a; float&p = a;

选C,引用不是变量,所以必须在定义时初始化,而且一旦初始化之后,就不能再成为其他变量的引用。

2-2下列关于C++中的缓冲区类的描述中,错误的是____。

A在C++中,系统提供了一个缓冲区流类库,它是以streambuf为父类的类层次,主要完成信息通过缓冲区的交换。

B C++中,系统提供的缓冲区是内存的一部分。

C系统提供的缓冲区可分为输入缓冲区和输出缓冲区,且两部分不可重叠。

D在使用缓冲区时要注意对缓冲的刷新,将缓冲区中的数据读/写到某一指定地方。

选C

2-3 下面概念中,不属于面向对象方法的是 ▁▁▁▁▁。

A 对象 B继承 C类D 过程调用

选D

2-4 正确的程序注释一般包括序言性注释和 ▁D 功能性注释▁。

2-5 结构化程序设计主要强调的是 ▁B 程序的易读性▁。

2-6 序言性注释的主要内容不包括 ▁▁▁▁▁。

A模块的接口 B数据的描述 C模块的功能D数据的状态

选D

2-7 结构化程序设计方法的结构不包括 ▁▁▁▁▁。

A 顺序结构 B 分支结构 C 循环结构D 跳转结构

选D

2-8 面向对象程序设计主要考虑的是提高软件的 ▁D 可重用性▁。

2-9 在结构化方法中,软件功能分解属于下列软件开发中的阶段是 ▁▁▁▁▁。

A 详细设计 B需求分析 C总体设计D 编程调试

选C

2-10 下列选项中,不属于结构化程序设计方法的是 ▁▁▁▁▁。

A 自顶向下 B 逐步求精 C 模块化D 可复用

选D

2-11 类成员默认的访问属性为 ▁A private▁。

2-12 在声明类的数据成员时,可以使用 ▁D static▁ 关键字。

2-13 由3 个a,5 个b 和2 个c 构成的所有字符串中,包含子串“abc”的共有( D780 )个。

2-14 模块的功能性注释的主要内容不包括 ▁▁▁▁▁。

A 模块的功能 B 程序段的功能 C语句的功能 D 数据的状态

选A

2-15 结构化程序设计主要强调的是 ▁D 程序的易读性▁。

2-16 信息隐蔽是通过 ▁B封装性▁ 实现的。

2-17 对象是现实世界中一个实际存在的事物,它可以是有形的,也可以是无形的。下面所列举的不是对象的是 ▁▁▁▁▁。

A 桌子 B 飞机 C 狗D 苹果的颜色

选D

2-18 在软件工程学中,我们把一组具有相同的数据结构和相同的行为特征的对象的集合定义为 ▁A.类▁

2-19 在面向对象的开发方法中,类与对象的关系是 ▁A抽象与具体▁。

2-20 面向对象的设计方法与传统的面向过程的方法有本质上的不同,它的基本原理是▁C使用现实世界的概念抽象地思考问题从而自然地解决问题▁。

注:它的基本原理是,使用现实世界的概念抽象地思考问题从而自然地加以解决。它强调模拟现实世界中的概念而不强调算法,鼓励开发者在软件开发的绝大部分过程中都用应用领域的概念去思考。

2-21 C++语言是 ▁B面向对象▁ 的程序设计语言。

2-22 下列关于 C++ 和 C 两种语言关系的说法中,▁D.C++ 和 C 都是面向对象的程序设计语言▁ 是错误的。

A.C++是C的超集 B.C++对C进行了扩充 C.C++包含C的全部语法特征

2-23 C语言是 ▁A 面向过程▁ 的程序设计语言。

2-24 下面关于面向对象程序设计的说法中,▁D在面向对象的程序设计中,结构化程序设计方法仍有着重要的作用▁是正确的。

A中封装性指将数据和算法捆绑成一个整体

B中多态性是指当多种事物继承自一种事物时,同一种操作在它们之间表现出不同的行为。

C中可以通过基类的公共成员函数来引用基类的私有成员,且占据内存空间

2-25 在 C++中,实现封装性需借助于 ▁B.类▁。

2-26 下列符号中,▁D._256▁ 是正确的 C/C++ 标识符。

注:第一个字符必须时字母或下划线,中间不能有空格,不能采用系统的保留字…

2-27下列符号中,▁C.else▁ 不能作为 C/C++ 标识符。

2-28 在程序中固定不变的值称为 ▁B.常量▁。

2-29 在 C++ 的结构化程序设计框架中,程序的基本组成单元是 ▁D.函数▁。

注:在 C++ 的面向对象设计框架中,程序的基本组成单元是 ▁A.类▁。

2-30 下列运算符中,▁D.&▁ 既可以做单目运算符,又可以做双目运算符。

作为单目运算符表示:地址与运算符(取址);作为双目运算符表示: 按位与运算符。

2-31 在 C++ 中行注释的开始标志符是 ▁C.//▁。

2-32 下列关于结构化程序设计框架的叙述中,▁D.函数之间可以相互调用,并且可以多次调用▁是正确的。

A:面向对象才有类的概念

B:自顶向下,逐步求精。

C:整个程序入口是系统管理的,我们比较难以看到其代码,一般是堆栈设置,对全局和静态变量的初始化等。然后才到main函数接手。

2-33 ▁D▁ 不是合法的 C/C++实型常量。

2-34 已知枚举常量定义如下:enum TOKEN { name, number,plus = 5, miuus, print = 10 };

则下列叙述中 ▁A.name 的值是 1▁ 是错误的。

注:name 的值是 0;number 的值是 1;minus 的值是 6;print 的值是 10

2-35 下列关于字符常量的说法中,▁C.'\r' 的功能是响铃▁ 是错误的。

注:'\b' 的功能是退格;'\n'的功能是换行;'\r' 的功能是回车;'\f' 的功能是换页

2-36 下列符号中,▁D.Dfe▁ 是正确的 C/C++ 标识符。

2-37 已知 x 和 y 都是 int 整型变量,则语句 ▁C.(x + y)++;▁ 是错误的。

注:自加运算符是单目运算符,运算对象必须为变量,不能是常量和表达式。

2-38 若有变量定义 int n = 11, i = 4; 则执行语句 n %= i +1; 后 n 的值是 ▁B.1▁。

注:n=n%(i+1)=11%(4+1)=1

2-39 判断字符变量 x 是否为大写字母,应使用表达式 ▁D.x >= 'A'&& x <= 'Z'▁。

2-40 若有变量定义 int a = 3, b = 2; 则表达式 ++a * b 的值为 ▁C.7▁。

注:++6 (= 7)

2-41 下列符号中,▁A.a#b▁ 是错误的 C/C++ 标识符。

2-42 表达式 19 / 3 * sqrt(4) + 'A' 的数据类型为 ▁C▁。

注:具体转换规则如下 char --> short -->int —> unsigned --> long --> unsigned long --> float --> double

2-43 与 if (!x) 等价的语句是 ▁A if (x == 0)▁。

2-44 与 if (x) 等价的语句是 ▁C if (x != 0)▁。

2-45 下列变量定义语句中,▁B.int a = b = 3;▁ 是错误的。

2-46 在 C++ 语言中,若有常量定义 #define x 'A' 则表达式 sizeof(x) 的值为 ▁A.1▁。

2-47 下列关于this指针的叙述中,正确的是(D.类非静态成员函数才有this指针 )

2-48 对类的构造函数和析构函数描述正确的是(A.构造函数可以重载,析构函数不能重载 )

2-49 假定MyClass为一个类,则该类的复制构造函数的声明语句为(C.MyClass(constMyClass& x);)

2-50 假定MyClass为一个类,则执行MyClassa,b(3),*p;语句时,自动调用该类构造函数( B.2)次。

注:创建指针p时,不调用。

2-51 下面对于友元函数描述正确的是( C. 友元函数破坏了类的封装性和隐藏性)。

2-52下面对静态数据成员的描述中,正确的是(A.静态数据成员是类的所有对象共享的数据)

B:静态数据成员是被类的所有对象共享,它不属于类的任何一个对象,它的作用域是类范围。

C:静态数据成员的值对每个对象都一样,但它的值可以被任何一个对象更新,从而实现了同一类的不同对象之间的数据共享。

D:静态数据成员能通过类的对象调用

2-53假设A 是一个类的名字,下面哪段程序不会调用A的复制构造函数?

A A a1,a2; a1 = a2; B void func( A a) { cout <<"good" << endl; } C Afunc( ) { A tmp; return tmp; } D A a1; Aa2(a1);

选A, A:a2; A a1 = a2;

2-54以下说法正确的是: B 封闭类中成员对象的构造函数先于封闭类的构造函数被调用。

D:成员类对象构造函数如果有多个成员类对象,则构造函数的调用顺序是对象在类中被声明的顺序而不是它们出现在成员初始化表中的顺序。

2-55下列运算符中,( D.::) 运算符在C++中不能重载。

注:不能重载的运算符 . .* :: ?:

2-56下列语句中,错误的是(B.const int temp;)

A、B:const声明时必须初始化

C:const double* point; 为指向常量的指针,定义时初始化与否均可

D:double* const pt = new double(5.5); 为常指针,必须在定义时初始化

2-57下列关于运算符重载的描述中,错误的是(A.运算符重载后,原来运算符操作不可再用)。

2-58 ?类模板的参数错误的说法是:B

2-59下面对派生类的描述中,错误的是(D)

2-60下列关于派生类构造函数和析构函数的说法中,错误的是(D)

2-61为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为(A.public)

2-62默认的继承方式为 ▁A.private▁。

2-63基类中的私有成员在私有派生类中的访问属性为 ▁D.无法访问▁。

2-64已知 BASE 为基类,DERIVED为公有派生类,有下面的函数声明

void F(BASE *p);

void G(DERIVED*p);

若 a 为基类对象,b 为派生类对象,则 ▁C▁ 是错误的用法。

2-65已知 BASE 为基类,DERIVED为公有派生类,有下面的函数声明

void F(BASE &x);

void G(DERIVED &x);

若 a 为基类对象,b 为派生类对象,则▁C▁ 是错误的用法。

2-66赋值兼容规则是指在需要基类对象的任何地方, 都可以使用 ▁C.公有▁ 派生类的对象来替代。

2-67下列关于构造函数的说法中,▁D.构造函数可以重载▁ 是正确的。

2-68下列关于析造函数的说法中,▁A.析构函数不能重载▁ 是正确的。

2-69下面 4 组重载函数的声明中,▁C▁ 是正确的。

2-70若有下面的函数声明void F(int x = 1, int y =2);

则 ▁C▁ 是错误的语句。

2-71在 C++ 中,若 x 为实型变量,y为整型变量,则 ▁C▁ 是错误的语句。

注:只是把对象的值强制转换另一个类型值,而非改变原有x的类型

2-72 在 C++ 中,若 x 为整型变量,y为实型变量,则 ▁C▁ 是错误的语句。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐