c第1~3章答案解析
Visual C++面向对象程序设计教程与实验(第二版)清华大学出版社第3章习题参考答案

1.为什么要引入构造函数和析构函数?对象的初始化是指对象数据成员的初始化,在使用对象前,一定要初始化。
由于数据成员一般为私有的(private),所以不能直接赋值。
对对象初始化有以下两种方法:类中提供一个普通成员函数来初始化,但是会造成使用上的不便(使用对象前必须显式调用该函数)和不安全(未调用初始化函数就使用对象)。
当定义对象时,编译程序自动调用构造函数。
析构函数的功能是当对象被撤消时,释放该对象占用的内存空间。
析构函数的作用与构造函数正好相反,一般情况下,析构函数执行构造函数的逆操作。
在对象消亡时,系统将自动调用析构函数,执行一些在对象撤消前必须执行的清理任务。
2. 类的公有、私有和保护成员之间的区别是什么?①私有成员private: 私有成员是在类中被隐藏的部分,它往往是用来描述该类对象属性的一些数据成员,私有成员只能由本类的成员函数或某些特殊说明的函数(如第4章讲到的友员函数)访问,而类的外部根本就无法访问,实现了访问权限的有效控制,使数据得到有效的保护,有利于数据的隐藏,使内部数据不能被任意的访问和修改,也不会对该类以外的其余部分造成影响,使模块之间的相互作用被降低到最小。
private成员若处于类声明中的第一部分,可省略关键字private。
②公有成员public:公有成员对外是完全开放的,公有成员一般是成员函数,它提供了外部程序与类的接口功能,用户通过公有成员访问该类对象中的数据。
③保护成员protected: 只能由该类的成员函数,友元,公有派生类成员函数访问的成员。
保护成员与私有成员在一般情况下含义相同,它们的区别体现在类的继承中对产生的新类的影响不同,具体内容将在第5章中介绍。
缺省访问控制(未指定private、protected、public访问权限)时,系统认为是私有private 成员。
3. 什么是拷贝构造函数,它何时被调用?拷贝构造函数的功能是用一个已有的对象来初始化一个被创建的同类对象,是一种特殊的构造函数,具有一般构造函数的所有特性,当创建一个新对象时系统自动调用它;其形参是本类对象的引用,它的特殊功能是将参数代表的对象逐域拷贝到新创建的对象中。
【水力学】题集1~3章答案解析

第一章绪论第一题、选择题1.理想液体是( B )(A)没有切应力又不变形的液体;(B)没有切应力但可变形的一种假想液体;(C)切应力与剪切变形率成直线关系的液体;(D)有切应力而不变形的液体。
2.理想液体与实际液体最主要的区别是(D )A.不可压缩;B.不能膨胀;B.没有表面张力;D.没有粘滞性。
3.牛顿内摩擦定律表明,决定流体内部切应力的因素是(C )A动力粘度和速度B动力粘度和压强C动力粘度和速度梯度D动力粘度和作用面积4.下列物理量中,单位有可能为m2/s的系数为(A )A. 运动粘滞系数B. 动力粘滞系数C. 体积弹性系数D. 体积压缩系数6.影响水的运动粘度的主要因素为( A )A.水的温度;B.水的容重;B.当地气压; D.水的流速。
7.在水力学中,单位质量力是指(C )A、单位面积液体受到的质量力B、单位面体积液体受到的质量力C、单位质量液体受到的质量力D、单位重量液体受到的质量力8.某流体的运动粘度v=3×10-6m2/s,密度ρ=800kg/m3,其动力粘度μ为( B )A.3.75×10-9Pa·sB.2.4×10-3Pa·sC.2.4×105Pa·sD.2.4×109Pa·s第二题、判断题1.重度与容重是同一概念。
(√)2.液体的密度ρ和重度γ不随温度变化。
(×)3.牛顿内摩擦定律适用于所有的液体。
(×)4.黏滞力随相对运动的产生而产生,消失而消失。
(√)5.水的粘性系数随温度升高而减小。
(√)7.一般情况下认为液体不可压缩。
(√)8.液体的内摩擦力与液体的速度成正比。
(×)9.水流在边壁处的流速为零,因此该处的流速梯度为零。
(×)10.静止液体有粘滞性,所以有水头损失。
(×)12.表面张力不在液体的内部存在,只存在于液体表面。
(√)13.摩擦力、大气压力、表面张力属于质量力。
江苏省安全员题库C2 -第一章

