大学C++期末考试题库及答案(更正部分答案)

更新时间:2023-10-05 15:45:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2012年大学C++期末考试题库

一、单选题:

1. 能作为C++程序的基本单位是( C )。

A. 字符 B. 语句 C. 函数 D. 源程序文件 2. 程序中主函数的名字为( A )。

A. main B. MAIN C. Main D. 任意标识符 3. 关于C++与C语言的关系的描述中,(D)是错误的。

A. C语言是C++的一个子集; B. C语言与C++是兼容的;

C. C++对C语言进行了一些改进; D. C++和C语言都是面向对象的 4. 可用作C++语言用户标识符的一组标识符是( B)。

A. void define +WORD B. a3_b3 _123 YN C. for -abc Case D. 2a DO sizeof

5. 存储以下数据,占用存储字节最多的是( D)。

A. 0 B. ‘0’ C. “0” D. 0.0 6. 设int a=12;则执行完语句a+=a*a;后,a的值是( C )。 A. 12 B. 144 C. 156 D. 288

7. 假设在程序中 a、b、c 均被定义成整型,所赋的值都大于1,则下列能正确表示代数式

1的表达式是( D )。 abcA. 1.0/a*b*c B. 1/(a*b*c) C. 1/a/b/(float)c D. 1.0/a/b/c

8. 以下说法中正确的是(B)。

A. C++程序总是从第一个定义的函数开始执行 B. C++程序总是从main函数开始执行

C. C++函数必须有返回值,否则不能使用函数

D. C++程序中有调用关系的所有函数必须放在同一个程序文件中 9. 下面有关构造函数的描述中,正确的是(B )。

A. 构造函数可以带有返回值 B. 构造函数的名字与类名完全相同 C. 构造函数必须带有参数 D. 构造函数必须定义,不能缺省 10.10.在声明类时,下面的说法正确的是( )。 A. 可以在类的声明中给数据成员赋初值 B. 数据成员的数据类型可以是register

C. private,public,protected可以按任意顺序出现

D. 没有用private,public,protected定义的数据成员是公有成员 11.在下面有关析构函数特征的描述中,正确的是( C )。

A. 一个类可以有多个析构函数 B. 析构函数与类名完全相同

C. 析构函数不能指定返回类型 D. 析构函数可以有一个或多个参数 12.构造函数是在(B )时被执行的。

A. 程序编译 B. 创建对象 C. 创建类 D. 程序装入内存 13. 下面有关静态成员函数的描述中,正确的是( B ) A. 在静态成员函数中可以使用this指针

B. 在建立对象前,就可以为静态数据成员赋值 C. 静态成员函数在类外定义是,要用static前缀 D. 静态成员函数只能在类外定义

第 1 页 共 29 页

C++程序设计试卷

14.下面有关友员函数的描述中,真确的说法是(A ) A. 友员函数是独立于当前类的外部函数

B. 一个友员函数不可以同时定义为两个类的友员函数 C. 友员函数必须在类的外部进行定义

D. 在类的外部定义友员函数时必须加上friend关键字 15.友员的作用之一是( A )

A. 提高程序的运行效率 B. 加强类的封装

C. 实现数据的隐蔽性 D. 增加成员函数的种类 16.使用派生类的主要原因是( A )

A. 提高代码的可重用性 B. 提高程序的运行效率 C. 加强类的封装性 D. 实现数据的隐藏 17.在C++中继承方式有几中( C )

A. 1 B. 2 C. 3 D. 4

