《面向对象程序设计》综合复习题集(杨永斌整理) 下载本文

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

二、判断题

1.C++中标识符内的大小写字母是没有区别的。(F ) 2.C++是一种以编译方式实现的高级语言。(T )

3.计算函数参数顺序引起的二义性是由不同的编译系统决定的。(T ) 4.返回值类型、参数个数和类型都相同的函数也可以重载。(F )

5.使用关键字class定义的类中缺省的访问权限是私有(private)的。(T )

6.类的私有成员只能被类中的成员函数访问,任何类以外的函数对它们的访问都是非法的。(F )

7.多继承情况下,派生类的构造函数的执行顺序取决于成员初始化列表中的顺序。(F ) 8.在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。(F ) 9.在私有继承中,基类中所有成员对派生类都是不可见的。(F )

10.在保护继承中,对于垂直访问等同于公有继承,对于水平访问等同于私有继承。(T ) 11.构造函数可以声明为虚函数。(F )

12.在析构函数中调用虚函数时,采用动态束定。(F )

13.在一个成员函数内调用一个虚函数时,对该虚函数的调用进行动态束定。(T ) 14.公有继承可以实现子类型。(T ) 15.构造函数可以声明为纯虚函数。(F )

16.说明函数原型时不需要指明每个函数参数的名字,只需要说明每个参数的类型和返回值类型就可以了。对

17.所有的表达式都有值。错

18.程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修改所

带来的编译工作量。对

19.类的静态数据成员需要在定义每个类的对象时进行初始化。错

20.基类中被说明为protected和private的成员只能被其派生类的成员函数访问,不能被

其它的函数访问。错

21.当将一个类S定义为另一个类A的友元类时,类S的所有成员函数都可以直接访问类A

的所有成员。对

22.当函数的返回值是数组类型的,传递的是数组第一个元素的地址。错

23.如果派生类的成员函数的原型与基类中被定义为虚函数的成员函数原型相同,那么,这

个函数自动继承基类中虚函数的特性。对

24.字符串’hello,world”在内存中存放时,占用11个字节的空间。错 25.用new动态申请的内存空间,必须用delete来释放 。对 26.静态数据成员必须在类外定义和初始化。( √ )

27.保护继承时,派生类中的成员函数可以直接访问基类中的protected成员。(√ ) 28.静态成员函数可以引用属于该类的任何函数成员。( × ) 29.指针常量可以指向相应类型的常量。(√ )

30.友元函数是在类声明中由关键字friend修饰说明的类的成员函数。( × ) 31.如果程序中未声明构造函数,则系统自动产生出一个默认形式的构造函数。( √ ) 32.友元函数访问对象中的成员可以不通过对象名( × )

33.如果程序中未声明析构函数,编译器将自动产生一个默认的析构函数。(√ )

34.类中的成员数据可以是另一个类的对象。( √ ) 35.常引用做形参,在函数中不能更新所引用的对象。(√) 36.虚函数不能是类的静态成员。对

37.重定义虚函数的派生类必须是公有继承的。对

38.对于从基类继承的虚函数,派生类也可以不进行重定义。对 39.纯虚函数与函数体为空的虚函数等价。错 40.多态类提供了一种动态多分支派送机制。对

41.作为虚函数隐含参数的this指针,决定了虚函数调用时执行的代码。对

三、填空题

1. C++语言是在_________语言的基础上发展起来的。

2. C++语言的编译单位是扩展名为__________的__________文件。 3. 行尾使用注释的开始标记符为__________。

4. 多行注释的开始标记符和结束标记符分别为__________和__________。 5. 用于输出表达式值的标准输出流对象是_________。

6. 用于从键盘上为变量输入值的标准输入流对象是________。 7. 一个完整程序中必须有一个名为________的函数。 8. 一个函数的函数体就是一条_________语句。 9. 当执行cin语句时,从键盘上输入每个数据后必须接着输入一个________符,然后才能继续输入下一个数据。

10. 在C++程序中包含一个头文件或程序文件的预编译命令为__________。 11. 程序中的预处理命令是指以______字符开头的命令。 12. 一条表达式语句必须以______作为结束符。

13. 在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是________定义的头文件。

14. 使用#include命令可以包含一个头文件,也可以包含一个______文件。 15.一个函数定义由________和________两部分组成。 16.若一个函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的______语句。

17.C++头文件和源程序文件的扩展名分别为______和______。 18.程序文件的编译错误分为________和________两类。

19.当使用_______保留字作为函数类型时,该函数不返回任何值。 20.当函数参数表用______保留字表示时,则表示该参数表为空。

21.从一条函数原型语句“int fun1(void);”可知,该函数的返回类型为______,该函数带有______个参数。

22. 当执行cout语句输出endl数据项时,将使C++显示输出屏幕上的光标从当前位置移动到________的开始位置。