第一章一、判断题第1题、道德行为具有受法律法规影响的特征,在职业生涯中,从业人员随时都受到相关职业领域的职业道德等舆论的影响。
○ A、正确◎ B、错误正确答案:错误题目解析:教材P2。
道德行为具有受舆论影响的特征,在职业生涯中,从业人员随时都受到相关职业领域的职业道德等舆论的影响。
第2题、职业道德的主要内容是对从业人员权利的要求。
○ A、正确◎B、错误正确答案:错误题目解析:教材P1。
职业道德的主要内容是对从业人员义务的要求。
第3题、职业道德主要依靠文化、内心信念和习惯,并通过从业人员的自律来实现。
◎A正确 B错误正确答案:正确解析:职业道德主要依靠文化、内心信念和习惯,并通过从业人员的自律来实现。
第4题、加强公民道德建设对践行社会主义核心价值观发挥着深刻的作用A、正确◎B、错误正确答案:错误加强公民道德建设对践行社会主义核心价值观发挥着基础性作用。
第5题、职业道德要求把个人理想同各行各业、各个单位的发展目标结合起来,同个人的岗位职责结合起来,以增强员工的置业观念、职业事业心和职业责任感。
◎A、正确 B、错误正确答案:错误题目解析:教材P3.职业道德要求把个人理想同各行各业、各个单位的发展目标结合起来,同个人的岗位职责结合起来,以增强员工的职业观念、职业事业心和职业责任感。
第6题[判断题] 在社会主义市场经济条件下,只有具备职业道德精神的从业人员,才能在社会中站稳脚跟,成为社会的栋梁之材,在为社会创造效益的同时,也保障了自身的健康发展。
A、正确B、错误正确答案:正确题目解析: 教材P3。
在社会主义市场经济条件下,只有具备职业道德精神的从业人员,才能在社会中站稳脚跟,成为社会的栋梁之材,在为社会创造效益的同时,也保障了自身的健康发展。
第7题[判断题] 爱岗敬业既是一种崇高的人格力量,也是从业人员做人的准则、做事的原则。
A、正确B、错误正确答案:错误题目解析: 教材P4。
诚实守信既是一种崇高的人格力量,也是从业人员做人的准则、做事的原则。
数据结构-c语言描述(第二版)答案耿国华编著

第1章绪论2.(1)×(2)×(3)√3.(1)A(2)C(3)C5.计算下列程序中x=x+1的语句频度for(i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++)x=x+1;【解答】x=x+1的语句频度为:T(n)=1+(1+2)+(1+2+3)+……+(1+2+……+n)=n(n+1)(n+2)/66.编写算法,求一元多项式p n(x)=a0+a1x+a2x2+…….+a n x n的值p n(x0),并确定算法中每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用求幂函数。
注意:本题中的输入为a i(i=0,1,…n)、x和n,输出为P n(x0)。
算法的输入和输出采用下列方法(1)通过参数表中的参数显式传递(2)通过全局变量隐式传递。
讨论两种方法的优缺点,并在算法中以你认为较好的一种实现输入输出。
【解答】(1)通过参数表中的参数显式传递优点:当没有调用函数时,不占用内存,调用结束后形参被释放,实参维持,函数通用性强,移置性强。
缺点:形参须与实参对应,且返回值数量有限。
(2)通过全局变量隐式传递优点:减少实参与形参的个数,从而减少内存空间以及传递数据时的时间消耗缺点:函数通用性降低,移植性差算法如下:通过全局变量隐式传递参数PolyValue(){int i,n;float x,a[],p;printf(“\nn=”);scanf(“%f”,&n);printf(“\nx=”);scanf(“%f”,&x);for(i=0;i<n;i++)scanf(“%f”,&a[i]);/*执行次数:n次*/p=a[0];for(i=1;i<=n;i++){p=p+a[i]*x;/*执行次数:n次*/x=x*x;}printf(“%f”,p);}算法的时间复杂度:T(n)=O(n)通过参数表中的参数显式传递float PolyValue(float a[],float x,int n){float p,s;int i;p=x;s=a[0];for(i=1;i<=n;i++){s=s+a[i]*p;/*执行次数:n次*/p=p*x;}return(p);}算法的时间复杂度:T(n)=O(n)第2章线性表习题1.填空:(1)在顺序表中插入或删除一个元素,需要平均移动一半元素,具体移动的元素个数与插入或删除的位置有关。
C程序设计(第五版)-第3章最简单的C程序设计—顺序程序设计课后习题答案