18.假设已经定义好了类student,现在要定义类derived,它是从student私有派生的,则定义类derived的正确写法是( D ) A. class derived ::student private{ //????.} B. class derived ::student public { //????.} C. class derived ::public student { //????.} D. class derived ::private student{ //????.} 19.派生类的对象对它的基类成员中(A)是可以访问的。

A.公有继承的公有成员; B.公有继承的私有成员; C.公有继承的保护成员; D.私有继承的公有成员。

20. 类中定义的成员默认为(B )访问属性。

A. public B. private C. protected D. friend

21.下列存储类标识符中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用( A )合适。

A. 内联函数; B. 重载函数; C. 递归调用; D. 嵌套调用。

22.C++对C语言作了很多改进,下列描述中(D)使得C语言发生了质变,从面向过程变成了面向对象。

A. 增加了一些新的运算符; B. 允许函数重载,并允许设置缺省参数; C. 规定函数说明必须用原型; D. 引进了类和对象的概念; 23.按照标识符的要求,(A)符号不能组成标识符。

A. 连接符 B. 下划线 C.大小写字母 D. 数字字符 24.下列变量名中,( A )是合法的。

A CHINA B byte-size C double D A+a 25.下列各种函数中,( C)不是类的成员函数。

A 构造函数 B 析构函数 C 友元函数 D 拷贝构造函数 26.下列( A )是正确的语句。

A ; B a=17 C x+y D cout<<\27.不能作为函数重载判断的依据的是(A)

A.返回类型 B. const C.参数个数 D. 参数类型 28.通常,拷贝构造函数的参数是(C )

A.某个对象名 B.某个对象的成员名 C.某个对象的引用名 D.某个对象的指针名

第 2 页 共 29 页

C++程序设计试卷

29.下面对静态数据成员的描述中,正确的是(C ) A 类的不同对象有不同的静态数据成员值 B 类的每个对象都有自己的静态数据成员 C静态数据成员是类的所有对象共享的数据 D 静态数据成员不能通过类的对象调用

30.假定AB为一个类,则执行AB x;语句时将自动调用该类的( B)

A.有参构造函数 B.无参构造函数 C.拷贝构造函数 D.赋值构造函数 31.C++程序从上机到得到结果的几个操作步骤依次是( B )。

A. 编译、编辑、连接、运行 B. 编辑、编译、连接、运行 C. 编译、运行、编辑、连接 D. 编辑、运行、编辑、连接 32.假定一条定义语句为“int a[10], x, *p=a;”,若要把数组a中下标为3的元素值赋给x,则不正确的语句为(D )。

A. x=p[3]; B. x=*(a+3); C. x=a[3]; D. x=*p+3; 33.关于封装,下列说法中不正确的是(D )。

A. 通过封装,对象的全部属性和操作结合在一起,形成一个整体 B. 通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见) C. 通过封装,每个对象都成为相对独立的实体 D. 通过封装,对象的属性都是不可见的 34.预处理命令在程序中都是以( B )符号开头的。 A. * B. # C. & D. @ 35.存储以下数据,占用存储字节最少的是( B )。

A. 0 B. ‘0’ C. “0” D. 0.0 36.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用( D )符号作为分隔符。

A. 空格或逗号 B. 逗号或回车 C. 逗号或分号 D. 空格或回车 37.假定变量m定义为“int m=7;”,则定义变量p的正确语句为( B )。

A. int p=&m; B. int *p=&m; C. int &p=*m; D. int *p=m; 38.下面的哪个保留字不能作为函数的返回类型? C 。

A. void B. int C. new D. long 39.采用重载函数的目的是( D )。

A.实现共享 B.减少空间 C.提高速度 D.使用方便,提高可读性 40.假定AB为一个类,则( C )为该类的拷贝构造函数的原型说明。

A. AB(AB x); B. AB(int x); C. AB(AB& x); D. void AB(AB& x); 41、 C++对C语言作了很多改进,下列描述中(D )使得C语言发生了质变,从面向过程变成了面向对象。

A、增加了一些新的运算符; B、允许函数重载,并允许设置缺省参数; C、规定函数说明必须用原型; D、引进了类和对象的概念;

42、 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是(A)。

A.类 B.对象 C.函数体 D.数据块 43、 关于new运算符的下列描述中,(C )是错误的。 A、 它可以用来动态创建对象和对象数组;

B、使用它创建的对象或对象数组可以使用运算符delete删除; C、使用它创建对象时要调用构造函数;

第 3 页 共 29 页

C++程序设计试卷

D、使用它创建对象数组时必须指定初始值; 44、 (D )不是构造函数的特征。

A、构造函数的函数名与类名相同; B、构造函数可以重载;

C、构造函数可以设置缺省参数; D、构造函数必须指定类型说明。

