C++课后习题及其答案.docx

上传人:b****7 文档编号:8763976 上传时间:2023-02-01 格式:DOCX 页数:36 大小:38.16KB
下载 相关 举报
C++课后习题及其答案.docx_第1页
第1页 / 共36页
C++课后习题及其答案.docx_第2页
第2页 / 共36页
C++课后习题及其答案.docx_第3页
第3页 / 共36页
C++课后习题及其答案.docx_第4页
第4页 / 共36页
C++课后习题及其答案.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

C++课后习题及其答案.docx

《C++课后习题及其答案.docx》由会员分享,可在线阅读,更多相关《C++课后习题及其答案.docx(36页珍藏版)》请在冰豆网上搜索。

C++课后习题及其答案.docx

C++课后习题及其答案

练习题1

1.1判断题

×1.C++语言和C语言都是面向对象的程序设计语言。

√2.面向对象方法具有封装性、继承性和多态性。

√3.C语言是C++语言的一个子集。

C++语言继承了C语言。

×4.C++语言程序与C语言程序一样都是函数串。

×5.C++语言支持封装性和继承性,不支持多态性。

√6.C++语言比C语言对数据类型要求更加严格了。

√7.C++语言对C语言进行了一次改进,使得编程更加方便了。

×8.C++源程序在编译时可能出现错误信息,而在连接时不会出现错误信息。

√9.编译C++源程序时,出现了警告错(Warning)也可以生成可执行文件。

√10.C++语言程序的实现也要经过编辑、编译连接和运行3个步骤。

1.2单选题

1.下列关于面向对象概念的描述中,错误的是(C)。

A.面向对象方法比面向过程方法更加先进

B.面向对象方法中使用了一些面向过程方法中没有的概念

C.面向对象方法替代了结构化程序设计方法

D.面向对象程序设计方法要使用面向对象的程序设计语言

2.下列各种高级语言中,不是面向对象的程序设计语言是(D)。

A.C++B.Java

C.VBD.C

3.下列关于类的描述中,错误的是(A)。

A.类就是C语言中的结构类型

B.类是创建对象的模板

C.类是抽象数据类型的实现

D.类是具有共同行为的若干对象的统一描述体

4.下列关于对象的描述中,错误的是(C)。

A.对象是类的一个实例

B.对象是属性和行为的封装体

C.对象就是C语言中的结构变量

D.对象是现实世界中客观存在的某种实体

5.下列关于C++程序中使用提取符和插入符的输入/输出语句的描述中,错误的是(C)。

A.提取符是对右移运算符(>>)重载得到的

B.插入符是对左移运算符(<<)重载得到的

C.提取符和插入符都是双目运算符,它们要求有两个操作数

D.提取符和插入符在输入/输出语句中不可以连用

1.3填空题

1.C++语言具有面向对象方法中要求的三大特性:

封装性、继承性和多态性。

2.C++程序中,有且仅有一个主函数。

3.C++程序是由类和函数组成的。

4.C++源程序的扩展名是cpp。

5.使用插入符进行标准输出文件输出时,使用的输出流对象名是cout。

1.6通过对1.5题中3个程序的修改,回答下列问题

1.从1.5题中第1题程序的修改中,总结出编程应该注意哪些问题。

答:

C++程序要包含iostraem.h,main()函数前应加类型说明符void。

2.C++程序中所出现的变量是否必须先说明后使用?

在函数体内说明变量时是否都要放在函数体的开头?

答:

C++程序中所出现的变量必须先说明后使用。

在函数体内说明变量时不一定要放在函数体的开头。

3.使用cout和插入符(<<)输出字符串常量时应注意什么?

答:

可输出一个字符串常量,也可输出多个字符串常量。

每输出一个字符串常量要使用一次插入符(<<)。

4.程序中定义过的变量,但没有赋值,也没有默认值,这时能否使用?

答:

不能使用。

因为它的值不确定。

5.一个程序编译通过并已生成执行文件,运行后并获得输出结果,这一结果是否一定正确?

答:

不一定正确。

可能还有算法错。

第2章变量和表达式及数组 

练习题2

2.1判断题

√1.C++语言的合法字符集与C语言的完全相同。

×2.标识符规定大小写字母没有区别。

×3.C++程序中,不得使用没有定义或说明的变量。

√4.变量的存储类指出了变量的作用域和寿命。

√5.变量的数据类型指出了变量在内存中存放的字节数。

×6.定义变量时,变量的存储类说明符不得省略。

×7.自动类变量与内部静态类变量的作用域和寿命都是相同的。

×8.自动类变量可以定义在函数体外,这时应加说明符auto。

×9.外部类变量与外部静态类变量的作用域是相同的。

×10.变量被定义后是否有默认值与存储类无关,与数据类型有关。

√11.C++程序中,通常使用const来定义符号常量,定义时必须指出类型。

×12.变量被定义或说明后,它一定具有有意义的值。

×13.字符串常量与字符常量的区别仅表现在定义形式上的不同,一个用双撇号,另一个用单撇号。

×14.所有变量的可见性和存在性都是一致的。

√15.变量在它的作用域内一定是可见的,又是存在的。

√16.C++语言中除了包含C语言的所有运算符外,还规定自身的若干个运算符。

√17.增1和减1运算符以及赋值运算符都具有副作用。

×18.增1和减1运算符不仅可以作用在变量上,也可以作用在表达式上。

×19.关系运算符可以用来比较两个字符的大小,也可以比较两个字符串的大小。

×20.移位运算符在移位操作中,无论左移还是右移,对移出的空位一律补0。

×21.变量的类型高低是指它被存放在内存的地址值大小。

×22.使用sizeof运算符可以求得某种类型和某个变量在内存中占的字节数,不能求得某个表达式的类型在内存中所占的字节数。

√23.在C++语言中,非保值转换应用强制类型转换。

√24.表达式中各操作数计算顺序取决于运算符的优先级和结合性。

√25.在C++程序中,变量值是可以改变的,变量的地址值是不能改变的。

√26.数组中所有元素的类型都是相同的。

×27.定义数组时必须对数组进行初始化。

√28.数组某维的大小可以用常量表达式,不可用变量名。

×29.定义一个数组没有对它进行初始化,则该数组的元素值都是无意义的。

√30.用来给数组进行初始化的初始值表内的数据项的个数必须小于等于数组元素个数。

×31.在定义一个数组时,对其部分元素进行了初始化,没有初始化的元素的值都是无意义的。

√32.数组被初始化时是判越界的。

×33.字符数组就是字符串。

√34.使用printf()函数输出显示字符串时使用格式符%s,输出显示字符时使用%c或%d。

×35.给数组元素赋值时只可用常量表达式。

2.2单选题

1.下列变量名中,非法的是(C)。

A.A25B.My_car

C.My-strD.abc

2.下列常量中,十六进制int型常量是(A)。

A.0x5fB.x2a

C.046D.7a

3.下列常量中,不是字符常量的是(B)。

A.'\n'B."y"

C.'x'D.'\7'

4.在函数体内定义了下述变量a,a的存储类为(D)。

inta;

A.寄存器类B.外部类

C.静态类D.自动类

5.下列关于变量存储类的描述中,错误的是(C)。

A.任何变量定义后都具有一个确定的存储类

B.变量的存储类确定了变量的作用域和寿命

C.定义变量时没有存储类说明符者一律为自动类

D.内部静态类变量和外部静态类变量的存储类说明符都是static

6.下列关于变量数据类型的描述中,错误的是(A)。

A.定义变量时int型数据类型可以省略

B.变量的数据类型可以决定该变量占内存的字节数

C.变量的数据类型是可以被强制的

D.变量的数据类型是有高低之分的

7.长双精度浮点型常量的后缀是(C)。

A.UB.F

C.LD.无

8.下列运算符中,不能用于浮点数操作的是(D)。

A.++B.+

C.*=D.&(双目)

9.下列运算符中,优先级最高的是(A)。

A.*(双目)B.||

C.>>D.%=

10.下列运算符中,优先级最低的是(B)。

A.==B.?

C.|D.&&

11.已知:

inta(3);下列表达式中,错误的是(C)。

A.a%2==0B.a--+2

C.(a2)++D.a>>=2

12.已知:

intb(5),下列表达式中,正确的是(D)。

A.b="a"B.++(b1)

C.b%2.5D.b=3,b+1,b+2

13.下列关于类型转换的描述中,错误的是(C)。

A.类型转换运算符是(<类型>)