C程序设计(第五版)-第3章最简单的C程序设计—顺序程序设计课后习题答案1.假如我国国民⽣产总值的年增长率为7%,计算10年后我国国民⽣产总值与现在相⽐增长多少百分⽐。
计算公式为p = ( 1 + r ) n次⽅,其中 r为年增长率,n为年数,p为与现在相⽐的倍数。
#include <stdio.h>#include <math.h>/*** @brief* 假如我国国民⽣产总值的年增长率为7%,计算10年后我国国民⽣产总值与现在相⽐增长多少百分⽐。
* 计算公式为p = ( 1 + r ) n次⽅,其中 r为年增长率,n为年数,p为与现在相⽐的倍数。
** @return int*/int main(){float r, p, n;r = 0.07;n = 10;p = pow(1 + r, n);printf("p=%f\n", p);system("pause");return 0;}2、存款利息的计算。
有1000元,想存5年,可按以下5种办法存:(1)⼀次存5年期(2)先存2年期,到期后将本息再存3年期(3)先存3年期,到期后将本息再存2年期(4)存1年期,到期后将本息再存1年期,连续存5次(5)存活期存款,活期利息每⼀季度结算⼀次2017年银⾏存款利息如下:1年期定期存款利息为1.5%;2年期定期存款利息为2.1%;3年期定期存款利息为2.75%;5年期定期存款利息为3%;活期存款利息为0.35%(活期存款每⼀-季度结算⼀-次利息)如果r为年利率,n为存款年数,则计算本息的公式如下:1年期本息和: P= 1000* (1+r);n年期本息和: P= 1000* (1+n* r);存n次1年期的本息和: P=1000* (1+r)^n;活期存款本息和: P= 1000 *(1+r/4) ^{4n};说明: 1000 *(1+r/4)是⼀个季度的本息和。
c语言《程序设计基础》课后习题参考答案与解析

c语言《程序设计基础》课后习题参考答案与解析《程序设计基础》习题参考答案与部分解析第1章 C 语言概述一、填空a) C源程序的基本单位是函数。
b) 一个C程序中至少应包括一个 main函数。
c) 在C语言中,输出操作是有库函数 printf( )函数完成。
二、单选题1、A2、C3、B解析:第1题答案:A 。
因为一个C程序总是从main函数开始执行的,而不论main函数在程序中的位置。
且到main函数结束。
第2题答案:C 。
因为 main函数没有限制必须位于程序的最前面。
C程序书写自由,一行内可写几个语句。
在对一个C 程序进行编译的过程中,无法检查注释当中的拼写错误。
不过C语言本身并没有输入输出语句,输入输出是由函数完成的。
第3题答案:B。
因为一个C语言程序是由若干个函数组成的。
但至少包含一个main 函数,且main函数的位置不限。
三、编程题1、编写一个输出“Welcome to C!”信息的小程序。
解:程序如下#include “stdio.h”main( ){1printf(“Welcome to C!”) ;}2、已知三角形的三边长分别为3,4,5,试用海轮公式编程求其面积。
海伦公式为:S?= ,其中s= (a+b+s)/2 ;解:程序如下#include “math.h”#include “stdio.h”main( ){int a , b , c ; /* a ,b,c 3个整型变量表示三角形的3条边。
*/float s ,s1 ; /* s1作为面积变量,s 作为中间变量是都应该是实形*/a=3 ; b= 4; c=5 ;s= (a+b+c)/2.0 ;s1= sqrt(s*(s-a)*(s-b)*(s-c)); /* sqrt函数完成开平方根功能。
*/printf(“area=%f\n”,s1);}2第2章程序设计基础知识一、单选题1、C2、A3、C4、A5、C6、C7、D8、C9、D 10、A 11、D 12、A 13、C 14、C 15、B A 16、B 17 D解析:1. 答案:C。
数据结构(C语言版)第三四章习题答案解析