23. 假定x=5,y=6,则表达式x++*++y的值为__________。 24. 假定x=5,y=6,则表达式x--*--y的值为__________。

25. 假定x=5,y=6,则执行表达式y*=x++计算后,x和y的值分别为__________和__________。

26. 假定x=5,y=6,则执行表达式y+=x--计算后,x和y的值分别为__________和__________。

27. C++常数0x145对应的十进制值为__________。 28. C++常数0345对应的十进制值为__________。

29. 十进制常数245对应的十六进制的C++表示为__________。 30. 十进制常数245对应的八进制的C++表示为__________。

31. signed char类型的值域范围是________至__________之间的整数。 32. int和float类型的数据分别占用_________和__________个字节。 33. float和double类型的数据分别占用_________和________个字节。 34. bool和char类型的数据分别占用_________和________个字节。

35. unsigned short int和int类型的长度分别为_________和________。 36. 字符串”This\\’s a book.\\n”的长度为__________。 37. 字符串”\\nThis\\’s a pen\\n\\n”的长度为__________。 38. 在C++中存储字符串”abcdef”至少需要________个字节。 39. 在C++中存储字符串”a+b=c”至少需要________个字节。

40. 假定x和y为整型,其值分别为16和5,则xy和x/y的值分别为__________和__________。

41. 假定x和y为整型,其值分别为16和5,则x/y和double(x)/y的值分别为__________和__________。

42. 假定x是一个逻辑量,则x true的值为__________。 43. 假定x是一个逻辑量,则x || true的值为__________。 44. 假定x是一个逻辑量,则x false的值为__________。 45. 假定x是一个逻辑量,则x || false的值为__________。 46. 假定x是一个逻辑量,则!x || false的值为__________。 47. 假定x是一个逻辑量,则x !x的值为__________。 48. 假定x是一个逻辑量,则x || !x的值为__________。

49. 数学算式

x?y 的C++表达式为________________。 2xy3xy 的C++表达式为________________。 x?y1的C++表达式为________________。 22ax?by50. 数学算式

51. 数学算式

52. 设enum Printstatus{ready,busy,error}; 则 cout<

53. 设enum Printstatus{ready=2,busy,error}; 则cout<

54. 常数-4.205和6.7E-9分别具有__________和__________位有效数字。

55. 枚举类型中的每个枚举值都是一个__________,它的值为一个__________。 56. 常数100和3.62的数据类型分别为__________和__________。

57. 若x=5, y=10, 则计算y*=++x表达式后,x和y的值分别为______和______。 58. 假定x和ch分别为int型和char型,则sizeof(x)和sizeof(ch)的值分别为______和______。

59. 假定x=10,则表达式x<=10?20:30的值为______。

60. 表达式sqrt(81)和pow(6,3)的值分别为______和______。 61. 含随机函数的表达式rand()20的值在_____至______区间内。

62. 在switch语句中,每个语句标号所含关键字case后面的表达式必须是_______。 63. 在if语句中,每个else关键字与它前面同层次并且最接近的________关键字相配套。

64. 作为语句标号使用的C++保留字case和defaule只能用于________语句的定义体中。

65. 执行switch语句时,在进行作为条件的表达式求值后,将从某个匹配的标号位置

起向下执行,当碰到下一个标号位置时(停止/不停止)________执行。

66. 若while循环的“头”为“while(i++<=10)”,并且i的初值为0,同时在循环体中不会修改i的值,则循环体将被重复执行______次后正常结束。

67. 若do循环的“尾”为“while(++i<10)”,并且i的初值为0,同时在循环体中不会修改i的值,则循环体将被重复执行______次后正常结束。

68. 当在程序中执行到________语句时,将结束本层循环类语句或switch语句的执行。

69. 当在程序中执行到________语句时,将结束所在循环语句中循环体的一次执行。 70. 在程序中执行到________语句时,将结束所在函数的执行过程,返回到调用该函数的位置。

71.在程序执行完________函数调用后,将结束整个程序的执行过程,返回到C++集成开发窗口。

72. 元素类型为int的数组a[10]共占用________字节的存储空间。

73. 元素类型为double的二维数组a[4][6]共占用________字节的存储空间。 74. 元素类型为char的二维数组a[10][30]共占用________字节的存储空间。 75. 存储字符’a’和字符串”a”分别需要占用________和________个字节。

76. 空串的长度为________,存储它需要占用________个字节。 77. 字符串”\\’a\\’xy=4\\n”的长度为________。 78. 字符串”a:\\\\xxk\\\\数据”的长度为________。

79. 用于存储一个长度为n的字符串的字符数组的长度至少为________。

80. 若a是一个字符数组,则从键盘上向该数组输入一个字符串的表达式为__________。