45、 假定一个类的构造函数为B(int x,int y){a=x--;b=a*y--;},则执行B x(3,5); 语句后,x.a和x.b的值分别为(C )

A、 3和5 B、 5和3 C、 3和15 D、20和5 46、 关于成员函数特征的下列描述中,( A)是错误的。 A、成员函数一定是内联函数; B、成员函数可以重载; C、成员函数可以设置缺省参数值; D、成员函数可以是静态的; 47、 在公有继承的情况下,基类成员在派生类中的访问权限(B )。 A、受限制 B、保持不变 C、受保护 D、不受保护 48、 友元的作用是( A)。

A、提高程序的运用效率; B、加强类的封装性; C、实现数据的隐藏性; D、增加成员函数的种类; 49、 在C++中,关于下列设置缺省参数值的描述中,(B )是正确的。 A、不允许设置缺省参数值;

B、在指定了缺省值的参数右边,不能出现没有指定缺省值的参数; C、只能在函数的定义性声明中指定参数的缺省值; D、设置缺省参数值时,必须全部都设置; 50、关于delete运算符的下列描述中,( C)是错误的。 A、它必须用于new返回的指针;

B、使用它删除对象时要调用析构函数; C、对一个指针可以使用多次该运算符;

D、指针名前只有一对方括号符号,不管所删除数组的维数。 51、const int *p说明不能修改( C)。

A、p指针; B、p指针指向的变量; C、p指针指向的数据类型; D、上述A、B、C三者;

52、当需要打开A盘上的以xxk.dat文件用于输入时,则定义文件流对象的语句为 (B )。 A、fstream fin(“A:xxk.dat”,1) B、ifstream fin(“A:xxk.dat”,ios::nocreate) C、ofstream fin(“A:xxk.dat”) D、ifstream fin(“A:xxk.dat”,ios::app) 53、派生类的对象对它的基类成员中(A )是可以访问的。 A、公有继承的公有成员; B、公有继承的私有成员; C、公有继承的保护成员; D、私有继承的公有成员;

54、假定一个字符串的长度为n,则定义存储该字符串的字符数组的长度至少为(C)。 A、n-1 B、n C、 n+1 D、n+2 55、 在int a=3; *p=&a;中,*p的值是( D)。

A、变量a的地址值 B、无意义 C、变量p的地址值 D、 3 56、 下列常量中,( D)不是字符常量。 A、’\\005’ B、’\\n’ C、 ’c’ D、“a” 57、在int a=3,*p=&a;中,*p的值是( D)。

A)变量a的地址值 B)无意义 C)变量p的地址值 D) 3 58、以下4个选项中,不能看作一条语句的是(B )。

A) if(b==0) m=1;n=2; B) a=0,b=0,c=0; C) if(a>0); D) {;}

第 4 页 共 29 页

C++程序设计试卷

59、(D )不是构造函数的特征。

A)构造函数的函数名与类名相同 B)构造函数可以重载

C)构造函数可以设置缺省参数 D)构造函数必须指定类型说明 60、以下程序段中与语句k=a>b? 1:0;功能等价的是(D )。 A) if(a>b) k=1; B) if(a>b) k=0

C)if(a>b) k=1; D)if(a

A)11&&x<10 C) !(x<=1||x>=10) D)x>1||x<10 63、关于成员函数特征的下列描述中,( A)是错误的。 A)成员函数一定是内联函数 B)成员函数可以重载 C)成员函数可以设置缺省参数值 D)成员函数可以是静态的 64、有以下程序

#include void main( ) { int i,s=0;

for(i=1;i<10;i+=2) s+=i; cout<

程序执行后的输出结果是(C )。

A) 自然数1~9的累加和 B) 自然数1~10的累加和 C) 自然数1~9中的奇数之和 D) 自然数1~10中的偶数之和 65、设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是(D)。 A) p=1; B) *q=2; C) q=p; D) *p=5; 66、( A)能正确输出结果:C++。

A) char s[]=\B)char s[3]=\

C)char s[3]={'C','+','+','\\0'};cout<

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a,b; b=p[5];

b中的值是( B)。

A)5 B)6 C) 8 D) 9 68、有以下程序