B.类型转换运算符是单目运算符

C.类型转换运算符通常用于保值转换中

D.类型转换运算符作用于表达式左边

14.下列表达式中,其值为0的是(A)。

A.5/10B.!

0

C.2>4?

0:

1D.2&&2||0

15.下列表达式中,其值不为逻辑值的是(A)。

A.算术表达式B.关系表达式

C.逗号表达式D.逻辑表达式

16.下列关于数组概念的描述中,错误的是(B)。

A.数组中所有元素类型是相同的

B.数组定义后,它的元素个数是可以改变的

C.数组在定义时可以被初始化,也可以不被初始化

D.数组元素的个数与定义时的每维大小有关

17.下列关于数组维数的描述中,错误的是(C)。

A.定义数组时必须将每维的大小都明确指出

B.二维数组是指该数组的维数为2

C.数组的维数可以使用常量表达式

D.数组元素个数等于该数组的各维大小的乘积

18.下列关于数组下标的描述中,错误的是(B)。

A.C++语言中数组元素的下标是从0开始的

B.数组元素下标是一个整常型表达式

C.数组元素可以用下标来表示

D.数组元素的某维下标值应小于该维的大小值

19.下列关于初始值表的描述中,错误的是(C)。

A.数组可以使用初始值表进行初始化

B.初始值表是用一对花括号括起的若干个数据项组成的

C.初始值表中数据项的个数必须与该数组的元素个数相等

D.使用初始值表给数组初始化时,没有被初始化的元素都具有默认值

20.下列关于字符数组的描述中,错误的是(D)。

A.字符数组中的每一个元素都是字符

B.字符数组可以使用初始值表进行初始化

C.字符数组可以存放字符串

D.字符数组就是字符串

21.下列关于字符串的描述中,错误的是(C)。

A.一维字符数组可以存放一个字符串

B.二维字符数组可以存放多个字符串

C.可以使用一个字符串给二维字符数组赋值

D.可以用一个字符串给二维字符数组初始化

22.已知:

inta[5]={1,2,3,4};下列数组元素值为2的数组元素是(B)。

A.a[0]B.a[1]

C.a[2]D.a[3]

23.已知:

intab[][3]={{1,5,6},{3},{0,2}};数组元素ab[1][1]的值为(A)。

A.0B.1

C.2D.3

24.已知:

chars[]="abcd";输出显示字符'c'的表达式是(C)。

A.sB.s+2

C.s[2]D.s[3]

25.已知:

charss[][6]={"while","for","else","break"};输出显示"reak"字符串的表达式是(B)。

A.ss[3]B.ss[3]+1

C.ss+3D.ss[3][1]

2.3填空题

1.C++语言中,基本数据类型包含有整型、浮点型、字符型、空值型和布尔型。

2.变量的存储类可分为自动类、寄存器类、外邹类和静态存储类。

3.浮点型常量可分为单精度、双精度和长双精度浮点型常量。

4.结合性从右至左的运算符有单目运算符、双目运算符和赋值运算符。

5.条件表达式是由三目运算符组成的,该表达式的类型是由冒号左边和右边两个操作数中类型高的操作数类型决定的。

6.已知:

doubledd[][3]={{1.2,2.4,3.6},{4.8,5.2},{6.4}};这里dd是一个二维数组的数组名,该数组共有9个元素,每个元素的类型是double。

数组元素dd[0][0]的值是1.2,dd[1][1]的值是5.2,数组元素dd[2][2]的值是0。

7.已知:

charss[][6]={"while","break","for","else"};字符数组ss是二维数组,它的第1维大小应该是4。

使用cout和<<输出字符串"for"时,对应的表达式是ss+2。

使用cout和<<输出字符串"break"的子串"reak"时,对应的表达式是ss[1]+1。

使用cout和<<输出字符串else中的字符's'时,对应的表达式是ss[3][2]。

2.5编程题

1.已知:

inta=3,b=5;编程计算下列两个代数式的值,并比较它们是否相等。

(a+b)2

a2+2ab+b2

答:

编程如下:

#include

voidmain()

{

inta=3,b=5;

intd1=(a+b)*(a+b);

intd2=a*a+2*a*b+b*b;

cout<<"d1="<

}

从结果中可以看出d1和d2值是相等的。

2.已知:

