1
决定C++语言中函数的返回值类型的是 。 • Areturn语句中的表达式类型
• B调用该函数时系统随机产生的类型
• C调用该函数时的主调用函数类型
• D在定义该函数时所指定的数据类型
正确答案: D
2
下面叙述不正确的是 。 • A派生类一般都用公有派生
• B对基类成员的访问必须是无二义性的
• C赋值兼容规则也适用于多重继承的组合
• D基类的公有成员在派生类中仍然是公有的
正确答案: D
3
所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体 也就是 。
• A类
• B对象
• C函数体
• D数据块
正确答案: A
4
在类中说明的成员可以使用关键字的是 。 • Apublic
• Bextern
• Ccpu
• DRegister
正确答案: A
5
下列字符串中可以用作C++标识符的是 。 • A_123
• Bfoo~bar
• Ccase
• D3var
正确答案: A
6
在int a[][3]={{1},{3,2},{4,5,6},{0}}中,a[2][2]的值是 。 • A3
• B2
• C6
• D4
正确答案: C
7
在类中说明的成员可以使用关键字 进行修饰。 • Aprivate
• Bextern
• Cauto
• Dregister
正确答案: A
8
下列关于指针运算的描述错误的是: 。 • A在一定条件下,两个指针可以进行关系运算
• B在一定条件下,两个指针可以相加
• C在一定条件下,指针可以为空
• D在一定条件下,两个指针可以相互赋值
正确答案: B
9
假定 AB 为一个类,则执行 AB x ;语句时将自动调用该类的 。 • A有参构造函数
• B无参构造函数
• C拷贝构造函数
• D赋值构造函数
正确答案: B
10
下述关于开关语句的描述中, 是正确的。 • A开关语句中default子句可以没有,也可以有一个;
• B开关语句中每个语句序列中必须有break语句;
• C开关语句中default子句只能放在最后;
• D开关语句中case子句后面的表达式可以是整形表达式。
正确答案: A
11
下列给字符数组进行初始化中, 是正确的。 • Achar s1[ ]=\"12345abcd\";
• Bchar s2[3]=\"xyz\";
• Cchar s3[][3]={ 'a', 'x', 'y'};
• Dchar s4[2[3]={\"xyz\
正确答案: A
二.填空题(共8题,21.6分)
1
若函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的____语句。 正确答案: 第一空: 声明
2
若要使用string类,需要引入的头文件是____。在函数前面用____保留字修饰时,则表示该函数表为内联函数。 正确答案: 第一空: string.h 第二空: inline
3
派生类的成员一般分为两部分,一部分是____,另一部分是自己定义的新成员。 正确答案: 第一空:
从基类继承的成员
4
C++程序中,一个基本语句的最后一个字符是____ 。 正确答案: 第一空: 分号(; )
5
一个C++程序的开发步骤通常包括编辑、____ 、____ 、运行和调试。 正确答案: 第一空: 编译 第二空: 链接
6
类的具体表现是通过定义____来操作的。 正确答案: 第一空: 成员函数
7
假定用户没有给一个名为MyClass的类定义构造函数和析构函数,则系统为其定义的默认构造函数形式为____,默认析构函数形式为____。
正确答案:
第一空: MyClass(){} 第二空: ~MyClass(){ }
8
描述命题\"A大于B或小于C\"的表达式为____ 正确答案: 第一空: A>B||A 1 函数体内声明的静态变量,至多只会被初始化一次。 • • 正确答案:√ 2 inline函数表示编译器一定会将函数体直接插入到调用此函数的地方,这样可以加快程序的运行速度。 • • 正确答案:× 3 将类A所有构造函数的可访问性都限制为私有的,那么在main函数中不可能得到类A的实例对象。 • • 正确答案:√ 4 名字空间是可以多层嵌套的;对于类A中的函数成员和数据成员,它们都属于类名A代表的一层名字空间。 • • 正确答案:√ 5 若在类Base和派生类Derived中,分别声明一个同名的整型成员变量int x; ,那么通过Derived类的实例对象,不可能输出基类Base中的变量x的值。 • • 正确答案:× 6 构造函数的初始化列表中的内容,不会影响构造对象中成员数据的初始化顺序。 • • 正确答案:√ 7 C++的继承性允许派生类继承基类的部分特性,并允许增加新的特性或重定义基类的特性。 • • 正确答案:√ 8 C++ 程序中的变量,必须先定义 ( 声明 ) ,才能使用。 • • 正确答案:√ 9 While循环语句的循环体至少执行一次。 • • 正确答案:× 10 double数据类型属于简单数据类型。 • • 正确答案:√ 11 返回值类型、参数个数和参数类型都相同的函数也可以重载。 • • 正确答案:× 12 析构函数是函数体为空的函数。 • • 正确答案:× 13 C++中,当我们定义了数组 int a[5] ;则数组元素的下标从 1 到 5 。 • • 正确答案:× 14 就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。 • • 正确答案:√ 四.程序阅读题(共2题,5.4分) 1 【程序阅读题】写出下列程序的运行结果。 #include #include long a=10,b=30,l=0; if(a%2==0) a++; for(long m=a;m<=b;m+=2) if(fun(m)) { if(l++%10==0) cout < bool fun(long n) { int sqrtm=(int)sqrt(n); for(int i=2;i<=sqrtm;i++) if(n%i==0) return false; return true; } 正确答案: 11 13 17 19 23 29 2 【程序阅读题】写出下列程序的运行结果。 #include void main() { int x=3,y=3; switch(x%2) { case 1: switch (y) { case 0:cout<<\"First\\"; case 1:cout<<\"Second\\";break; default: cout<<\"Hellow\\"; } case 2:cout<<\"Third\\n\"; } } 正确答案: Hellow Third 五.程序设计题(共2题,5.5分) 1 程序设计题 : 已定义一个Shape抽象类,在此基础上派生出矩形Rectangle和圆形Circle类,二者都有 GetPerim()函数计算对象的周长,并编写测试main()函数。 class Shape {public: Shape(){} ~Shape(){} virtual float GetPerim()=0; } 正确答案: class Rectangle:public Shape { public: Rectangle(float i,float j):L(i),W(j){} ~Rectangle(){} float GetPerim() { return 2*(L+W); } private: float L,W; }; class Circle:public Shape { public: Circle(float r):R(r){} float GetPerim() { return 3.14*2*R; } private: float R; }; void main() { Shape * sp; sp=new Circle(10); cout< 程序设计题 : 定义并实现一个时钟类,要求能设置并显示时间。 正确答案: #include void SetTime(int h=0,int m=0,int s=0); void ShowTime(); private: int Hour,Minute,Second; }; void Clock::SetTime(int h,int m,int s) {Hour=h; Minute=m; Second=s; } void Clock ::ShowTime() { cout< void main() { Clock MyClock; MyClock.SetTime(8,10,30); MyClock.ShowTime() 一.单选题(共13题,35.1分) 1 编写C++程序一般需经过的几个步骤依次是 。 • A编辑、调试、编译、连接 • B编辑、编译、连接、运行 • C编译、调试、编辑、连接 • D编译、编辑、连接、运行 正确答案: B 2 决定C++语言中函数的返回值类型的是 。 • Areturn语句中的表达式类型 • B调用该函数时系统随机产生的类型 • C调用该函数时的主调用函数类型 • D在定义该函数时所指定的数据类型 正确答案: D 3 下面叙述不正确的是 。 • A派生类一般都用公有派生 • B对基类成员的访问必须是无二义性的 • C赋值兼容规则也适用于多重继承的组合 • D基类的公有成员在派生类中仍然是公有的 正确答案: D 4 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体 也就是 。 • A类 • B对象 • C函数体 • D数据块 正确答案: A 5 下列不能作为类的成员的是 。 • A自身类对象的指针 • B自身类对象 • C自身类对象的引用 • D另一个类的对象 正确答案: B 6 使用地址作为实参传给形参,下列说法正确的是 。 • A实参是形参的备份 • B实参与形参无联系 • C形参是实参的备份 • D实参与形参是同一对象 正确答案: D 7 下列字符串中可以用作C++标识符的是 。 • A_123 • Bfoo~bar • Ccase • D3var 正确答案: A 8 在int a[][3]={{1},{3,2},{4,5,6},{0}}中,a[2][2]的值是 。 • A3 • B2 • C6 • D4 正确答案: C 9 在类中说明的成员可以使用关键字 进行修饰。 • Aprivate • Bextern • Cauto • Dregister 正确答案: A 10 下列关于指针运算的描述错误的是: 。 • A在一定条件下,两个指针可以进行关系运算 • B在一定条件下,两个指针可以相加 • C在一定条件下,指针可以为空 • D在一定条件下,两个指针可以相互赋值 正确答案: B 11 在C++语言中,对函数参数默认值描述正确的是: • A函数参数的默认值只能设定一个 • B一个函数的参数若有多个,则参数默认值的设定可以不连续 • C函数参数必须设定默认值 • D在设定了参数的默认值后,该参数后面定义的所有参数都必须设定默认值 正确答案: D 12 下述关于开关语句的描述中, 是正确的。 • A开关语句中default子句可以没有,也可以有一个; • B开关语句中每个语句序列中必须有break语句; • C开关语句中default子句只能放在最后; • D开关语句中case子句后面的表达式可以是整形表达式。 正确答案: A 13 下列给字符数组进行初始化中, 是正确的。 • Achar s1[ ]=\"12345abcd\"; • Bchar s2[3]=\"xyz\"; • Cchar s3[][3]={ 'a', 'x', 'y'}; • Dchar s4[2[3]={\"xyz\ 正确答案: A 二.填空题(共7题,18.9分) 1 每个对象都是所属类的一个____。 切换到文本模式 正确答案: 第一空: 实例 2 若函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的____语句。 切换到文本模式 正确答案: 第一空: 声明 3 在C++中有两种参数传递方式: ____和____。 切换到文本模式 切换到文本模式 正确答案: 第一空: 传值 第二空: 传引用 4 C++程序中,一个基本语句的最后一个字符是____ 。 切换到文本模式 正确答案: 第一空: 分号(; ) 5 一个C++程序的开发步骤通常包括编辑、____ 、____ 、运行和调试。 切换到文本模式 切换到文本模式 正确答案: 第一空: 编译 第二空: 链接 6 类的具体表现是通过定义____来操作的。 切换到文本模式 正确答案: 第一空: 成员函数 7 描述命题\"A大于B或小于C\"的表达式为____ 切换到文本模式 正确答案: 第一空: A>B||A 1 函数体内声明的静态变量,至多只会被初始化一次。 • • 正确答案:√ 2 对于同一个类中的两个非静态成员函数,它们的函数的名称、参数类型、参数个数、参数顺序以及返回值的类型不能完全相同。 • • 正确答案:√ 3 inline函数表示编译器一定会将函数体直接插入到调用此函数的地方,这样可以加快程序的运行速度。 • • 正确答案:× 4 将类A所有构造函数的可访问性都限制为私有的,那么在main函数中不可能得到类A的实例对象。 • • 正确答案:√ 5 虽然抽象类的析构函数可以是纯虚函数,但要实例化其派生类对象,仍必须提供抽象基类中析构函数的函数体。 • • 正确答案:× 6 构造函数的初始化列表中的内容,不会影响构造对象中成员数据的初始化顺序。 • • 正确答案:√ 7 C++ 程序中的变量,必须先定义 ( 声明 ) ,才能使用。 • • 正确答案:√ 8 C++中允许对数组进行动态定义。 • • 正确答案:× 9 double数据类型属于简单数据类型。 • • 正确答案:√ 10 类中所提供的成员函数可以直接访问私有成员。 • • 正确答案:√ 11 返回值类型、参数个数和参数类型都相同的函数也可以重载。 • • 正确答案:× 12 友元函数是类的成员函数,所以可以存取或修改该类中的私有成员。 • • 正确答案:× 13 就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。 • • 正确答案:√ 四.程序阅读题(共2题,5.4分) 1 【程序阅读题】写出下列程序的运行结果。 #include { int x,y; public: Test(int i,int j=0) { x=i; y=j; } int get(int i,int j) { return i+j; } }; void main() { Test t1(2),t2(4,6); int (Test::*p)(int,int=10); p=Test::get; cout<<(t1.*p)(5)< 填写答案 • 正确答案: 15 27 2 【程序阅读题】写出下列程序的运行结果。 #include void main() { int a = 50 , b(0) ; b = ++a; cout<cout<• 填写答案 • 正确答案: 2 5 8 11 14 五.程序设计题(共2题,5.5分) 1 程序设计题 : 已定义一个Shape抽象类,在此基础上派生出矩形Rectangle和圆形Circle类,二者都有 GetPerim()函数计算对象的周长,并编写测试main()函数。 class Shape {public: Shape(){} ~Shape(){} virtual float GetPerim()=0; } • 填写答案 • 正确答案: class Rectangle:public Shape { public: Rectangle(float i,float j):L(i),W(j){} ~Rectangle(){} float GetPerim() { return 2*(L+W); } private: float L,W; }; class Circle:public Shape { public: Circle(float r):R(r){} float GetPerim() { return 3.14*2*R; } private: float R; }; void main() { Shape * sp; sp=new Circle(10); cout< 程序设计题 : 编写一个判断素数的函数,并输出100-300之间的全部素数之和。 • 填写答案 • 正确答案: #include for(int i=100;i<300;i++) if(prime(i)) sum+=i; cout<<\"Sum=\"< for(int i=2;i if (n%i == 0) { return false; } return TRUE; 因篇幅问题不能全部显示,请点此查看更多更全内容