#include void main( )

{ char *p[10]={\cout<

执行后输出结果是 B

A)dcdbe B) abbd C) abc D) abb 69、下列静态数据成员的特性中,(C )是错误的。 A) 说明静态数据成员时前边要加修饰符static

第 5 页 共 29 页

C++程序设计试卷

B) 静态数据成员要在类体外进行初始化 C) 静态数据成员不是所有对象所共用的

D)引用静态数据成员时,要在其名称前加<类名>和作用域运算符 70、有以下语句 struct S { int g; char h;} T;

则下面叙述中不正确的是(C )。

A)S是结构体名 B)该结构体包含2个成员 C)S是struct类型的变量 D)T是struct S类型的变量 71、派生类的对象对它的基类成员中( A)是可以访问的。 A)公有继承的公有成员 B)公有继承的私有成员 C)公有继承的保护成员 D)私有继承的公有成员

72、实现运行时的多态性用 。D

A、重载函数 B、构造函数 C、析构函数 D、虚函数 73.下列变量名中,( A )是合法的。

A. CHINA B. byte-size C. double D. A+a

74. 在int b[][3]={{1},{3,2},{4,5,6},{0}};b[2][2]的值是(D )。 A. 0 B. 2 C. 5 D. 6 75. 下列各运算符中,(B)优先级最高。

A. +(双目) B. *(单目) C. <= D. *= 76. 下列for循环的次数为( B )。 for(int i(0),x=0;!x&&i<=5;i++)

A. 5 B. 6 C . 1 D. 无限 77. 下述关于break语句的描述中,( C )是正确的。 A. break语句可用于循环体内,它将退出该重循环。 B. break语句可用于开关语句中,它将退出开关语句。 C. break语句可用于if体内,它将退出if语句。 D. break语句在一个循环体内可以出现多次。

78. 在一个被调用函数中,关于return语句使用的描述,(D )是错误的。 A. 被调用函数中可以不用 return语句。 B. 被调用函数中可以使用多个return语句。

C. 被调用函数中,如果有返回值,就一定要有return语句。 D. 被调用函数中,一个return语句可返回多个值给调用函数。 79. 在C++中,关于下列设置参数默认的描述中,( C )是正确的。 A. 不允许设置参数的默认值。

B. 设置参数默认值只能在定义函数时设置。

C. 设置参数默认值时,应该是先设置右边的再设置左边的。 D. 设置参数默认值时,应该全部参数都设置。 80. 下列存储类标识符中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用( A )合适。

A. 内联函数 B. 重载函数 C. 递归调用 D. 嵌套调用

第 6 页 共 29 页

C++程序设计试卷

81. 下列的各类函数中,( C )不是类的成员函数。

A. 构造函数 B. 析构函数 C . 友元函数 D. 拷贝初始化构造函数 82. ( D)不是构造函数的特征

A. 构造函数的函数名与类名相同 B. 构造函数可以重载

C. 构造函数可以设置缺省参数 D. 构造函数必须指定类型说明

83. f1(int)是类A的公有成员函数,p是指向成员函数f1()的指针,采用( C)是正确的。 A. p=f1 B. p=A::f1 C. p=A::f1() D. p=f1() 84. 下列定义中,(B )是定义指向数组的指针p。

A. int *p[5] B. int (*p)[5] C. (int *)p[5] D. int *p[ ] 85.循环while(int i=0) i--;执行次数是( A )。 A. 0 B. 1 C . 5 D . 无限 86. 设int x;,则经过( C )后,语句*px=0;可将x值置为0。 A. int * px; B . int const * px=&x; C. int * const px=&x; D. const int * px=&x;

87. 设void f1(int * m,long & n);int a;long b;则以下调用合法的是( B )。 A. f1(a,b); B. f1(&a,b); C. f1(a,&b); D. f1(&a,&b) 88. 关于对象概念的描述中,( A )是错误的。 A. 对象就是C语言中的结构变量;

