资源描述
C++面向对象程序设计复习题集
一、单项选择题
1. C++源程序文献的默认扩展名为( A )。
A. cpp B. exe C. obj D. lik
2. 由C++源程序文献编译而成的目的文献的默认扩展名为( C )。
A. cpp B. exe C. obj D. lik
3. 由C++目的文献连接而成的可执行文献的默认扩展名为( B )。
A. cpp B. exe C. obj D. lik
4. C++程序从上机到得到结果的几个操作环节依次是( B )。
A. 编译、编辑、连接、运营
B. 编辑、编译、连接、运营
C. 编译、运营、编辑、连接
D. 编辑、运营、编辑、连接
5. 以下标记符中不全是保存字的是( B )。
A. case for int
B. default then while
C. bool class long
D. goto return char
6. 能作为C++程序的基本单位是( C )。
A. 字符 B. 语句 C. 函数 D. 源程序文献
7. 程序中主函数的名字为( A )。
A. main B. MAIN C. Main D. 任意标记符
8. C++程序的基本模块为( D )。
A. 表达式 B. 标记符 C. 语句 D. 函数
9. 可用作C++语言用户标记符的一组标记符是( B )。
A. void define +WORD
B. a3_b3 _123 YN
C. for -abc Case
D. 2a DO sizeof
10. 存储以下数据,占用存储字节最多的是( D )。
A. 0 B. ‘0’ C. “0” D. 0.0
11. 程序运营中需要从键盘上输入多于一个数据时,各数据之间应使用( D )符号作为分隔符。
A. 空格或逗号 B. 逗号或回车 C. 逗号或分号 D. 空格或回车
12. 设”int a=12;”,则执行完语句”a+=a*a;”后,a的值是( C )。
A. 12 B. 144 C. 156 D. 288
13. 假设在程序中 a、b、c 均被定义成整型,所赋的值都大于1,则下列能对的表达代数式的表达式是( D )。
A. 1.0/a*b*c B. 1/(a*b*c) C. 1/a/b/(float)c D. 1.0/a/b/c
14. 设”int a=15,b=26;”,则”cout<<(a,b);”的输出结果是( D )。
A. 15 B. 26,15 C. 15,26 D. 26
15. 设x是一个bool型的逻辑量,y的值为10,则表达式 x && y的值为( C )。
A. 1 B. 0 C. 与x值相同 D. 与x值相反
16. x>0 && x<=10的相反表达式为( A )。
A. x<=0 || x>10 B. x<=0 && x>10
C. x<=0 || x<=10 D. x>0 && x>10
17. x>0 || y==5的相反表达式为( B )。
A. x<=0 || y!=5 B. x<=0 && y!=5
C. x>0 || y!=5 D. x>0 && y==5
18.设x和y均为bool量,则x && y为真的条件是( A )。
A. 它们均为真 B. 其中一个为真
C. 它们均为假 D. 其中一个为假
19.设x和y均为bool量,则x || y为假的条件是( C )。
A. 它们均为真 B. 其中一个为真
C. 它们均为假 D. 其中一个为假
20. 字符串”a+b=12\n”的长度为( B )。
A. 6 B. 7 C. 8 D. 9
21. 假定下列x和y均为int型变量,则不对的的赋值为( B )。
A. x+=y++ B. x++=y++ C. x=++y D. ++x=++y
22. 下列的符号常量定义中,错误的定义是( C )。
A. const M=10; B. const int M=20;
C. const char ch; D. const bool mark=true;
23. 循环语句“for(int i=0; i<n; i++) cout<<i*i<<’ ’;”中循环体执行的次数为( C )。
A. 1 B. n-1 C. n D. n+1
24. 在下面循环语句中循环体执行的次数为( B )。
for(int i=0; i<n; i++)
if(i>n/2) break;
A. n/2 B. n/2+1 C. n/2-1 D. n-1
25. 在下面循环语句中内层循环体S语句的执行总次数为( D )。
for(int i=0; i<n; i++)
for(int j=i; j<n; j++) S;
A. n2 B. (n+1)/2 C. n(n-1)/2 D. n(n+1)/2
26. 在下面循环语句中循环体执行的次数为( C )。
int i=0,s=0; while(s<20) {i++; s+=i;}
A. 4 B. 5 C. 6 D. 7
27. 在下面循环语句中循环体执行的次数为( A )。
int i=0; do i++; while(i*i<10);
A. 4 B. 3 C. 5 D. 2
28. 当解决特定问题时的循环次数已知时,通常采用( A )来解决。
A. for循环 B. while循环 C. do循环 D. switch语句
29. 循环体至少被执行一次的语句为( C )。
A. for循环 B. while循环 C. do循环 D. 任一种循环
30. switch语句可以改写为( B )语句。
A. for B. if C. do D. while
31. do语句可以改写为( D )语句。
A. 复合 B. if C. switch D. while
32. 在下面的一维数组定义中,哪一个有语法错误。( C )
A. int a[]={1,2,3}; B. int a[10]={0};
C. int a[]; D. int a[5];
33. 在下面的字符数组定义中,哪一个有语法错误。( D )。
A. char a[20]=”abcdefg”; B. char a[]=”x+y=55.”;
C. char a[15]; D. char a[10]=’5’;
34. 在下面的二维数组定义中,对的的是( C )。
A. int a[5][]; B. int a[][5];
C. int a[][3]={{1,3,5},{2}}; D. int a[](10);
35. 假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为( C )。
A. 2 B. 4 C. 6 D. 8
36. 假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为( A )。
A. 0 B. 4 C. 8 D. 6
37. 若定义了函数 double *function(), 则函数function的返回值为( B )。
A. 实数型 B.实数的地址 C.指向函数的指针 D.函数的地址
38. 以下说法中对的的是( B )。
A. C++程序总是从第一个定义的函数开始执行
B. C++程序总是从main函数开始执行
C. C++函数必须有返回值,否则不能使用函数
D. C++程序中有调用关系的所有函数必须放在同一个程序文献中
39. 以下叙述中不对的的是( C )。
A. 在一个函数中,可以有多条return语句
B. 函数的定义不能嵌套,但函数的调用可以嵌套
C. 函数必须有返回值
D. 不同的函数中可以使用相同名字的变量
40. 函数重载是指( A )。
A. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同
B. 两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同
C. 两个以上的函数名字不同,但形参的个数或类型相同
D. 两个以上的函数取相同的函数名,并且函数的返回类型相同
41. 以下关于函数模板叙述对的的是( C )。
A. 函数模板也是一个具体类型的函数
B. 函数模板的类型参数与函数的参数是同一个概念
C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数
D. 用函数模板定义的函数没有类型
42. 下列( C )的调用方式是引用调用。
A. 形参和实参都是变量 B.形参是指针,实参是地址值
C. 形参是引用,实参是变量 D.形参是变量,实参是地址值
43. 为了提高程序的运营速度,可将不太复杂的功能用函数实现,此函数应选择( A )。
A. 内联函数 B.重载函数 C.递归函数 D.函数模板
44. 函数原型语句对的的是( B )。
A. int Function(void a); B.void Function (int);
C. int Function(a); D.void int(double a);
45. C++中函数返回值的类型是由( B )决定的。
A. return语句中表达式的类型 B.该函数定义时的类型
C.调用函数时的调用语句 D.系统根据结果
46. 以下函数的返回结果是( A )。
int function(char *x) {
char *p=x; while(*p++); return(p-x-1);
}
A. 求字符串的长度 B.将字符串x连接到字符串p后面
C. 将字符串x复制到字符串p中 D.将字符串x反向存放
47. 函数调用func((exp1,exp2),(exp3,exp4,exp5))中所含实参的个数为( B )个。
A. 1 B. 2 C. 4 D. 5
48. 设有如下函数定义
int f(char *s) {
char *p=s;
while(*p!=’\0’) p++;
return(p-s);
}
在主函数中用cout<<f(“good”)调用上述函数, 则输出结果为( B )。
A. 3 B. 4 C. 5 D. 6
49. 以下对的的函数原型语句是( C )。
A. double fun(int x,int y)
B. double fun(int x;int y)
C. double fun(int,int);
D. double fun(int x,y);
50. 以下对的的说法是( B )。
A. 用户调用标准库函数前,必须重新定义
B. 用户可以重新定义标准库函数,若如此,该函数将失去原有含义
C. 系统不允许用户重新定义标准库函数
D. 用户调用标准库函数前,不必使用预编译命令将该函数所在文献涉及到用户源文献中
51. 函数调用不可以( D )。
A. 出现在一个表达式中
B. 出现在执行语句中
C. 作为一个函数的实参
D. 作为一个函数的形参
52. 以下对的的描述是( B )。
A. 函数的定义可以嵌套,函数的调用不可以嵌套
B. 函数的定义不可以嵌套,函数的调用可以嵌套
C. 函数的定义和函数的调用均可以嵌套
D. 函数的定义和函数的调用均不可以嵌套
53. 若用数组名作为函数调用的实参,传递给形参的是(A )。
A. 数组的首地址 B. 数组中第一个元素的值
C. 数组所有元素的值 D. 数组元素的个数
54. 以下错误的描述是( D )。
A. 被调用函数中可以不用return语句
B. 被调用函数中可以用多个return语句
C. 被调用函数中,假如有返回值,就一定要有return语句
D. 被调用函数中,一个return语句可返回多个值给调用函数
55. 以下对的的描述是( C )。
A. 不允许设立参数的默认值
B. 设立参数的默认值只能在定义函数时设立
C. 设立参数的默认值时,应当设立右边的参数
D. 设立参数的默认值时,应当所有参数都设立
56. 采用重载函数的目的是(D )。
A. 实现共享 B. 减少空间
C. 提高速度 D. 使用方便,提高可读性
57. 将两个字符串连接起来组成一个字符串时,选用( C )函数。
A. strlen() B. strcap() C. strcat() D. strcmp()
58. 以下叙述中对的的是( B )。
A. 使用#define可认为常量定义一个名字,该名字在程序中可以再赋此外的值
B. 使用const定义的常量名有类型之分,其值在程序运营时是不可改变的
C. 在程序中使用内联函数使程序的可读性变差
D. 在定义函数时可以在形参表的任何位置给出缺省形参值
59. 下面的标记符中,( C )是文献级作用域。
A. 函数形参 B.语句标号 C.外部静态类标记符 D.自动类标记符
60. 以下叙述不对的的是(D )。
A. 宏替换不占用运营时间 B. 宏名无类型
C. 宏替换只是字符替换 D. 宏名必须用大写字母表达
61. C++语言的编译系统对宏命令的解决是( D )。
A. 在程序运营时进行
B. 在程序连接时进行
C. 和C++程序的其它语句同时进行编译
D. 在对源程序中其它成分正式编译之前进行
62. 当#include后面的文献名用双引号括起来时,寻找被包含文献的方式是( B )。
A. 直接按系统设定的标准方式搜索目录
B. 先在源程序所在目录搜索,再按系统设定的标准方式搜索目录
C. 仅仅搜索源程序所在目录
D. 搜索当前逻辑盘上的所有目录
63. 当#include后面的文献名用尖括号括起来时,寻找被包含文献的方式是( A )。
A. 直接按系统设定的标准方式搜索目录
B. 先在源程序所在目录搜索,再按系统设定的标准方式搜索目录
C. 仅仅搜索源程序所在目录
D. 搜索当前逻辑盘上的所有目录
64. 在下面存储类中, ( C ) 对象的可见性与生存期不一致。
A. 外部类 B. 自动类 C. 内部静态类 D. 寄存器类
65. 在下面存储类中,( A )的对象不是局部变量。
A. 外部静态类 B. 自动类 C. 函数形参 D. 寄存器类
66. 关于局部变量,下面说法对的的是( C )。
A. 定义该变量的程序文献中的函数都可以访问
B. 定义该变量的函数中的定义处以下的任何语句都可以访问
C. 定义该变量的复合语句中的定义处以下的任何语句都可以访问
D. 定义该变量的函数中的定义处以上的任何语句都可以访问
67. 文献包含命令中被包含的文献的扩展名( C )。
A. 必须是.h B. 不能是.h C. 可以是.h或.cpp D. 必须是.cpp
68. 预解决命令在程序中都是以( B )符号开头的。
A. * B. # C. & D. @
69. 设array为一个数组,则表达式sizeof(array)/sizeof(array[0])的结果为( B )。
A. array数组首地址
B. array数组中元素个数
C. array数组中每个元素所占的字节数
D. array数组占的总字节数
70. 用new运算符创建一个含10个元素的一维整型数组的对的语句是( C )。
A. int *p=new a[10]; B. int *p=new float[10];
C. int *p=new int[10]; D. int *p=new int[10]={1,2,3,4,5}
71. 下列给字符数组赋初值时,对的的是( A )。
A. char s1[]=”abcdef”; B. char s2[4]=”abcd”;
C. char s3[2][3]={“abc”,”xyz”}; D. char s4[4][]={‘a’,’x’,’s’,’t’};
72. 设有定义“static int data[5][6];”,设该数组在静态存储区中的起始地址为十进制的100,若每个int型数占4个字节,则数组元素data[2][3]的地址为( D )。
A. 115 B.124 C.130 D.160
73. 假定变量m定义为“int m=7;”,则定义变量p的对的语句为( B )。
A. int p=&m; B. int *p=&m; C. int &p=*m; D. int *p=m;
74. 假定k是一个double类型的变量,则关于变量p的对的定义语句为( D )。
A. double p=&k; B. int *p=&k;
C. double &p=*k; D. char *p=”Thank you!”;
75. 变量s的定义为“char *s=”Hello world!”;”,要使变量p指向s所指向的同一个字符串,则应选取( A )。
A. char *p=s; B. char *p=&s; C. char *p;p=*s; D. char *p; p=&s;
76. 关于void 指针,下列说法对的的是( C )。
A. void 指针就是未指向任何数据的指针
B. void 指针就是已定义而未初始化的指针
C. 指向任何类型数据的指针可直接赋值给一个void 指针
D. void 指针值可直接赋给一个非void 指针
77. 假定一条定义语句为“int a[10], x, *pa=a;”,若要把数组a中下标为3的元素值赋给x,则不对的的语句为( D )。
A. x=pa[3]; B. x=*(a+3); C. x=a[3]; D. x=*pa+3;
78. 假定有定义“int b[10]; int *pb;”,则不对的的赋值语句为( D )。
A. pb=b; B. pb=&b[0]; C. *pb=new int; D. pb=b[5];
79. 假定p是具有double类型的指针变量,则表达式++p使p的值(以字节为单位)增长( C )。
A. 1 B. 4 C. sizeof(double) D. sizeof(p)
80. 假定p指向的字符串为”string”,则cout<<p+3的输出结果为( C )。
A. string B. ring C. ing D. i
81. 假定p指向的字符串为”string”,若要输出这个字符串的地址值,则使用( D )。
A. cout<<*p; B. cout<<p; C. cout<<&p; D. cout<<(void *)p;
82. 定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为( A )。
A. int *p=new int[30]; B. int *p=new int(30);
C. int *p=new [30]; D. *p=new int[30];
83. 假定p是具有int**类型的指针变量,则给p赋值的对的语句为( B )。
A. p=new int; B. p=new int*; C. p=new int**; D. p=new int[10];
84. 要使语句“p=new int[10][20];”可以正常执行,p应被事先定义为( D )。
A. int *p; B. int **p; C. int *p[20]; D. int(*p)[20];
85. 假定有“struct BOOK{char title[40]; float price;}; BOOK *book=new BOOK;”,则对的的语句为( A )。
A. strcpy(book->title,”Wang Tao”); B. strcpy(book.title,”Wang Tao”);
C. strcpy(*book.title,”Wang Tao”); D. strcpy((*book)->title,”Wang Tao”);
86. 假定有“struct BOOK{char title[40]; float price;}; BOOK *book;”,则不对的的语句为( A )。
A. BOOK *x=new book; B. BOOK x={"C++ Programming",27.0};
C. BOOK *x=new BOOK; D. BOOK *x=book;
87. 假定有“struct BOOK{char title[40]; float price;}book;”,则对的的语句为( B )。
A. BOOK &x= &book; B. BOOK &x=book;
C. BOOK &x=new BOOK; D. BOOK &x=BOOK;
88. 下列对引用的陈述中不对的的是( C )。
A. 每一个引用都是其所引用对象的别名,因此必须初始化
B. 形式上针对引用的操作事实上作用于它所引用的对象
C. 一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行
D. 不需要单独为引用分派存储空间
89. 假定变量a和pa定义为“double a[10], *pa=a;”,要将12.35赋值给a中的下标为5的元素,不对的的语句是( D )。
A. pa[5]=12.35; B. a[5]=12.35;
C. *(pa+5)=12.35; D. *(a[0]+5)=12.35;
90. 假定变量b和pb定义为“int b[10], *pb=b;”,要将24赋值给b[1]元素中,不对的的语句是( C )。
A. *(pb+1)=24; B. *(b+1)=24; C. *++b=24; D. *++pb=24;
91. 假定指针变量p定义为“int *p=new int(100);”,要释放p所指向的动态内存,应使用语句( A )。
A. delete p; B. delete *p; C. delete &p; D. delete []p;
92. 假定指针变量p定义为“int *p=new int[30];”,要释放p所指向的动态内存,应使用语句( D )。
A. delete p; B. delete *p; C. delete &p; D. delete []p;
93. 假定变量x定义为“int x=5;”,要使rx成为x的引用(别名),rx应定义为( D )。
A. int rx=x; B. int rx=&x; C. int *rx=&x; D. int &rx=x;
94. 关于消息,下列说法中不对的的是( B )。
A. 发送消息的对象请求服务,接受消息的对象提供服务
B. 消息的发送者必须了解消息的接受者如何相应消息
C. 在C++中,消息的发送具体体现为对接受消息的对象的某个函数的调用
D. 每个对象只能接受某些特定格式的消息
95. 关于封装,下列说法中不对的的是( D )。
A. 通过封装,对象的所有属性和操作结合在一起,形成一个整体
B. 通过封装,一个对象的实现细节被尽也许地隐藏起来(不可见)
C. 通过封装,每个对象都成为相对独立的实体
D. 通过封装,对象的属性都是不可见的
96. 面向对象方法的多态性是指( C )。
A. 一个类可以派生出多个特殊类
B. 一个对象在不同的运营环境中可以有不同的变体
C. 针对一消息,不同的对象可以以适合自身的方式加以响应
D. 一个对象可以是由多个其他对象组合而成的
97. 软件产品在需求发生变化、运营环境发生变化或发现软件产品自身的错误或局限性时进行相应的软件更新的难易限度叫做软件的( A )。
A. 可维护性 B. 可复用性 C. 兼容性 D. 对的性
98. 软件产品可被所有或部分地再用于新的应用的能力叫做软件的( B )。
A. 可维护性 B. 可复用性 C. 兼容性 D. 对的性
99. 软件产品与其他软件产品组合成一个整体的难易限度叫做软件的( C )。
A. 可维护性 B. 可复用性 C. 兼容性 D. 对的性
100. 软件产品准确执行软件需求规格说明书中所规定的任务的能力叫做软件的( D )。
A. 可维护性 B. 可复用性 C. 兼容性 D. 对的性
二、填空题
1. C++语言是在__C____语言的基础上发展起来的。
2. C++语言的编译单位是扩展名为___.cpp_____的__程序_____文献。
3. 行尾使用注释的开始标记符为____//____。
4. 多行注释的开始标记符和结束标记符分别为_/*________和___*/_____。
5. 用于输出表达式值的标准输出流对象是_cout_____。
6. 用于从键盘上为变量输入值的标准输入流对象是___cin___。
7. 一个完整程序中必须有一个名为__main____的函数。
8. 一个函数的函数体就是一条__复合_____语句。
9. 当执行cin语句时,从键盘上输入每个数据后必须接着输入一个_空白_____符,然后才干继续输入下一个数据。
10. 在C++程序中包含一个头文献或程序文献的预编译命令为__#include______。
11. 程序中的预解决命令是指以__#___字符开头的命令。
12. 一条表达式语句必须以___分号___作为结束符。
13. 在#include命令中所包含的头文献,可以是系统定义的头文献,也可以是___用户(或编程者)____定义的头文献。
14. 使用#include命令可以包含一个头文献,也可以包含一个_程序___文献。
15.一个函数定义由_函数头____和__函数体____两部分组成。
16.若一个函数的定义处在调用它的函数之前,则在程序开始可以省去该函数的_原型(或声明)____语句。
17.C++头文献和源程序文献的扩展名分别为___.h___和___.cpp___。
18.程序文献的编译错误分为___警告(warning)____和__致命(error)___两类。
19.当使用__void____保存字作为函数类型时,该函数不返回任何值。
20.当函数参数表用__void____保存字表达时,则表达该参数表为空。
21.从一条函数原型语句“int fun1(void);”可知,该函数的返回类型为__int____,该函数带有_0___个参数。
22. 当执行cout语句输出endl数据项时,将使C++显示输出屏幕上的光标从当前位置移动到_____下一行___的开始位置。
23. 假定x=5,y=6,则表达式x++*++y的值为____35______。
24. 假定x=5,y=6,则表达式x--*--y的值为_____25_____。
25. 假定x=5,y=6,则执行表达式y*=x++计算后,x和y的值分别为___6_______和___30_______。
26. 假定x=5,y=6,则执行表达式y+=x--计算后,x和y的值分别为____4______和____11______。
27. C++常数0x145相应的十进制值为_____325_____。
28. C++常数0345相应的十进制值为_____2_____。
29. 十进制常数245相应的十六进制的C++表达为____0xf5______。
30. 十进制常数245相应的八进制的C++表达为____0365______。
31. signed char类型的值域范围是__-12
展开阅读全文