C++实用教程3版课后习题答案

2019-04-02 18:14

第一章_C++概述

1. C++语言的标准有哪些?它有哪些编程方法?结构化程序设计的结构有哪些?

答案:标准:C++国际标准ISO/IEC 14882:1998,常被称为C++98、标准C++

或ANSI/ISO C++;C++标准第二版(ISO/IEC 14882:2003)。

3种编程方法:以C语言为子集的结构化程序设计模式、以类为核心的面

向对象程序设计模式以及以模版为机制的通用编程模式。

结构化程序设计的结构:顺序结构、选择结构和循环结构。

2. 面向对象的程序设计有3个主要特征,他们分别是什么?试举例说明。 答案:3个主要特征:封装、继承和多态。

封装:封装是将数据和代码捆绑到一起,避免了外界的干扰和不确定性。

例如C++中的类,它定义了该集合中每个对象所共有的属性和方法。

继承:继承是让某个类型的对象获得另一个类型的对象的特征。例如:

C++中子类对父类的继承,子类具有父类的特性,同时还可以拥有自己的新特性。

多态:多态是指不同类型的对象接收相同的消息时产生不同的行为。多态

机制使具有不同内部结构的对象可以共享相同的外部接口,通过这种方式减小代码的复杂度。例如函数的重载。

3. C++是以编译方式实现的高级语言,它的编译过程可分为3个子过程,它们分别是什么?

答案:创建、编译和连接。

4. 参照本章示例,编写1个C++程序:输入圆的半径,输出其周长。 答案:

#include using namespace std; int main() {

double r, area;

cout<<\输入圆的半径: \ cin>>r;

area=2*3.14159*r;

cout<<\圆的周长为:\ return 0; }

第二章 数据类型和基本输入/输出

1. 下列常量表示在C++中是否合法?若不合法,指出原因;若合法,指出常量的数据类型。

答案:32767:合法,int

35u:合法,无符号整形

1.25e3.4:不合法,e后面的数字必须是整数

1

3L:合法,长整形

0.0086e-32:合法,实数

?\\87?:不合法,八进制数中不应该出现8 “Computer System”:合法,字符串 “a”:合法,字符串 ?a?:合法,字符

?\\96\\45?:不合法,?96? ?\\45?分别为字符类型 .5:合法,double

2. 字符常量与字符串常量有什么区别?指出下列哪些表示字符?哪些表示字符串?哪些既不表示字符也不表示字符串?

?0x66? China “中国” “8.42” ?\\0x33? 56.34 “\\n\\t0x34” ?\\r? ?\\\\? ?8.34? “\\0x33” ?\\0?

答案:字符: ?\\\\?, ?\\0?, ?\\r?

字符串:“中国”, “8.42”, “\\n\\t0x34”, “\\0x33”

非字符亦非字符串:?0x66?, China,?\\0x33?,56.34, ?8.34?

3. 定义两个变量a和b,初值分别为8和10,若要a和b的值互换,即a为10,b为8,如何实现(可用另外一个变量t作为过渡)?如不用中间变量又如何实现?

答案:用变量temp作为过渡 #include using namespace std; int main() {

int a=8,b=10; int temp; temp=a; a=b; b=temp;

cout<<\ return 0; }

不用中间变量方法一: #include using namespace std; int main() {

int a=8,b=10; a=a^b; b=b^a; a=a^b;

cout<<\ return 0; }

2

不用中间变量方法二: #include using namespace std; int main() {

int a=8,b=10;

cout<<\ a=a+b; b=a-b; a=a-b;

cout<<\ return 0; }

4. 用enum定义4个枚举常量Flase、FALSE、TRUE、True,使其值分别等于bool类型中的false、false、true、true。想一想这样做的好处是什么?若使用const来定义,则如何进行?并比较这两种定义的优缺点。 答案:enum {False=false,FALSE=false,TRUE=true,True=true};

好处:因为VC++中对大小写是敏感的,为了防止用户输入中大小写出错

的情况,所以分别又定义了表示true和false的两种形式。

const bool False=false; const bool FALSE=false; const bool TRUE=true; const bool True=true;

优缺点:用enum一次可以定义多个整型标识符变量,而const定义的标识符常

量由其数据类型决定;