B. 对象代表着正在创建的系统中的一个实体; C. 对象是一个状态和操作(或方法)的封装体; D. 对象之间的信息传递是通过消息进行的; 89. 在下列double型常量表示中,(A )是错误的。 A. E15; B. .35; C. 3E5; D. 3E-5 90. 下列给字符数组进行初始化中,(A )是正确的。

A. char s1[ ]=\

C. char s3[][3]={‘a’,’x’,’y’}; D. char s4[2[3]={\91. 对于int *pa[5];的描述,( D )是正确的。

A. pa是一个指向数组的指针,所指向的数组是5个int型元素;

B. pa是一个指向某个数组中第5个元素的指针,该元素是int型变量; C. pa[5]表示某个数组的第5个元素的值;

D. pa是一个具有5个元素的指针数组,每个元素是一个int型指针; 92. 下列各运算符中,( A )优先级最低。

A.?: B. | C. || D. != 93. 下列for循环的循环体执行次数为( D )。 for(int i(0),j(10);i=j=4;i++,j- -)

A. 0; B. 1; C. 4; D. 无限; 94. 下述关于开关语句的描述中,( A )是正确的。 A. 开关语句中default子句可以没有,也可以有一个; B. 开关语句中每个语句序列中必须有break语句; C. 开关语句中default子句只能放在最后;

D. 开关语句中case子句后面的表达式可以是整形表达式。 95. 下列存储类标识符中,( C )的可见性与存在性不一值。

A. 外部类; B. 自动类; C. 内部静态类; D. 寄存器类。

第 7 页 共 29 页

C++程序设计试卷

96. 下述静态数据成员的特征中,( D)是错误的。 A. 说明静态数据成员时前边要加修饰符static; B. 静态数据成员要在类体外进行初始化;

C. 引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符; D. 静态数据成员不是所有对象所共用的。 97. ( A)是析构函数的特征。

A. 一个类中只能定义一个析构函数; B. 析构函数与类名不同;

C. 析构函数的定义只能在类体内; D. 析构函数可以有各个或多个参数。;

98. 已知:p是一个指向类A数据成员m的指针,A1是类A的一个对象。如果要给m赋值为5,( C )是正确的。

A. A1.p=5; B. A1->p=5; C. A.*p=5; D. *A1.p=5; 99. 关于new运算符的下列描述中,( C )是错的。 A. 它可以用来动态创建对象和对象数组;

B. 使用它创建的对象或对象数组可以使用运算符delete删除; C. 使用它创建对象时要调用构造函数;

D. 使用它创建对象数组时必须指定初始值。

100. 派生类的构造函数的成员初始化列中,不能包含(C )。 A. 基类的构造函数;

B. 派生类中子对象的初始化; C. 基类的子对象初始化;

D. 派生类中一般数据成员的初始化

101. 派生类的对象对它的基类成员中( A)是可以访问的。 A. 公有继承的公有成员; B. 公有继承的私有成员; C. 公有继承的保护成员; D. 私有继承的公有成员。

102.C++类体系中,不能被派生类继承的有( A)。

A.构造函数 B.虚函数 C.静态成员函数 D.赋值操作函数 103.下面标识符中正确的是(A )。

A._abc B.3ab C. int D.+ab

104.下列哪项( D )不是面向对象程序设计的主要特征? a.封装 b.继承 c.多态 d.结构

105.已知i=5,j=0,下列各式中运算结果为j=6的表达式是( C )。 A.j=i+(++j) B.j=j+i++ C.j=++i+j D.j=j+++i

106.若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a

A.1 B.2 C.3 D.4 107.以下不正确的是( C )。 A.语句for(i=0;;i++)表示无限循环 B.for(;;)表示无限循环 C.for()也表示无限循环 D.while(1)表示无限循环 108.有如下程序: int x=3; do{

第 8 页 共 29 页

C++程序设计试卷

X-=2; cout<

}while(!(--x));

执行这个程序的输出结果是( C )。

A. 1 B.30 C.1-2 D.死循环 109.若有以下定义,则说法错误的是( D)。 int a=100,*p=&a ;

A.声明变量p,其中*表示p是一个指针变量 B.变量p经初始化,获得变量a的地址 C.变量p只可以指向一个整形变量 D.变量p的值为100

110.下面关于数组的初始化正确的是( A )。 A.char str[]={‘a\\',’b\\',\\'c‘} B.char str[2]={\\'a\\',\\'b\\',\\'c’}

C.char str[2][3]={{\\'a‘,\\'b’},{’e’,\\'d’},{’e’,‘f\\'}} D.char str[]={\\'a\\',\\'b\\',\\'c’} 111.若已定义:

int a[]={0,1,2,3,4,5,6,7,8,9},*P=a,i; 其中0≤i≤9,则对a数组元素不正确的引用是( D )。

A.a[p-a] B.*(&a[i]) C.p[i] D.a[10] 112.存在定义int a[10],x,*pa;,若pa=&a[0],下列的哪个选项和其他3个选项不是等价的? ( A )。

A. x=*pa; B.x=*(a+l); C.x=*(pa+1); D.x=a[1]; 113.对数组名作函数的参数,下面描述正确的是(B)。

A.数组名作函数的参数,调用时将实参数组复制给形参数组。 B.数组名作函数的参数,主调函数和被调函数共用一段存储单元。 C.数组名作参数时,形参定义的数组长度不能省略。 D.数组名作参数,不能改变主调函数中的数据。 114.关于静态成员的描述中,( B )是错误的。 A. 静态成员可分为静态数据成员和静态成员函数。 B. 静态数据成员定义后必须在类体内进行初始化。 C. 静态数据成员初始化不使用其构造函数。

D. 静态数据成员函数中不能直接引用非静态成员。 115.下列关于构造函数的描述中,错误的是( D )。

A.构造函数可以设置默认的参数 B.构造函数在定义类对象的自动执行 C.构造函数可以是内联函数 D.构造函数不可以重载

116.假设OneClass为一个类,则该类的拷贝初始化构造函数的声明语句为( C )。 A. OneClass(OneClass p); B. OneClass& (OneClass p); C. OneClass(OneClass & p); D. OneClass (OneClass *p); 117.如果类A被说明成类B的友元,则( D )。 A.类A的成员即类B的成员。 B.类B的成员即类A的成员。

C.类A的成员函数不得访问类B的成员 。

D.类B不一定是类A的友元。

第 9 页 共 29 页

C++程序设计试卷

118、关于对象和类的关系,说法正确的是( B )。

A) 同属于一类的对象,具有相同的数据成员和成员函数。

B) 对象是具体,是类的对象,同其他变量一样,先定义后使用。 C) 同一类的不同对象,其具有的操作可不同,具体的操作也不同。 D) 不同类的对象,可有相同的操作。 119、双精度浮点型的字节数是( D )。

