C++复习题.docx
- 文档编号:26267711
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:73
- 大小:49.22KB
C++复习题.docx
《C++复习题.docx》由会员分享,可在线阅读,更多相关《C++复习题.docx(73页珍藏版)》请在冰豆网上搜索。
C++复习题
第一章C++语言概述
1.1知识要点
1.C++语言的特点
(1)C++语言支持数据封装封装是指把对象属性和操作结合在一起,构成独立的单元,它的内部信息对外界是隐蔽的,不允许外界直接存取对象的属性,只能通过有限的接口与对象发生联系。
类是数据封装的工具,对象是封装的实现。
(2)C++类中包含私有、公有和保护成员类的访问控制机制体现在类的成员中可以有公有成员、私有成员和保护成员。
对于外界而言,只需要知道对象所表现的外部行为,而不必了解内部实现细节。
封装体现了面向对象方法的“信息隐蔽和局部化原则”。
(3)C++语言中通过发送消息来处理对象消息指对象之间在交互通讯中所传送的信息。
消息由三部分构成:
消息名、接收消息的对象标识和参数。
一个对象向另一个对象发送消息请求某项服务,接收消息的对象响应该消息,进行所要求的服务,并把操作的结果返回给请求服务的对象。
(4)C++语言中允许友元破坏封装性
(5)C++语言允许函数名和运算符重载
(6)C++语言支持继承性继承指子类(派生类)可以自动拥有父类(基类)的全部属性和服务。
父类和子类是一般与特殊的关系。
在定义一个子类时,可以把父类所定义的内容做为自己的内容,并加入若干新的内容
(7)C++语言支持动态联编多态性是指在基类中定义的属性和服务被子类继承后,可以具有不同的数据类型和表现出不同的行为。
当一个对象接收到一个请求进行某项服务的消息时,将根据对象所属的类,动态地选用该类中定义的操作。
2.C++程序的组成
注释部分(两种风格)、编译预处理部分(宏定义,文件包含和条件编译、)、程序正文部分(类型定义、常变量定义、函数定义)。
最终,程序源代码由ASCII码组成类似单词或词组的单元(词法单元),可以用任意的文本编辑器编辑,源代码中的空白(空格、Tab、回车换行)用来表示词法单元的开始和结束,除这一功能外其余空白将被忽略,但如果是字符串内部的空白(不含回车换行,或者说字符串内不能直接回车换行,需要使用转义符)将作为字符串的一部分输出,不会忽略。
注释:
1)一对符号“/*”与“*/”之间的内容称为注释。
它可以占多行,是从C语言中继承来的一种注释形式。
2)一行中符号“//”之后的内容也称为注释。
它只能占一行,是C++语言特有的一种注释形式。
编译预处理命令:
C++的编译预处理命令以“#”开头。
C++提供了三类编译预处理命令:
宏定义、文件包含和条件编译。
程序主体:
用函数组织过程,每个相对独立的过程都要组织成一个函数;不同的程序由不同的函数按层次结构组织而成。
一个C++程序至少且仅包含一个main()函数,也可以包含一个main()函数和若干个其他函数。
其他函数可以是系统提供的库函数(例如printf()和scanf()函数),也可以是用户根据需要自己编制设计的函数
3.函数
C++的程序由若干个文件组成,文件名的后缀为.cpp(cplusplus)。
每个文件又是由函数组成,函数之间可以调用。
在这些函数中只有一个函数是主函数main()。
程序执行时,操作系统先调用主函数,主函数再依次调用其它函数完成设计任务。
4.程序的编辑、编译、连接和运行
(1)编辑编辑是将编写好的C++源程序输入到计算机中,生成磁盘文件的过程。
(2)编译和连接过程
编译器的功能是将程序的源代码转换成为机器代码的形式,称为目标代码,然后,再将目标代码进行连接,生成可执行文件。
编译过程又可分为三个子过程。
(1)预处理过程:
对源程序编译时,先进行预处理,如果源程序中有预处理命令,则先执行这些预处理命令,执行后再进行下面的编译过程。
(2)编译过程:
编译过程主要是进行词法分析和语法分析的过程,又称源程序分析。
1)词法分析。
2)语法分析。
3)符号表。
4)错误处理程序。
5)生成目标代码。
连接过程:
这是编译的最后一个过程,将用户程序生成的多个目标代码文件和系统提供的库文件中的某些代码连接在一起由连接器生成一个可执行文件,存储这个可执行文件的扩展名为.exe。
(3)运行一个C++的源程序经过编译和连接后生成了可执行文件。
运行可执行文件可在编译系统下选择相关菜单项来实现,也可以采用其他方法。
1.2补充习题
1.下面的()不是C++所包含的要素。
A.重载B.对象C.类D.继承
2.下列标识符中,()是合法的。
A.gotoB.StudentC.123D.k-ld
3.在C++语言中,()的陈述是正确的。
A.能使用关键字并区分大小写B.能使用关键字并不区分大小写
C.不能使用关键字并区分大小写D.不能使用关键字并不区分大小写
4.C++语言中语句的结束符是()。
A.,B.;C.。
D.、
5.关于C++和C语言的描述中,()是错误的?
A.C是C++的一个子集B.C程序在C++环境可以运行
C.C++程序在C环境可以运行D.C++是面向对象的而C是面向过程的
6.以下叙述不正确的是()
A.一个C++源程序可由一个或多个函数组成
B.一个C++源程序必须包含一个main函数
C.C++程序的基本组成单位是函数
D.在C++程序中,注释说明只能位于一条语句的后面
下列叙述中正确的是()
A.c++程序总是从第一个函数开始执行
B.在c++程序中,要调用的函数必须在main()函数定义
C.c++程序中的main()函数开始执行
D.c++程序中的main()函数必须放在程序的开始部分
8.在一个c++程序中()
A.main()函数必须出现在所有函数之前
B..main()函数可以在任何地方出现
C..main()函数必须出现在所有函数之后
D.main()函数必须出现在固定位置9.下列叙述中正确的是()
A.c++程序中注视部分可以出现在程序中任意合适的地方
B.花括号”{“和”}”只能作为函数体的定界符
C.构成c++程序的基本单位是函数,所有函数名都可以由用户名
D.分号是c++语句之间的分隔符,不是语句的一部分
10.C++语言中的标示符只能由字母,数字和下划线三种字符组成,且第一个字符()
A.必须为字母
B.必须为字母或下划线
C.必须为下划线
D.可以是字母,数字和下划线中任一种字符
第2章数据类型与表达式
2.1知识要点
计算机的基本功能是进行数据处理。
在C++语言中,数据处理的基本对象是常量和变量。
运算是对各种形式的数据进行处理。
数据在内存中存放的情况由数据类型所决定。
数据的操作要通过运算符实现,而数据和运算符共同组成了表达式。
本章是对C++语言中的数据类型、运算符、表达式等内容的全面介绍,要正确理解其特点,并灵活运用,主要掌握以下的知识要点:
1.掌握常量和变量的概念。
2.掌握整型数据和实型数据、字符型数据和字符串型数据的概念和区别。
3.掌握各种类型的变量说明及其初始化。
4.掌握算术运算、关系运算、逻辑运算、赋值运算、逗号运算、条件运算等概念。
5.掌握运算符的优先级、左结合和右结合规则。
6.掌握表达式求值时的自动转换和强制类型转换。
7.掌握自加、自减运算的规则。
8.掌握常用数学函数的功能。
2.2典型例题分析与解答
1.选择题
例题1:
运算符+、=、*、>=中,优先级最高的运算符是()。
A.+B.=C.*D.>=
答案:
C
分析:
根据C++语言对运算符优先级的规则,以上运算符优先级从低到高的次序为=、>=、+、*。
例题2:
下列说法正确的是()。
A.cout<<”\n”是一个语句,它能在屏幕上显示”\n”
B.\68代表的是字符D。
C.1E+5的写法正确,它表示余割整型常量。
D.0x10相当于020。
答案:
D
分析:
分号是语句的已部分,且\n是转义字符;\68代表了八进制的6、8,而八进制中没有数字8;1E+5是实型常量;十六进制的10相当于十进制的16,相当于八进制的20。
例题3:
下列不合法的变量名为()。
A.intB.int1C.name_1D.name0
答案:
A
分析:
根据变量名命名要求,变量名只能由大小写字母、数字、下划线组成,且系统关键字不能作为变量名。
例题4:
下面正确的为()。
A.4.1/2B.3.2%3
C.3/2==1结果为1D.7/2结果为3.5
答案:
A
分析:
%运算符要求式整型;关系运算值为0;两个整数相除,商为为相除后的整数部分。
例题5:
已知a=4,b=6,c=8,d=9,则“(a++,b>a++&&c>d)?
++d:
a
A.9B.6C.8D.0
答案:
D
分析:
此题是考察“++”运算符、逗号运算符、条件运算符及它们运算优先级的综合题,根据这些运算符的运算规则,得出表达式的运算结果。
例题6:
已知i=5,j=0,下列各式中运算结果为j=6的表达式是()。
A.j=i+(++j)B.j=j+i++C.j=++i+jD.j=j+++i
答案:
C
分析:
自增++、自减运算符在变量的前面或后面,其运算结果是不同的。
若++或—在变量前,则先将变量的值加1(或减1)后,再将变量的值参与运算;反之则先将变量的值参加运算,再将变量的值加1(或减1)。
自增++、自减运算符优先级高于算术运算符。
例题7:
已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<’B’&&!
y)的值是()。
A.0B.语法错C.1D.“假”
分析:
根据C++语言中运算符优先级的高低,“!
”运算符最高,关系运算符高于逻辑运算符。
则上面的表达式转换为:
1&&1&&1,结果为1。
答案:
C。
2.填空题
例题8:
如果s是int型变量,且s=6,则下面s%2+(s+1)%2表达式的值为____。
答案:
1
分析:
%运算符是求余运算,得到的结果是相除后的余数。
表达式转换为6%2+(6+1)%2=0+7%2=1。
例题9:
如果定义inta=2,b=3;floatx=5.5,y=3.5;则表达式(float)(a+b)/2+(int)x%(int)y的值为_____。
答案:
4.5
分析:
不同类型的数据混合运算时,可以使用强制类型转换符,强制将一种数据类型转换为另一种数据类型后再进行运算。
对表达式,先求表达式的值,再转换值的类型,本题的运算结果为4.5。
例题10:
设所有变量均为整型,则表达式(e=2,f=5,e++,f++,e+f)的值为____。
答案:
9
分析:
逗号运算符是是将两个或多个表达式组合成一个表达式的运算符。
求解时从左至右依次计算每个表达式的值,整个表达式的值就是最右边的表达式的值。
本题的答案为9。
例题11:
已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=’a’+’8’-‘4’的值为____。
答案:
e
分析:
C++语言中,对字符数据进行算术运算,实际上就是对字符的ASCII码进行运算。
以字符形式输出时,再将ASCII码转换为相应的字符输出。
本题表达式为ch=97+8-4=101,101相应的ASCII为字符e。
2.3习题分析与解答
1.选择题
(1)下列数据类型不是C++语言基本数据类型的是()。
A.字符型B.整型C.实型D.数组
答案:
D
2)在C++语言中,080是()。
A.八进制数B.十进制数C.十六进制数D.非法数
答案:
B
3)下列字符列中,可作为C++语言程序自定义标识符是()。
A.switchB.fileC.breakD.do
答案:
B
(4)运算符+、<=、=、%中,优先级最低的运算符是()。
A.+B.<=C.=D.%
答案:
C
5)下列字符列中,可以作为“字符串常量”的是()。
A.ABCB.″xyz″C.′uvw′D.′a′
答案:
B
(6)设变量m,n,a,b,c,d均为0,执行(m=a==b)||(n=c==d)后,m,n的值是()。
A.0,0B.0,1C.1,0D.1,1
答案:
C
(7)字符串”vm\x43\\\np\102q”的长度是()。
A.8B.10C.17D.16
答案:
A
(8)在C++语言中,自定义的标识符()。
A.能使用关键字并且不区分大小写B.不能使用关键字并且不区分大小写
C.能使用关键字并且区分大小写D.不能使用关键字并且区分大小写
答案:
D
(9)设有代码“inta=5;”,则执行了语句“a+=a-=a*a;”后,变量a的值是()。
A.3B.0C.-40D.–12
答案:
C
(10)设a为5,执行下列代码后,b的值不为2的是()。
A.b=a/2B.b=6-(--a)
C.b=a%2D.b=a<3?
3:
2
答案:
C
11)下面的()均是C++语言的整型常量。
A.0xffff和611B.01b和0xa1C.986.012和0667D.2e4和0x
答案:
A
(12)数学公式写成C表达式,下面的()是正确的。
A.sqrt(abs(pow(x,y)+exp(y)))B.sqrt(abs(pow(y,x)+exp(y)))
C.sqrt(fabs(pow(x,y)+exp(y)))D.sqrt(fabs(pow(y,x)+exp(y)))
答案:
D
2.4补充习题
1.选择题
(1)C++语言中的标识符只能右字母、数字和下划线三种字符组成,且第一个字符()。
A.必须为字母B.必须为下划线
C.必须为字母或下划线D.可以是字母、数字和下划线中任一中字符
(2)下面正确的字符常量是()。
A.“C”B.‘\\’’C.‘W’D.‘’
(3)如果说明语句:
charc=‘\72’;则变量c()。
A.包含1个字符B.包含2个字符
C.包含3个字符D.说明不合法,c的值不确定
(4)表达式18/4*sqrt(4.0)/8值的数据类型为()。
A.intB.floatC.doubleD.不确定
(5)关于逻辑运算符的说法正确的是()。
A.它们都是双目运算符,优先级相同
B.语句“inta=0,c=1,b;b=a&&c++;”执行后,c的值为2
C.语句“inta=0,c=1,b;b=a||c++;”执行后,c的值为2
D.语句“inta=1,c=1,b;b=a&&c++;”执行后,c的值为2
(6)设intm=7,n=12;则表达式为3的是()。
A.n%=(m%=5)B.n%=(m-m%5)
C.n%=m-m%5D.(n%=m)-(m%=5)
7)数学公式yx+lny,正确的C++语言的表达式是()。
A.sqrt(fabs(pow(y,x)+log(y)))B.sqrt(fabs(pow(x,y)+log(y)))
C.sqrt(abs(pow(y,x)+log(y)))D.sqrt(abs(pow(x,y)+log(y)))
(8)有如下程序段:
inta=14,b=15,x;
charc=’A’;
x=(a&&b)&&(c<’B’);
执行该程序后,x的值为()。
A.tureB.flaseC.0D.1
(9)下面四个选项中,均是不合法的标识符的是()。
A.BB.forC.cinD.if
B_11a0a_btemp
cout_a10intb-a
(10)设变量a是整型,b是实型,c是双精度型,则表达式10+‘a’+c*b值的数据类型为()。
A.intB.floatC.doubleD.不确定
(11)以下叙述中不正确的是()。
A.在C++程序中,name和NAME是两个不同的变量
B.在C++程序中,逗号运算符的优先级最低
C.若变量m,n为int型,则m=n后,n中的值不变
D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能诸如实型数值。
12)sizeof(float)是()。
A.一个双精度型表达式B.一个整型表达式
C.一种函数调用D.一个不合法的表达式
(13)下面不正确的字符串常量是()。
A.‘rst’B.“14‘14”C.“0”D.“”
(14)对代数式5ae/bc,下面不正确的C++语言表达式是()。
A.a/b/c*e*5B.5*a*e/b/cC.5*a*e/b*cD.a*e/c/b*5
(15)下列运算符中优先级最高的是()。
A.?
:
B.&&C.+D.!
=
(16)设a是整型变量,则表达式(a=4*5,a*2),a+6的值是()。
A.20B.26C.40D.46
(17)设有:
inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c A.1B.2C.3D.4 (18)用C++的语言表达式表示|x3+log10x|的正确是()。 A.fabs(x*3+log(x))B.abs(pow(x,3)+log(x)) C.fabs(pow(x,3.0)+log(x))D.abs(pow(x,3.0)+log(x)) (19)设intk=7,x=12;则能使值为3的表达式是_____。 A.x%=(k%=5)B.x%=(k-k%5) C.x%=k-k%5D.(x%=k)-(k%=5) (20)设有语句: inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是()。 A.2.500000B.2.750000C.3.500000D.0.000000 21.以下叙述不正确的是() A.一个C++源程序可由一个或多个函数组成。 B.一个C++源程序必须包含一个main函数。 C.C++程序的基本组成单位是函数。 D.在C++程序中,注释说明只能位于一条语句的后面。 22.设a为5,执行下列代码后,b的值不为2的是()。 A.b=a/2B.b=6-(--a) C.b=a%2D.b=a<3? 3: 2 23.如果说明语句: charc=‘\72’;则变量c()。 A.包含1个字符B.包含2个字符 C.包含3个字符D.说明不合法,c的值不确定 24.假设a是int型变量,则表达式(a=3*5,a=a*2,a+4)的值为() A.15B.19C.30D.34 25.若有变量inta;floatb,c;在系统自动转换后,表达式12+c*b+a+’x’值的数据类型为() A.charB.longC.floatD.int 26.在C++语言中,要求运算数必须是整型的运算符的是() A.\B.++C.! D.% 27.在C++语言中,()的陈述是正确的。 A.能使用关键字并区分大小写B.能使用关键字并不区分大小写 C.不能使用关键字并区分大小写D.不能使用关键字并不区分大小写 28.在C++语言中,‘a’和“a”存储所占用字节数分别是() A.1,1B.1,2C.2,1D.2,2 29.下列不合法的变量名为()。 A.intB.int1C.name_1D.name0 30.在c++语言中,错误的int类型的常量是() A.0B.037C.0xafD.1E5 31.与k=n++完全等价的表达式是() Ak=n,n=n+1B,n=n+1,k=nC,k=++nD,k+=n+1 32.设inta=2,b=3,c=4;则表达式a>b&&b A.-1B.0C.1D.2 2.填空题 (1)“A”与‘A’的区别是: 前者表示的是__________,占用______个内存空间,后者表示的是_________,占用_______个内存空间。 (2)表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))值的数据类型为_________。 (3)已知c的ASCII码为十进制数99,设k为字符型变量,则表达式k=‘c’+‘9’-‘8’的值为________。 (4)设有说明语句inta=6;,则运算表达式a+=a-=a*a后,a的值为_______。 (5)C++表达式表达: y=ax2+bx+c_________________,5x3+9xy/5-xy______________。 (6)设a、b、c都是int型变量,则运算表达式a=(b=4)+(c=2)后,a值为_____,b值为______,c值为______。 (7)C++语言中的标识符只能由三种字符组成,它们是________,_______和_______。 (8)有语句: chark=‘\010’;则变量k中包含的字符个数是_____。 (9)在C++语言中,表示逻辑“真”值用_____________。 10.如果定义inta=2,b=3;floatx=5.5,y=3.5;则表达式 (float)(a+b)/2+(int)x%(int)y的值为_________________。 第3章程序设计初步 3.1知识要点 流程控制是控制程序中语句执行的顺序。 任何程序设计语言都具备流程控制的功能,而C++语言提供了比其它高级语言更丰富的流程控制语言。 本章节主要介绍了程序设计中最基本三种结构: 顺序、分支和循环,要求掌握以下的知识要点: 1.掌握顺序结构的编程方法。 2.掌握使用cin、cout实现数据的输入/输出。 3.学会应用字符输入/输出函数。 4.掌握scanf()函数和printf()函数的使用。 5.掌握条件语句的形式和使用。 6.掌握条件语句的嵌套。 7.掌握switch语句的形式和使用。 8.掌握for,while,do-while三种循环语句的应用。 9.掌握循环语句的嵌套。 10.掌握break、continue、goto语句。 3.2典型例题分析与解答 1.选择题 例题1: 如果有以下语句: inta,b;charm,n;cin>>a>>b>>m>>n;则下列输入数据的方式中不正确的是()。 A.10,20,X,YB.1020XY C.1020XYD.10、20、X、Y 答案: C 分析: C++语言没有专门的输入/输出语句,其输入/输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 复习题