第3章栈和队列习题1.选择题(1)若让元素1,2,3,4,5依次进栈,则出栈次序不可能出现在()种情况。
A.5,4,3,2,1 B.2,1,5,4,3 C.4,3,1,2,5 D.2,3,5,4,1(2)若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为()。
A.i B.n-i C.n-i+1 D.不确定(3)数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素个数的公式为()。
A.r-f B.(n+f-r)%n C.n+r-f D.(n+r-f)%n (4)链式栈结点为:(data,link),top指向栈顶.若想摘除栈顶结点,并将删除结点的值保存到x中,则应执行操作()。
A.x=top->data;top=top->link; B.top=top->link;x=top->link;C.x=top;top=top->link; D.x=top->link;(5)设有一个递归算法如下int fact(int n) { //n大于等于0if(n<=0) return 1;else return n*fact(n-1); }则计算fact(n)需要调用该函数的次数为()。
A. n+1 B. n-1 C. n D. n+2 (6)栈在()中有所应用。
A.递归调用 B.函数调用 C.表达式求值 D.前三个选项都有(7)为解决计算机主机与打印机间速度不匹配问题,通常设一个打印数据缓冲区。
主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。
该缓冲区的逻辑结构应该是()。
A.队列 B.栈 C.线性表 D.有序表(8)设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5和e6依次进入栈S,一个元素出栈后即进入Q,若6个元素出队的序列是e2、e4、e3、e6、e5和e1,则栈S的容量至少应该是()。
计算机数学基础(第三版)习题参考答案 第1-3章

计算机数学基础(第三版)习题参考答案第1-3章习题1.11.(1)D (2)A (3)A (4)D (5)D (6)C (7)C (8)D (9)C 2.(1)]14,6[],3,2[-=-=f fR D ; (2)];1,0[],1,1[=-=f fR D(3));,0[),,(+∞=+∞-∞=f fR D (4));,0[),,(+∞=+∞-∞=f fR D(5)]1,1[),,(-=+∞-∞=f fR D3.(1)(2)不同;(3)(4)相同。
4.(1)];2,2[-=fD (2)),1()1,(+∞-∞= fD(3)RDf= (4)},,01|),{(R y R x y x y x Df∈∈>++= 5.(1)2010+-=h T (2)斜率10-=k (3)C ︒-5 6.(1)有界,]3,1[=fR ; (2)有界,]56,25.0[-=fR;(3)无界,),0(+∞=fR; (4)有界,)1,0(=fR。
7.(1)非奇非偶函数;(2)偶函数;(3)偶函数;(4)偶函数。
8.(1)周期函数,周期为π2;(2)不是周期函数;(3)周期函数,周期为π; 9.(1)1;(2)2。
10.(1));,(,15))(()(23+∞-∞=-+=++g f R x xx g f);,(,1))(()(23+∞-∞=+-=--g f R x x x g f );,(,263))(()(2345+∞-∞=+-+=fg R x x x x x fg),33()33,33()33,(,132))(/()/(223+∞---∞=-+= g f R x x x x g f(2)]1,1[,11))(()(-=-++=++g f R x x x g f]1,1[,11))(()(-=--+=--g f R x x x g f]1,1[,1))(()(2-=-=fg R x x fg)1,1[,11))(/()/(-=-+=g f R xxx g f11.(1)),(,62118))(()(2+∞-∞=++=g f R x xx g f),(,236))(()(2+∞-∞=+-=f g R x x x f g),(,88))(()(234+∞-∞=+--=f f R x x x x x f f),(,89))(()(+∞-∞=+=g g R x x g g(2)),0()0,(,21))(()(3+∞-∞=+= g f R xxx g f),0()0,(,21))(()(3+∞-∞=+=f g R x xx f g),0()0,(,))(()(+∞-∞== f f R x x f f),(,410126))(()(3579+∞-∞=++++=g g R x x x x x x g g12.(1)9,)(5-==x u uu F (2)xu u u F ==,sin )((3)1,ln )(2+==x u u u F (4)3,1)(+==x u u u F13.(1)xx x f2351)(1+-=-; (2)2)(11-=--x e x f; (3)xx x f -=-1log )(21;(4)⎩⎨⎧<≤--≤≤--=-.01,01,1)(1时当时当x x ;x x x f14.(1)由ue y =,x u arctan =复合而成; (2)由x v v u u y ln ,ln ,ln ===复合而成; (3)由x v v u u y sin ,,ln 3===复合而成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++习题参考答案第1xx面向对象程序设计概论一、名词解释抽象封装消息【问题解答】面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。
面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。
消息是面向对象程序设计用来描述对象之间通信的机制。
一个消息就是一个对象要求另一个对象实施某种操作的一个请求。
二、填空题(1)目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种重要的程序设计方法。
(2)结构化程序设计方法中的模块由顺序、选择和循环3种基本结构组成。
(3)在结构化程序设计方法中,程序可表示为程序=数据结构+算法;而面向对象的程序设计方法,程序可表示为程序=对象+消息。
(4)结构化程序设计方法中的基本模块是过程;而面向对象程序设计方法中的基本模块是类。
(5)面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。
三、选择题(至少选一个,可以多选)(1)面向对象程序设计着重于(B)的设计。
A.对象B.类C.算法D.数据(2)面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制叫做(C)。
A.抽象B.继承C.封装D.多态(3)在面向对象程序设计中,类通过(D)与外界发生关系。
A.对象B.类C.消息D.接口(4)面向对象程序设计中,对象与对象之间的通信机制是(C)。
A.对象B.类C.消息D.接口(5)关于C++与C语言的关系的描述中,(D)是错误的。
A. C语言是C++的一个子集B. C语言与C++是兼容的C. C++对C语言进行了一些改进D. C++和C语言都是面向对象的【结果分析】C语言是面向过程的。
C++语言是一种经过改进的更为优化的C语言,是一种混合型语言,既面向过程也面向对象。
(6)面向对象的程序设计将数据结构与(A)放在一起,作为一个相互依存、不可分割的整体来处理。
A.算法B.信息C.数据隐藏D.数据抽象(7)下面(A)不是面向对象系统所包含的要素。
A.重载B.对象C.类D.继承【结果分析】面向对象=对象+类+继承+消息+多态(8)下面说法正确的是(BC)。
A.将数据结构和算法置于同一个函数内,即为数据封装B.一个类通过继承可以获得另一个类的特性C.面向对象要求程序员集中于事物的本质特征,用抽象的观点看待程序D.同一消息为不同的对象接受时,产生的行为是一样的,这称为一致性【结果分析】面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。
将数据结构和算法置于同一个类内,即为数据封装。
同一消息为不同的对象接受时,产生的行为可能是不一样的,这称为多态性。
(9)下面说法正确的是(AD)。
A.对象是计算机内存中的一块区域,它可以存放代码和数据B.对象实际是功能相对独立的一段程序C.各个对象间的数据可以共享是对象的一大优点D.在面向对象的程序中,对象之间只能通过消息相互通信【结果分析】对象是计算机内存中的一块区域。
在对象中,不但存有数据,而且存有代码,使得每个对象在功能上相互之间保持相对独立。
对象之间存在各种联系,但它们之间只能通过消息进行通信。
四、判断题(1)在高级程序设计语言中,一般用类来实现对象,类是具有相同属性和行为的一组对象的集合,它是创建对象的模板。
(√ )(2)C++语言只支持面向对象技术的抽象性、封装性、继承性等特性,而不支持多态性。
(× )【结果分析】C++语言不仅支持面向对象技术的抽象性、封装性、继承性等特性,而且支持多态性。
(3)面向对象程序设计中的消息应该包含“如何做”的信息。
(× )【结果分析】消息是面向对象程序设计用来描述对象之间通信的机制。
向对象“发送消息”只需告诉对象做什么,对象根据这个消息决定如何做。
(4)一个消息只能产生特定的响应效果。
(× )【结果分析】当一个对象发出消息时,由于接收对象的类型可能不同,所以,它们可能做出不同的反应。
这样,一个消息可以产生不同的响应效果,这种现象叫做多态。
(5)类的设计和类的继承机制实现了软件模块的可重用性。
(√ )(6)C++语言和Java语言均不是一个纯正的面向对象的程序设计的语言。
(× )【结果分析】Java语言是一个纯正的面向对象的程序设计语言。
(7)学习C++语言是学习面向对象的程序设计方法的唯一途径。
(× )【结果分析】程序设计方法是独立于具体程序设计语言的一种技术,学习C++语言是学习面向对象程序设计方法的重要途径之一。
(8)在C++语言中,类是支持数据封装的工具。
(√ )五、简答题(1)什么是结构化程序设计方法它有哪些优点和缺点【问题解答】结构化程序设计方法着眼于系统要实现的功能,从系统的输入输出出发,分析系统要做哪些事情,进而考虑如何做这些事情,自顶向下地对系统的功能进行分解,来建立系统的功能结构和相应的程序模块结构,有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。
随着程序规模与复杂性的增长,这种面向过程的结构化程序设计方法存在明显的不足之处。
首先是数据安全性问题。
由于数据被每个模块所共用,因此是不安全的,一旦出错,很难查明原因。
其次是可维护性及可重用性差。
它把数据结构和算法分离为相互独立的实体,一旦数据结构需要改变时,常常要涉及整个程序,修改工作量极大并容易产生新的错误。
每一种相对于老问题的新方法都要带来额外的开销。
另外,图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。
(2)什么是面向对象程序设计方法它有哪些优点【问题解答】面向对象的程序设计方法中,将程序设计为一组相互协作的对象而不是一组相互协作的函数。
在程序中,属性用数据表示,用来描述对象静态特征;行为用程序代码实现,用来描述对象动态特征。
可见,在面向对象的程序设计方法中,对象是数据结构和算法的封装体。
对象之间存在各种联系,它们之间通过消息进行通信。
程序可表示为:程序=对象+消息在面向对象程序设计中应着重于类的设计。
类正是面向对象语言的基本程序模块,通过类的设计来完成实体的建模任务。
类通过一个简单的外部接口与外界发生关系。
一个类中的操作不会处理到另一个类中的数据,这样程序模块的独立性、数据的安全性就有了良好的保障。
程序的执行取决于事件发生的顺序,由顺序产生的消息来驱动程序的执行。
不必预先确定消息产生的顺序,更符合客观世界的实际。
并且面向对象程序设计方法提供了软件重用、解决大问题和复杂问题的有效途径,具有抽象性、封装性、继承性和多态性等特点。
(3)结构化程序设计方法与面向对象程序设计方法在对待数据结构和算法关系上有什么不同【问题解答】结构化程序设计方法中,把数据结构和算法分离为相互独立的实体;而在面向对象程序设计中,数据结构和算法封装在一起,结合成一个独立的单位,即对象,并尽可能隐蔽对象的内部细节。
对象的私有属性只能由这个对象的行为来读取和修改,与外部的联系通过公有行为充当外部接口。
第2章从C到C++一、名词解释引用xx函数重载函数【问题解答】所谓引用就是给对象取一个别名,使用该别名可以存取该对象。
换句话说是使新对象和原对象共用一个地址。
内联函数是使用inline关键字声明的函数。
重载函数指在同一个作用域内名字相同而参数不同的函数。
重载函数通常用来对具有相似行为而数据类型或数据个数不同的操作提供—个通用的名称。
二、填空题(1)一般情况下,用C++语言编写的程序是由函数加上类组成的。
(2)C++有两种注释符号,一种是intp1,*p2,p3; B.int*p2,p1,*p3;C. int p1,*p2=&p1,*p3;D. int*p2,p1,*p3=&p1;【结果分析】指针定义的具体格式如下所示:<类型> *<指针名1>,*<指针名2>,…;(2)若有定义“double xx=,*pp=&xx;”,则*pp等价于(D)。
A. &xxB. *xxC.D. xx【结果分析】pp指向xx所在的内存单元,这样*pp和xx等价。
(3)下面对引用的描述中(C)是错误的。
A.引用是某个变量或对象的别名B.建立引用时,要对它初始化C.对引用初始化可以使用任意类型的变量D.引用与其代表的对象具有相同的地址【结果分析】所谓引用就是给对象取一个别名,使用该别名可以存取该对象,所以对引用初始化必须使用同类型的变量。
(4)函数没有返回值的时候,应该选择(A)的函数类型。
A. voidB. intC.不确定D. float(5)在函数的定义格式中,下面各组成部分中,(D)是可以省略的。
A.函数名B.函数体C.返回值类型D.函数参数【结果分析】函数的定义可以缺省形式参数,此时称为无参函数。
(6)对重载的函数来说,下面叙述不正确的是(D)。
A.参数的类型不同B.参数的顺序不同C.参数的个数不同D.参数的个数、类型、顺序都相同,但函数的返回值类型不同【结果分析】对重载的函数来说,编译系统将根据函数参数的类型和个数来判断使用哪一个函数,所以重载函数参数的个数、类型、顺序不能都相同。
(7)下列有关设置函数参数默认值的描述中,(D)是正确的。
A.对设置函数参数默认值的顺序没有任何规定B.函数具有一个参数时不能设置默认值C.默认参数要设置在函数的原型中,而不能设置在函数的定义语句中D.设置默认参数可使用表达式,但表达式中不可用局部变量【结果分析】在C++中,在函数原型中可以为一个或多个参数指定默认值。
对函数参数设置默认值要注意以下几点。
◆若没有声明函数原型,参数的默认值可在函数定义的头部进行设置,否则必须在函数原型中进行设置。
◆在一个指定了默认值的参数右边不能出现没有指定默认值的参数。
◆设置默认参数可使用表达式,但表达式中不可用局部变量。
(8)下面说法正确的是(C)。
A.所有的函数都可以说明为xx函数B.具有循环语句、switch语句的函数不能说明为内联函数C.使用内联函数,可以加快程序执行的速度,但会增加程序代码的大小D.使用内联函数,可以减小程序代码大小,但使程序执行的速度减慢【结果分析】内联函数主要是解决程序的运行效率问题。
在程序编译时,编译系统将程序中出现内联函数调用的地方用函数体进行替换,进而减少了程序运行的时间,但会增加程序代码的大小。
它是以空间换取时间,因此内联函数适用于功能不太复杂,但要求被频繁调用的函数。
(9)一个函数功能不太复杂,但要求被频繁调用,应选用(A)。
A.内联函数B.重载函数C.递归函数D.嵌套函数(10)C++对C语言做了很多改进,下列描述中使得C语言发生了质变,即从面向过程变成面向对象的是(D)。
A.增加了一些新的运算符B.允许函数重载,并允许设置默认参数C.规定函数说明必须用原型D.引进了类和对象的概念【结果分析】面向对象=对象+类+继承+消息+多态四、判断题(1)C++程序中,不得使用没有定义或说明的变量。