A)4 B)1 C)0 D)8 120、下列关于C++函数的说明中正确的是( D )。 A) 内联函数就是定义在另一函数体内部的函数。 B) 函数体的最后一条语句必须是RETURN语句。

C) 标准C++要求在调用一个函数之前,必须先声明其原型。

D) 编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式。 121、下列关于虚函数的说明中,正确的是( B )。 A) 从虚基类继承的函数都是虚函数。 B) 虚函数不得是静态成员函数。 C) 只能通过指针和引用调用虚函数。 D) 抽象类中的成员函数都是虚函数。

122、下列符号中可以用作C++标识符的是( A )。

A) _radius B) foo~bar C) else D) 3room 123、结构化程序设计所规定的三种基本控制结构是 ( C )。 A)输入、处理、输出 B)树形、网形、环形 C)顺序、选择、循环 D)主程序、子程序、函数 124、下列语句中错误的是( B )。

A) const int buffer=256; B) const int int temp;

C) const double *point; D) const double *rt=new double(5.5) 125、下列关于实参和形参说法错误的是( D )。 A)实参可以是变量、常量、或表达式。

B)实参与形参的类型必须一致,否则会发生“类型不匹配”的错误。 C)实参对形参的数据传递是单向传递,调用结束后,实参单元被释放。 D)形参必须是变量 。

126、关于内联函数说法错误的是( C )。 A)不是任何一个函数都可定义成内联函数。

B)内联函数的函数体内不能含有复杂的结构控制语句。 C)递归函数可以被用来作为内联函数。

