C++AND UML习题及答案(给学生)(2)

2019-07-31 09:36

}

class Triangle: public Shape{ public:

Triangle{int s, int h}: side(s),height(h) {}

【int CalArea(int side,int height)】 { return side*height/2 ; } private: int side; int height; };

二.选择题

1 建立派生类对象时,3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数),这3种构造函数的调用顺序为()

A abc B acb C cab D cba 答案:A

2下面描述中,符合结构化程序设计风格的是(A)

A)使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B)模块只有一个入口,可以有多个出口 C)注重提高程序的执行效率 D)不使用goto语句

3下面概念中,不属于面向对象方法的是(D)

A)对象 B)继承 C)类 D)过程调用 4关于面向对象的程序设计方法,下列说法正确的是(D)

A)“封装性”指的是将不同类型的相关数据组合在一起,作为一个整体进行处理 B)“多态性”指的是对象的状态会根据运行时要求自动变化

C)基类的私有成员在派生类的对象中不可访问,也不占内存空间 D)在面向对象的程序设计中,结构化程序设计方法仍有着重要作用 5判断字符型变量ch是否为大写英文字母,应使用表达式(D) A ) ch>='A' & ch<='Z' B ) ch<='A' ||ch>='Z'

C ) 'A'<=ch<='Z' D ) ch>='A' && ch<='Z'

6已知下列语句中的x和y都是int型变量,其中错误的语句(C) A ) x=y++; B ) x=++y; C ) (x+y)++; D ) ++x=y; 7执行语句序列(D) int n; cin >> n; switch(n) { case 1:

case 2: cout << '1'; case 3:

case 4: cout << '2'; break; default: cout << '3'; }

时,若键盘输入1,则屏幕显示 A)1 B)2 C)3 D)12

8关于动态存储分配,下列说法正确的是(B)

A)new和delete是C++语言中专门用于动态内存分配和释放的函数 B)动态分配的内存空间也可以被初始化

C)当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间

D)当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new 9)对类的构造函数和析构函数描述正确的是(A) A 构造函数可以重载,析构函数不能重载

B 构造函数不可以重载,析构函数可以重载 C 构造函数可以重载,析构函数也可以重载 D构造函数不能重载,析构函数也不能重载 (10)下列程序的输出结果是(A) #include using namespace std; int main() {

char a[] = \ char *ptr = a; while (*ptr) {

if (*ptr >= 'a' && *ptr <= 'z')

cout << char(*ptr + 'A' -'a'); else cout << *ptr; ptr++; }

return 0; }

A ) HELLO, WORLD B ) Hello, World C ) hELLO, wORLD D ) hello, world

11) 已知:int m=10;在下列定义引用的语句中,正确的是(A) A ) int &x=m; B )int y=&m;

C )int &z; D ) int &t=&m; (17)下列函数原型声明中错误的是(D) A ) void Fun(int x=0, int y=0); B ) void Fun(int x, int y); C ) void Fun(int x, int y=0); D ) void Fun(int x=0, int y);

(12)已知程序中已经定义了函数test,其原型是int test(int, int, int);,则下列重载形式中正确的是(B)

A ) char test(int,int,int);

B ) double test(int,int,double); C ) int test(int,int,int=0);

D ) float test(int,int,float=3.5F);

(13)已知函数f的原型是:void f(int *a, long &b); 变量v1、v2的定义是:int v1;long v2;,正

确的调用语句是(C) A) f(v1, &v2); B) f(v1, v2); C) f(&v1, v2); D) f(&v1, &v2); (14)有以下类定义 class MyClass {

public:

MyClass(){cout<<1;} };

则执行语句MyClass a, b[2], *p[2];后,程序的输出结果是(B) A)11 B)111 C)1111 D)11111

(15)关于动态存储分配,下列说法正确的是(B)

A)new和delete是C++语言中专门用于动态内存分配和释放的函数 B)动态分配的内存空间也可以被初始化

C)当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间

D)当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new (16)关于友元,下列说法错误的是(A)

A)如果类A是类B的友元,那么类B也是类A的友元

B)如果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员 C)友元关系不能被继承

D)如果类A是类B的友元,那么类A的所有成员函数都是类B的友元 (17)在公有派生的情况下,派生类中定义的成员函数只能访问原基类的(C) A)公有成员和私有成员 B)私有成员和保护成员