intx=5;编程求下列代数式的值。

f(x)=3x3+2x2+5x+2

答:

编程如下:

#include

voidmain()

{

intx=5;

intf=3*x*x*x+2*x*x+5*x+2;

cout<

}

3.从键盘上输入两个double型数,编程输出其中最小者。

答:

编程如下:

#include

voidmain()

{

doublea,b;

cout<<"请输入两个double型数:

";

cin>>a>>b;

cout<<"输入的两个数中较小的是";

if(a<=b)

cout<

else

cout<

}

4.华氏温度转换成摄氏温度的计算公式如下:

C=(F32)*5/9

其中,C表示摄氏温度,F表示华氏温度。

从键盘上输入一摄氏温度,编程输出对应的华氏温度。

答:

编程如下:

#include

voidmain()

{

doublec,f;

cout<<"请输入一个摄氏温度值:

";

cin>>c;

f=9.0/5.0*c+32.0;

cout<<"摄氏温度为"<

}

5.从键盘上输入5个浮点数,输出它们的和以及平均值。

答:

编程如下:

#include

voidmain()

{

doublea,b,c,d,e;

cout<<"请输入5个double型数:

";

cin>>a>>b>>c>>d>>e;

doublef=a+b+c+d+e;

cout<<"输入的5个数的和是"<

}

6.将字符串"12345",逆向输出为"54321"。

答:

编程如下:

#include

voidmain()

{

chara[]="12345";

cout<

}

2.6简单回答下述问题

1.C++语言中注释符的格式如何?

注释信息的功能是什么?

答:

注释符格式有2种:

格式一:

/*<注释信息>*/

格式二:

//<注释信息>

注释信息是用来对程序进行提示和说明的。

2.使用const定义符号常量比使用#define定义符号常量有何优点?

答:

使用const定义符号常量时要指出数据类型,而用#define定义符号常量时不需提出类型,因此前者比后者对类型要求更严格,这样会更安全。

3.内部静态存储类变量有何特点?

答:

内部静态存储类变贯的特点是作用域较小,但寿命很长,这种变量作用域与寿命不一致,因此会出现不可见但又存在的情况。

4.在使用插入符(<<)输出若干个表达式值时,有的表达式中使用的运算符的优先级低于插入符优先级时应该如何处理?

答:

这时需将表达式用括号括起来,己改变其优先级。

5.由多种不同运算符组成的表达式,其类型如何确定?

例如,

inta,b,c;

a=b>c?

b:

c;

这是一个条件表达式还是赋值表达式?

答:

表达式类型由优先级低的运算符组成的表达式来确定。

这是一个赋值表达式,因为赋值运算符优先级低于三目运算符。

6.数组元素个数是由什么决定的?

答:

数组元素个数是由维数及其大小来决定的。

一维数组元素个数是该维的大小,二维数组的元素个数是两维大小之积等。

7.数组元素下标有何规定?

答:

C++语言中,数组元素下标从0开始。

8.初始值表中数据项的类型和个数有何规定?

答:

初始值表中数据项的类型应与该变是类型相同,个数应小于或等于被初始化的数组元素的个数。

9.字符数组和字符串有什么关系?

答:

字符数组中可存放字符串,而字符数组不都是存放字符串的。

如果字符数组中有字符串结束符,则说明该字符数存放的是字符串。

10.一个数组中的元素类型是否一定相同?

何时定义的数组元素具有默认值?

答:

数组中元素类型必须相同。

存储类为外部和静态的数组其元素具有默认值。

第3章 语句和预处理 

练习题3

3.1判断题

√1.表达式和表达式语句是不同的。

×2.空语句是一种没有用处的语句。

×3.复合语句就是分程序。

×4.条件语句中if子句和else子句都是必须有并且仅有一个。

√5.条件语句中elseif子句可以没有,也可以有多个。

√6.开关语句可实现多路分支。

×7.开关语句的<语句序列>中必须有一个break语句,否则该开关语句便无法退出。

×8.任何循环语句都是至少执行一次循环体。

×9.退出for循环语句必须是for后面括号内的中间一个表达式的值为0。

√10.do-while循环语句至少要执行一次循环体。

×11.循环语句的循环体中可以出现if语句,if语句的if体内不能出现循环语句。