81. 若a是一个字符数组,则向屏幕输出a中所存字符串的表达式为__________。 82. 一个二维字符数组a[10][20]能够存储________个字符串,每个字符串的长度至多为________。

83. 对一个二维字符数组a进行初始化的数据为{”123”,”456”,”789”},则a[1]元素对应的字符串为__________。

84. strlen(”apple”)的值为________,strcmp(”a”,”A”)的值为________。 85. 若需要把一个字符串”aaa”赋值到字符数组a中,则需要执行________函数的调用来实现。

85. 假定对数组a[]进行初始化的数据为{2,7,9,6,5,7,10},则a[2]和a[5]分别被初始化为________和________。

86. 假定对二维数组a[3][4]进行初始化的数据为{{3,5,6},{2,8},{7}},则a[1][1]和a[2][3]分别被初始化为_______和________。

87. 在C++语言中,一个函数由函数头和__________组成。

88. 重载一个函数的条件是:该函数必须在参数的个数或参数的__________上与其它同名函数有所不同。

89. 如果一个函数只允许同一程序中的函数调用,则应在该函数定义前加上__________C++保留字。

90. 若“double x=100;”是文件F1.CPP中的一个全局变量定义语句,若文件F2.CPP中的某个函数需要访问此x , 则应在文件F2.CPP中添加对x的声明语句为_________________。

91. 定义一个函数模板要用到的第一个修饰符是____________。

92. 在函数模板的参数中,用class修饰的参数称为__________参数。

93. 如果一个函数直接或间接地调用自身,这样的调用称为____________调用。 94. 已知int cubin(int n){return n*n*n;}和double cubin(double n){return n*n*n;}是一个函数模板的两个实例,假定类型参数用T表示,则该函数模板的定义是__________________________________。

95. 对于无返回值函数,定义函数时要用__________修饰函数类型。

96. 如果一个函数定义中使用了__________修饰,则该函数不允许被其它文件中的函数调用。

97. 如果一个函数中有多个默认参数,则默认参数必须全部处在形参表的________部分。

98. 定义外部变量时,不用存储类说明符_________,而声明外部变量时用它。

99.调用系统函数时,要先使用#include命令包含该系统函数的原型语句所在的__________。

100. 函数形参的作用域是该函数的____________。

101. C++提供的预处理命令有宏定义命令,条件编译命令和____________。 102. 程序的编译是以__________为单位进行的。

103. C++程序运行时的内存空间可以分成全局数据区,堆区,栈区和__________。 104. 全局变量和静态局部变量具有静态生存期,存放在内存的____________区中。 105. 局部变量具有局部生存期,存放在内存的____________区中。

106. 若二维数组a有m列,设a[0][0]位于数组的第一个位置上,则计算任一元素a[i][j]在数组中位置序号的公式为____________。

107. 若有定义“double a[3][5];”,则a 数组中行下标和列下标的最大值分别为________和________。

108. 若有定义“struct AA {int a; char b; double c;}x;”,则x占用空间大小为________字节。

109. 当定义一个结构体变量时,系统分配给该变量的内存大小等于各成员所需内存大小的_______。

110. 一个指针类型的对象占用内存的________个字节的存储空间。

111. 一个指针指向一个数据对象,它保存着该数据对象的________,若数据对象为DataType类型,则相应的指针类型为__________。

112. 若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为________。 113. 假定一个数据对象为int*类型,则指向该对象的指针类型为_______。 114. 假定p是一个指向整数对象的指针,则用________表示该整数对象,用________表示指针变量p的地址。

115. 假定p是一个指针,则*p++运算首先访问________,然后使________的值增1。 116. 假定p是一个指针,则(*p)++运算首先访问________,然后使________的值增1。 117. 假定p所指对象的值为25,p+1所指对象的值为42,则*p++的值为________。 118.假定p所指对象的值为25,p+1所指对象的值为42,则*++p的值为________。 119. 假定p所指对象的值为25,p+1所指对象的值为42,则执行(*p)++运算后,p所指对象的值为________。

120.假定p所指对象的值为25,p+1所指对象的值为42,则执行*(p++)或*p++运算后,p所指对象的值为________。

121.假定a是一个一维指针数组,则a+i所指对象的地址比a大________字节。 122. 假定a是一个一维数组,则a[i]的指针访问方式为________。

123. 假定a是一个一维数组,则a[i]对应的存储地址(以字节为单位)为____________。

124. 一个数组的数组名实际上是指向该数组________元素的指针,并且在任何时候都不允许________它。

125. 假定指向一维数组b[10]中元素b[4]的指针为p,则p+3所指向的元素为_______,p-2所指向的元素为________。

126.若要定义整型指针p并初始指向x,则所使用的定义语句为________。 127. 若p指向x,则________与x的表示是等价的。

128. 在一个二维数组int a[m][n]中,包含的一维元素a[i]的类型为________,访