D)内联函数一般适合于只有1~5行语句的小函数。 127、关于保护继承的说法正确的是( D )。

A)基类的公有成员、私有成员可被子类继承下来,而且性质不变。

B)基类的公有成员、私有成员可被子类继承下来,而且性质改变为保护成员。 C)基类的公有成员、私有成员可被子类继承下来,而且性质均改变为私有成员。 D)基类的公有成员、私有成员可被子类继承下来,性质不变,私有成员不被继承。 128、关于函数的返回值说法正确的是( A )。

A)由return语句返回时,只带回一值,其类型在函数定义时确定。

B)其类型由调用表达式决定。

C)函数可以没有返回值,这时在函数定义,函数的类型说明就没必要了。

第 10 页 共 29 页

C++程序设计试卷

cout << \输出结果\car1. show (); tru1. show (); }

7、设计一个点类Point,包含点的坐标x,y 两个数据成员,采用友元类的方式分别计算两点间的水平距离和垂直距离。 #include using namespace std;

class Point;//先声明类型Point

int horizontalDistance(const Point& first, const Point& second);//水平距离函数声明

int verticalDistance(const Point& first, const Point& second);//垂直距离函数声明

class Point { private: int x;//横坐标 int y;//纵坐标 public:

Point(int x=0, int y = 0)//构造函数 {

this->x = x; this->y = y; }

friend int horizontalDistance(const Point& first, const Point& second); friend int verticalDistance(const Point& first, const Point& second); };

//水平距离函数定义

第 21 页 共 29 页

C++程序设计试卷

int horizontalDistance(const Point& first, const Point& second) {

if(first.x -second.x >=0) return first.x-second.x; else

return second.x-first.x; }

//垂直距离函数定义

int verticalDistance(const Point& first, const Point& second) {

if(first.y -second.y >=0) return first.y-second.y; else

return second.y-first.y; }

int main() {

Point a(1,2); //定义三个Point对象 Point b(0,0); Point c(-1,-1); //测试

cout<< horizontalDistance(a,b) <

8、设计一个点类Point,包含横、纵两个坐标数据x,y,由它派生出圆类Circle,并添加一个半径数据r,求其面积area。

第 22 页 共 29 页

C++程序设计试卷

#include //#include//此头文件与下面的setprecision(3)对应,可同时加上,控制输出精度 using namespace std; #define PI 3.1415926 //点类如下: class Point { public: Point() {}

Point(float x1,float y1) { x=x1; y=y1; }

virtual float area()=0; virtual float perim()=0;//周长 private: float x; float y; };

class Circle:public Point { public:

Circle(float x1,float y1,float r1); float area(); float perim(); private:

第 23 页 共 29 页

C++程序设计试卷

float r; };

Circle::Circle(float x1,float y1,float r1):Point(x1,y1) { r=r1; }

float Circle::area() {

return PI*r*r; }

float Circle::perim() {

return 2*PI*r; }

int main() {

Point *p;

Circle circle(0,0,3);//前两个为point(0,0),第三个常量\为圆的半径。 p=&circle;

cout<<\的周长是:\ cout<<\的面积是:\}

9、设计一个点类Point,包含两个坐标数据成员x,y和一个构造函数;再设计一个友元函数distance()用于求两点之间的距离。 #include using namespace std;

class Point;//先声明类型Point

第 24 页 共 29 页

C++程序设计试卷

int horizontalDistance(const Point& first, const Point& second);//水平距离函数声明

int verticalDistance(const Point& first, const Point& second);//垂直距离函数声明 class Point { private: int x;//横坐标 int y;//纵坐标 public:

Point(int x=0, int y = 0)//构造函数 {

this->x = x; this->y = y; }

friend int horizontalDistance(const Point& first, const Point& second); };

//水平距离函数定义

int horizontalDistance(const Point& first, const Point& second) {

if(first.x -second.x >=0) return first.x-second.x; else

return second.x-first.x; }

int main() {

Point a(1,2);//定义三个Point对象 Point b(0,0); Point c(-1,-1);

第 25 页 共 29 页

本文来源:https://www.bwwdw.com/article/p7rd.html

Top