×12.goto语句中所使用的语句标号是一种标识符,它的作用域是文件级的。

√13.break语句和continue语句都可以出现在循环体中,但是它们的作用是不同的。

×14.文件包含命令所能包含的文件类型是不受限制的。

3.2单选题

1.下列关于语句的描述中,错误的是(A)。

A.C++程序中的函数是由若干条语句组成的

B.每条语句都要实现某种操作

C.条件语句是用来实现分支操作的

D.循环语句是用来在一定条件下重复执行某段程序的

2.下列关于条件语句的描述中,错误的是(C)。

A.if语句中最多只能有一个else子句

B.if语句的if体内可以出现开关语句

C.if语句中elseif子句和else子句的顺序是没有限制的

D.if语句中else子句是与它最近的if子句配对的

3.下列关于开关语句的描述中,错误的是(B)。

A.开关语句中,case子句的个数是不受限制的

B.开关语句中,case子句的语句序列中一定要有break语句

C.开关语句中,default子句可以省略

D.开关语句中,右花括号具有退出开关语句的功能

4.下列关于循环语句的描述中,错误的是(A)。

A.while循环语句中<条件>给定的表达式不能为非0的常量,否则便是死循环

B.for循环语句的循环体内可以出现while循环语句、do-while循环语句和for循环语句

C.循环语句的循环体可以是空语句

D.循环语句的循环体内可以出现break语句,也可以出现continue语句

5.已知:

inti(3);下列do-while循环语句的循环次数是(D)。

do{

cout<

i--;

}while(i!

=0);

A.0B.3

C.1D.无限

6.下列for循环语句的循环次数是(B)。

for(inti(0),j(5);i=3;i++,j--);

A.3B.无限

C.5D.0

7.下列while循环语句的循环次数是(A)。

while(inti(0))i--;

A.0B.1

C.2D.无限

8.下列程序段执行后,j值是(B)。

for(inti(0),j(0);i<10;i++)

if(i)j++;

A.0B.9

C.10D.无限

9.已知:

typedefcharCH;下列描述中,正确的是(A)。

A.使用CH定义的变量是char型变量

B.使用CH定义的是一个字符常量

C.使用CH定义的变量其类型不确定

D.使用CH定义的是一个字符串

10.下列关于预处理命令的描述中,错误的是(D)。

A.预处理命令最左边的标识符是#

B.预处理命令是在编译前处理的

C.宏定义命令可以定义符号常量

D.文件包含命令只能包含.h文件

3.3填空题

1.表达式语句是一个表达式后边加上分号(;)组成的。

空语句是只有一个分号的语句。

2.复合语句是由两条条或两条条以上的语句加上花括号({})组成的。

3.分程序是一种带有说明语句的复合语句。

4.循环语句的共同特点是都应具有循环体和退出循环的条件。

5.下列程序是求100之内的能被7整除的自然数之和。

3.6简单回答下列问题

1.分程序是复合语句吗?

复合语句与分程序的区别是什么?

答:

分程序是复合语句。

复合语句与分程序的区别在于含有说明语句的复合语句称为分程序。

2.if语句中,else子句的功能是什么?

答:

该子句的功能是当if子句和所有elseif子句的条件都为0时,则执行else子句。

3.在开关语句中,是否每个case子句后面的<语句序列>中都应该有break语句?

答:

通常case子句后面的<语句序列>中都有break语句,根据需要也可以没有break语句。

4.循环语句的循环体中出现的continue语句的作用是什么?

答:

结束本次循环,转到循环头判断是否继续循环。

5.文件包含命令的功能吗?

该命令一定要放在程序首部吗?

答:

该预处理命令是将指定的包含文件内容放在该命令出现的地方。

通常放在程序开头,便于后边语句的使用。

第4章 指针和引用 练习题4

4.1判断题

×1.指针是变量,它具有的值是某个变量或对象的地址值,它还具有一个地址值,这两个地址值是相等的。

√2.指针的类型是它所指向的变量或对象的类型。

×3.定义指针时不可以赋初值。

√4.指针可以赋值,给指针赋值时一定要类型相同,级别一致。

×5.指针可以加上或减去一个int型数,也可以加上一个指针。

√6.两个指针在任何情况下相减都是有意义的。

√7.数组元素可以用下标表示,也可以用指针表示。

×8

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1