另外,用const定义看不出其关联性。 5. 用const常量代替圆周率3.1415926,分别输入半径40和928.335,求圆面积。要求先输出圆周率和半径,再输出其面积。 答案:

#include using namespace std;

const double PI=3.1415926; int main() {

double radius1=40,radius2=928.335; double area1,area2;

area1=PI*radius1*radius1; area2=PI*radius2*radius2;

cout<<\圆周率: \半径: \面积: \ cout<<\圆周率: \半径: \面积: \ return 0; }

3

6. 设学生人数是一个常数50,编程输出下列结果(双引号也要输出): “How many students in your class?” “50” 答案:

#include using namespace std; const int STDNO=50; int main() {

cout<<'\\\ cout<

cout<<'\\\ return 0; }

7. 设有语句: char c1, c2, c3; cin>>c1>>c2>>c3;

若在执行过程中,输入: ?a? ?b? ?c?

则cin执行后,c1、c2、c3的值分别是什么?若输入: abcdef

则cin执行后,c1、c2、c3的值又分别是什么?

答案:输入?a? ?b? ?c?后,c1的值为 ? , c2的值为a , c3的值为 ? 输入abcdef后,c1的值为 a , c2的值为b , c3的值为 c 8. 设有语句: int a, b, c;

cin>>hex>>a>>oct>>b>>dec>>c;

cout<指出cin执行后,a、b、c的值分别是什么?输出的结果是什么? 答案:输出结果是:12 12 12

a、b、c的值分别是18,10和12

第三章 运算符和表达式

1. 将下列代数式写成C++的表达式: (1)

(sin(x))a?b2.5=sqrt(pow(sin(x),2.5))

(2)2mex2h=((a+b)*h)/(2*m)

(3)2?=exp(x*x)/sqrt(2*3.1415926)

4

2. 求出下列算数表达式的值: (1) 5+7/3*4=13

(2) 23.5+9/5+0.5=25.0 (3) 8+2*9/2=17

(4) ?a? +23=97+23=120 (5) 设x=2.5,y=4.7,a=7

x+a%3*(int)(x+y)%2/4 =2.5+1*int(7.2)%2/4=2.5+7%2/4=2.5+1/4=2.5 (6) 设x=3.5,y=2.5,a=2,b=3

(float)(a+b)/2-(int)x%(int)y=2.5-1=1.5 (7) 设x=8

?a?+x%3+5/2-?\\24?=97+2+2-20=81

3. 在下列表达式中,哪些是合法的赋值表达式?哪些不是?为什么? (a,b,c,x,y都是已定义的int 型变量) (1) a=b=4.5+7.8 是

(2) c=3.5+4.5=x=y=7.9 不是,因为4.5是常量不能作为左值 (3) x=(y=4.5)*45 是

(4) a=x++=++y 不是,x++不能作为左值

4. 写出下面表达式运算后a的值,设原来的a都是10. (1) a+=a <=> a=a+a=20

(2) a%=(7%2) <=> a=a%(7%2)=10%1=0 (3) a*=3+4 <=>a=a*(3+4)=70

(4) a/=a+a <=>a=a/(a+a)=10/20=0 (5) a-=a <=>a=a-a=0

(6) a+=a-=a*=a <=>a+=a-=100 =>a+=0 =>a=0

5. 设m,n的值分别为10,8,指出下列表达式运算后a,b,c,和d的值。 (1) a=m++ + n++=10+8=18 (2)b=m++ + ++n=10+9=19 (3)c=++m + ++n=11+9=20 (4)d=m-- + n++=10+8=18

6. 设a,b,c的值分别为5,8,9;指出下列表达式运算后x ,y和z 的值 (1) y=(a+b,c+a)=(13,14)=14

(2) x=y=a,z=a+b x=5 y=5 z=13

(3) y=(x=a*b , x+x , x*x)=(x=40,80,1600)=1600 x=40 (4) x=(y=a ,z=a+b)=(y=5,z=13)=13 y=5 z=13 7. 设有变量:

float x, y; int a ,b;

指出运算下列表达式后x , y, a和b的值。 (1)x=a=3.523

x=3 y为null a=3 b为null

(2)a= x =3.523

x=3.523 y为null a=3 b为null

(3)x=a=y=3.523

x=3.0 y=3.532 a=3 b为null

5


C++实用教程3版课后习题答案.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:食品机械设备复习题目及答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: