C++面向对象程序设计复习题集Word格式.docx
《C++面向对象程序设计复习题集Word格式.docx》由会员分享,可在线阅读,更多相关《C++面向对象程序设计复习题集Word格式.docx(42页珍藏版)》请在冰豆网上搜索。
B.C++程序总是从main函数开始执行
C.C++函数必须有返回值,否则不能使用函数
D.C++程序中有调用关系的所有函数必须放在同一个程序文件中
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.intFunction(voida);
B.voidFunction(int);
C.intFunction(a);
D.voidint(doublea);
45.C++中函数返回值的类型是由(B)决定的。
A.return语句中表达式的类型B.该函数定义时的类型
C.调用函数时的调用语句D.系统根据结果
46.以下函数的返回结果是(A)。
intfunction(char*x){
char*p=x;
while(*p++);
return(p-x-1);
}
A.求字符串的长度B.将字符串x连接到字符串p后面
C.将字符串x复制到字符串p中D.将字符串x反向存放
48.设有如下函数定义
intf(char*s){
char*p=s;
while(*p!
=’\0’)p++;
return(p-s);
在主函数中用cout<
f(“good”)调用上述函数,则输出结果为(B)。
A.3B.4C.5D.6
49.以下正确的函数原型语句是(C)。
A.doublefun(intx,inty)
B.doublefun(intx;
inty)
C.doublefun(int,int);
D.doublefun(intx,y);
50.以下正确的说法是(B)。
A.用户调用标准库函数前,必须重新定义
B.用户可以重新定义标准库函数,若如此,该函数将失去原有含义
C.系统不允许用户重新定义标准库函数
D.用户调用标准库函数前,不必使用预编译命令将该函数所在文件包括到用户源文件中
51.函数调用不可以(D)。
A.出现在一个表达式中
B.出现在执行语句中
C.作为一个函数的实参
D.作为一个函数的形参
55.以下正确的描述是(C)。
A.不允许设置参数的默认值
B.设置参数的默认值只能在定义函数时设置
C.设置参数的默认值时,应该设置右边的参数
D.设置参数的默认值时,应该全部参数都设置
56.采用重载函数的目的是(D)。
A.实现共享B.减少空间
C.提高速度D.使用方便,提高可读性
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)。
64.在下面存储类中,(C)对象的可见性与生存期不一致。
A.外部类B.自动类C.内部静态类D.寄存器类
65.在下面存储类中,(A)的对象不是局部变量。
A.外部静态类B.自动类C.函数形参D.寄存器类
66.关于局部变量,下面说法正确的是(C)。
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=newa[10];
B.int*p=newfloat[10];
C.int*p=newint[10];
D.int*p=newint[10]={1,2,3,4,5}
71.下列给字符数组赋初值时,正确的是(A)。
A.chars1[]=”abcdef”;
B.chars2[4]=”abcd”;
C.chars3[2][3]={“abc”,”xyz”};
D.chars4[4][]={‘a’,’x’,’s’,’t’};
72.设有定义“staticintdata[5][6];
”,设该数组在静态存储区中的起始地址为十进制的100,若每个int型数占4个字节,则数组元素data[2][3]的地址为(D)。
A.115B.124C.130D.160
73.假定变量m定义为“intm=7;
”,则定义变量p的正确语句为(B)。
A.intp=&
m;
B.int*p=&
C.int&
p=*m;
D.int*p=m;
74.假定k是一个double类型的变量,则关于变量p的正确定义语句为(D)。
A.doublep=&
k;
C.double&
p=*k;
D.char*p=”Thankyou!
”;
75.变量s的定义为“char*s=”Helloworld!
”,要使变量p指向s所指向的同一个字符串,则应选取(A)。
A.char*p=s;
B.char*p=&
s;
C.char*p;
p=*s;
D.char*p;
p=&
76.关于void指针,下列说法正确的是(C)。
A.void指针就是未指向任何数据的指针
B.void指针就是已定义而未初始化的指针
C.指向任何类型数据的指针可直接赋值给一个void指针
D.void指针值可直接赋给一个非void指针
77.假定一条定义语句为“inta[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.假定有定义“intb[10];
int*pb;
”,则不正确的赋值语句为(D)。
A.pb=b;
B.pb=&
b[0];
C.*pb=newint;
D.pb=b[5];
79.假定p是具有double类型的指针变量,则表达式++p使p的值(以字节为单位)增加(C)。
A.1B.4C.sizeof(double)D.sizeof(p)
80.假定p指向的字符串为”string”,则cout<
p+3的输出结果为(C)。
A.stringB.ringC.ingD.i
81.假定p指向的字符串为”string”,若要输出这个字符串的地址值,则使用(D)。
A.cout<
*p;
B.cout<
p;
C.cout<
&
D.cout<
(void*)p;
82.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为(A)。
A.int*p=newint[30];
B.int*p=newint(30);
C.int*p=new[30];
D.*p=newint[30];
83.假定p是具有int**类型的指针变量,则给p赋值的正确语句为(B)。
A.p=newint;
B.p=newint*;
C.p=newint**;
D.p=newint[10];
84.要使语句“p=newint[10][20];
”能够正常执行,p应被事先定义为(D)。
A.int*p;
B.int**p;
C.int*p[20];
D.int(*p)[20];
85.假定有“structBOOK{chartitle[40];
floatprice;
};
BOOK*book=newBOOK;
”,则正确的语句为(A)。
A.strcpy(book->
title,”WangTao”);
B.strcpy(book.title,”WangTao”);
C.strcpy(*book.title,”WangTao”);
D.strcpy((*book)->
86.假定有“structBOOK{chartitle[40];
BOOK*book;
”,则不正确的语句为(A)。
A.BOOK*x=newbook;
B.BOOKx={"
C++Programming"
27.0};
C.BOOK*x=newBOOK;
D.BOOK*x=book;
87.假定有“structBOOK{chartitle[40];
}book;
”,则正确的语句为(B)。
A.BOOK&
x=&
book;
B.BOOK&
x=book;
C.BOOK&
x=newBOOK;
D.BOOK&
x=BOOK;
88.下列对引用的陈述中不正确的是(C)。
A.每一个引用都是其所引用对象的别名,因此必须初始化
B.形式上针对引用的操作实际上作用于它所引用的对象
C.一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行
D.不需要单独为引用分配存储空间
89.假定变量a和pa定义为“doublea[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定义为“intb[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=newint(100);
”,要释放p所指向的动态内存,应使用语句(A)。
A.deletep;
B.delete*p;
C.delete&
D.delete[]p;
92.假定指针变量p定义为“int*p=newint[30];
”,要释放p所指向的动态内存,应使用语句(D)。
93.假定变量x定义为“intx=5;
”,要使rx成为x的引用(别名),rx应定义为(D)。
A.intrx=x;
B.intrx=&
x;
C.int*rx=&
D.int&
rx=x;
94.关于消息,下列说法中不正确的是(B)。
A.发送消息的对象请求服务,接受消息的对象提供服务
B.消息的发送者必须了解消息的接收者如何相应消息
C.在C++中,消息的发送具体体现为对接收消息的对象的某个函数的调用
D.每个对象只能接收某些特定格式的消息
95.关于封装,下列说法中不正确的是(D)。
A.通过封装,对象的全部属性和操作结合在一起,形成一个整体
B.通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见)
C.通过封装,每个对象都成为相对独立的实体
D.通过封装,对象的属性都是不可见的
96.面向对象方法的多态性是指(C)。
A.一个类可以派生出多个特殊类
B.一个对象在不同的运行环境中可以有不同的变体
C.针对一消息,不同的对象可以以适合自身的方式加以响应
D.一个对象可以是由多个其他对象组合而成的
二、填空题
2.C++语言的编译单位是扩展名为___.cpp_____的__程序_____文件。
4.多行注释的开始标记符和结束标记符分别为_/*________和___*/_____。
8.一个函数的函数体就是一条__复合_____语句。
10.在C++程序中包含一个头文件或程序文件的预编译命令为__#include______。
13.在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是___用户(或编程者)____定义的头文件。
14.使用#include命令可以包含一个头文件,也可以包含一个_程序___文件。
15.一个函数定义由_函数头____和__函数体____两部分组成。
16.若一个函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的_原型(或声明)____语句。
18.程序文件的编译错误分为___警告(warning)____和__致命(error)___两类。
21.从一条函数原型语句“intfun1(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______。
31.signedchar类型的值域范围是__-128______至__+127______之间的整数。
34.bool和char类型的数据分别占用____1_____和_____1___个字节。
35.unsignedshortint和int类型的长度分别为_____2____和___4_____。
36.字符串”This\’sabook.\n”的长度为_____15_____。
37.字符串”\nThis\’sapen\n\n”的长度为_____15_____。
40.假定x和y为整型,其值分别为16和5,则x%y和x/y的值分别为____1____和___3_____。
41.假定x和y为整型,其值分别为16和5,则x/y和double(x)/y的值分别为____3______和_____3.2____。
42.假定x是一个逻辑量,则x&
true的值为____x_____。
43.假定x是一个逻辑量,则x||true的值为_____true(或1)____。
44.假定x是一个逻辑量,则x&
false的值为_____false(或0)____。
45.假定x是一个逻辑量,则x||false的值为____x______。
46.假定x是一个逻辑量,则!
x||false的值为____!
x______。
47.假定x是一个逻辑量,则x&
!
x的值为_____false(或0)_____。
48.假定x是一个逻辑量,则x||!
x的值为____true(或1)_____。
52.设enumPrintstatus{ready,busy,error};
则cout<
busy的输出结果是_1____。
53.设enumPrintstatus{ready=2,busy,error};
则cout<
busy的输出结果是__3____。
54.常数-4.205和6.7E-9分别具有____4______和_____2_____位有效数字。
55.枚举类型中的每个枚举值都是一个_____枚举常量_____,它的值为一个___整数______。
56.常数100和3.62的数据类型分别为____int____和___double_____。
57.若x=5,y=10,则计算y*=++x表达式后,x和y的值分别为_6___和___60___。
58.假定x和ch分别为int型和char型,则sizeof(x)和sizeof(ch)的值分别为___4___和__1____。
59.假定x=10,则表达式x<
=10?
20:
30的值为__20____。
60.表达式sqrt(81)和pow(6,3)的值分别为___9___和__216____。
61.含随机函数的表达式rand()%20的值在__0___至__9____区间内。
62.在switch语句中,每个语句标号所含关键字case后面的表达式必须是整型_常量______。
63.在if语句中,每个else关键字与它前面同层次并且最接近的____if____关键字相配套。
64.作为语句标号使用的C++保留字case和default只能用于____switch____语句的定义体中。
65.执行switch语句时,在进行作为条件的表达式求值后,将从某个匹配的标号位置起向下执行,当碰到下一个标号位置时__不停止______执行。
66.若while循环的“头”为“while(i++<
=10)”,并且i的初值为0,同时在循环体中不会修改i的值,则循环体将被重复执行____11__次后正常结束。
67.若do循环的“尾”为“while(++i<
10)”,并且i的初值为0,同时在循环体中不会修改I的值,则循环体将被重复执行___10___次后正常结束。
70.在程序中执行到___return__语句时,将结束所在函数的执行过程,返回到调用该函数的位置。
71.在程序执行完___主(或main)__函数后,将结束整个程序的执行过程,返回到操作系统下的C++集成开发窗口。
72.元素类型为int的数组a[10]共占用__40_____字节的存储空间。
73.元素类型为double的二维数组a[4][6]共占用_192__字节的存储空间。
74.元素类型为char的二维数组a[10][30]共占用__300___字节的存储空间。
75.存储字符’a’和字符串”a”分别需要占用___1___和__2____个字节。
76.空串的长度为__0___,存储它需要占用____1___个字节。
77.字符串”\’a\’xy=4\n”的长度为__8____。
78.字符串”a:
\\xxk\\数据”的长度为_11___。
79.用于存储一个长度为n的字符串的字符数组的长度至少为___n+1___。
80.若a是一个字符数组,则从键盘上向该数组输入一个字符串的表达式为___cin>
>
a___。
81.若a是一个字符数组,则向屏幕输出a中所存字符串的表达式为____cout<
a____。
82.一个二维字符数组a[10][20]能够存储_____10___个字符串,每个字符串的长度至多为___19_____。
83.对一个二维字符数组a进行初始化