C)公有成员和保护成员 D)私有成员、保护成员和公有成员 (18)在C++中用来实现运行时多态性的是(D)

A)重载函数 B)析构函数 C)构造函数 D)虚函数

(19)一个类可以同时继承多个类,称为多继承。下列关于多继承和虚基类的表述中,错误的是(C)

A)每个派生类的构造函数都要为虚基类构造函数提供实参 B)多继承时有可能出现对基类成员访问的二义性问题 C)使用虚基类可以解决二义性问题并实现运行时的多态性 D)建立最派生类对象时,虚基类的构造函数会首先被调用 (20)在一个类体的下列声明中,正确的纯虚函数声明是(A) A) virtual void vf()=0; B) void vf(int)=0;

C) virtual int vf(int); D) virtual void vf(int) { } (21)在下面的运算符重载函数的原型中,错误的是(A) A) Volume operator - (double, double); B) double Volume::operator- (double); C) Volume Volume: :operator - (Volume); D) Volume operator - (Volume, Volume);

(22)下列关于继承方式的描述中,错误的是(D)

A)如果不显式地指定继承方式,缺省的继承方式是私有(private)

B)采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员 C)采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员

D)采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员 (23)已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则: D A)FA必须定义在FB之前 B)FB必须定义在FA之前

C)若FA定义在FB之后,则FA的原型必须出现在FB的定义之前 D)若FB定义在FA之后,则FB的原型必须出现在FA的定义之前 (24)有如下两个类定义 class AA{}; class BB{ AA v1,*v2; BB v3; int *v4; };

其中有一个成员变量的定义是错误的,这个变量是:C

A)v1 B)v2 C)v3 D)v4 (25)有如下类定义 (13)B: class XX{ int xdata; public:

XX(int n=0) : xdata (n) { } };

class YY : public XX{ int ydata; public:

YY(int m=0, int n=0) : XX(m), ydata(n) { } };

YY类的对象包含的数据成员的个数是 A)1 B)2 C)3 D)4

(26)下列有关运算符函数的描述中,错误的是:C A)运算符函数的名称总是以operator为前缀 B)运算符函数的参数可以是对象

C)运算符函数只能定义为类的成员函数

D)在表达式中使用重载的运算符相当于调用运算符重载函数 (27)下列字符串可以用作C++标识符的是:D

A)2009var B)goto C)test - 2009 D)_123 (28)下列枚举类型的定义中,包含枚举值3的是:A A)enum test {RED, YELLOW, BLUE, BLACK}; B)enum test {RED, YELLOW=4, BLUE, BLACK}; C)enum test {RED=-1, YELLOW,BLUE, BLACK}; D)enum test {RED, YELLOW=6, BLUE, BLACK}; (29)有如下程序段:C

int i=1; while (1) { i++;

if(i == 10) break;

if(i%2 == 0) cout << '*'; }

执行这个程序段输出字符*的个数是 A)10 B)3 C)4 D)5 (30)已知数组arr的定义如下:D int arr[5] = {1,2,3,4,5};

下列语句中输出结果不是2的是

A)cout << *arr+1 <

if (n == 0) return 1; else if (n == 1) return 2; else return fib(n-1)+fib(n-2); }

若执行函数调用表达式fib(2),函数fib被调用的次数是 A)1 B)2 C)3 D)4

(32)Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是: D Sample a[2], *p = new Sample;

A)0 B)1 C)2 D)3

(33)下列关于虚基类的描述中,错误的是: C A)使用虚基类可以消除由多继承产生的二义性

B)构造派生类对象时,虚基类的构造函数只被调用一次 C)声明“class B : virtual public A”说明类B为虚基类 D)建立派生类对象时,首先调用虚基类的构造函数 (34)下列关于运算符重载的描述中,错误的是: C A)::运算符不能重载

B)类型转换运算符只能作为成员函数重载

C)将运算符作为非成员函数重载时必须定义为友元 D)重载[]运算符应完成“下标访问”操作 (35)有如下类定义 class A { char *a; public: A():a(0){}

A(char *aa){ //把aa所指字符串拷贝到a所指向的存储空间 a= A ; strcpy(a,aa); strcpy(a,aa); }

~A() {delete []a;}


C++AND UML习题及答案(给学生)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:一位普通小学乡村教师的悼词

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: