c++语言程序设计课后答案.docx
- 文档编号:5132784
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:13
- 大小:18.99KB
c++语言程序设计课后答案.docx
《c++语言程序设计课后答案.docx》由会员分享,可在线阅读,更多相关《c++语言程序设计课后答案.docx(13页珍藏版)》请在冰豆网上搜索。
c++语言程序设计课后答案
2-20运行下面的程序,观察其输出,体会i++与++i的差别。
#include
intmain()
{
intmyAge=39;//initializetwointegers
intyourAge=39;
cout<<"Iam:
"< cout<<"Youare: "< myAge++;//postfixincrement ++yourAge;//prefixincrement cout<<"Oneyearpasses...\n"; cout<<"Iam: "< cout<<"Youare: "< cout<<"Anotheryearpasses\n"; cout<<"Iam: "< cout<<"Let'sprintitagain.\n"; cout<<"Iam: "< cout<<"Youare: "< return0; } 解: 程序运行输出: Iam39yearsold Youare39yearsold Oneyearpasses Iam40yearsold Youare40yearsold Anotheryearpasses Iam40yearsold Youare41yearsold Let'sprintitagain Iam41yearsold Youare41yearsold 3-4什么叫内联函数? 它有哪些特点? 解: 定义时使用关键字inline的函数叫做内联函数;编译器在编译时在调用处用函数体进行替换,节省了参数传递、控制转移等开销;内联函数体内不能有循环语句和switch语句;内联函数的定义必须出现在内联函数第一次被调用之前;对内联函数不能进行异常接口声明; 3-5函数原型中的参数名与函数定义中的参数名以及函数调用中的参数名必须一致吗? 解: 不必一致,所有的参数是根据位置和类型而不是名字来区分的。 3-6调用被重载函数时,通过什么来区分被调用的是哪个函数? 解: 重载的函数的函数名是相同的,但它们的参数的个数和数据类型不同,编译器根据实参和形参的类型及个数的最佳匹配,自动确定调用哪一个函数。 3-11什么叫作嵌套调用? 什么叫作递归调用? 解: 函数允许嵌套调用。 如果函数1调用了函数2,函数2再调用函数3,便形成了函数的嵌套调用。 函数可以直接或间接地调用自身,称为递归调用。 4-3构造函数和析构函数有什么作用? 解: 构造函数的作用就是在对象被创建时利用特定的值构造对象,将对象初始化为一个特定的状态,使此对象具有区别于彼对象的特征,完成的就是是一个从一般到具体的过程,构造函数在对象创建的时候由系统自动调用。 析构函数与构造函数的作用几乎正好相反,它是用来完成对象被删除前的一些清理工作,也就是专门作扫尾工作的。 一般情况下,析构函数是在对象的生存期即将结束的时刻由系统自动调用的,它的调用完成之后,对象也就消失了,相应的内存空间也被释放。 4-4数据成员可以为公有的吗? 成员函数可以为私有的吗? 解: 可以,二者都是合法的。 数据成员和成员函数都可以为公有或私有的。 但数据成员最好定义为私有的。 4-6什么叫做拷贝构造函数? 拷贝构造函数何时被调用? 解: 拷贝构造函数是一种特殊的构造函数,具有一般构造函数的所有特性,其形参是本类的对象的引用,其作用是使用一个已经存在的对象,去初始化一个新的同类的对象。 在以下三种情况下会被调用: 在当用类的一个对象去初始化该类的另一个对象时;如果函数的形参是类对象,调用函数进行形参和实参结合时;如果函数的返回值是类对象,函数调用完成返回时; 4-7拷贝构造函数与赋值运算符(=)有何不同? 解: 赋值运算符(=)作用于一个已存在的对象;而拷贝构造函数会创造一个新的对象。 4-11定义一个矩形类,有长、宽两个属性,有成员函数计算矩形的面积 解: #include classRectangle { public: Rectangle(floatlen,floatwidth) { Length=len; Width=width; } ~Rectangle(){}; floatGetArea(){returnLength*Width;} floatGetLength(){returnLength;} floatGetWidth(){returnWidth;} private: floatLength; floatWidth; }; voidmain() { floatlength,width; cout<<"请输入矩形的长度: "; cin>>length; cout<<"请输入矩形的宽度: "; cin>>width; Rectangler(length,width); cout<<"长为"< "< } 程序运行输出: 请输入矩形的长度: 5 请输入矩形的宽度: 4 长为5、宽为4的矩形的面积为: 20 5-1什么叫做作用域? 有哪几种类型的作用域? 解: 作用域讨论的是标识符的有效范围,作用域是一个标识符在程序正文中有效的区域。 C++的作用域分为函数原形作用域、块作用域(局部作用域)、类作用域和文件作用域. 5-2什么叫做可见性? 可见性的一般规则是什么? 解: 可见性是标识符是否可以引用的问题;可见性的一般规则是: 标识符要声明在前,引用在后,在同一作用域中,不能声明同名的标识符。 对于在不同的作用域声明的标识符,遵循的原则是: 若有两个或多个具有包含关系的作用域,外层声明的标识符如果在内层没有声明同名标识符时仍可见,如果内层声明了同名标识符则外层标识符不可见。 5-3下面的程序的运行结果是什么,实际运行一下,看看与你的设想有何不同。 #include voidmyFunction(); intx=5; inty=7; intmain() { cout<<"xfrommain: "< cout<<"yfrommain: "< myFunction(); cout<<"BackfrommyFunction! \n\n"; cout<<"xfrommain: "< cout<<"yfrommain: "< return0; } voidmyFunction() { inty=10; cout<<"xfrommyFunction: "< cout<<"yfrommyFunction: "< } 解: 程序运行输出: xfrommain: 5 yfrommain: 7 xfrommyFunction: 5 yfrommyFunction: 10 BackfrommyFunction! xfrommain: 5 yfrommain: 7 5-4假设有两个无关系的类Engine和Fuel,使用时,怎样允许Fuel成员访问Engine中的私有和保护的成员? 解: 源程序: classfuel; classengine { friendclassfuel; private: intpowerLevel; public: engine(){powerLevel=0;} voidengine_fn(fuel&f); }; classfuel { friendclassengine; private: intfuelLevel; public: fuel(){fuelLevel=0;} voidfuel_fn(engine&e); }; 6-2在数组A[20]中第一个元素和最后一个元素是哪一个? 解: 第一个元素是A[0],最后一个元素是A[19]。 6-7什么叫做指针? 指针中储存的地址和这个地址中的值有何区别? 解: 指针是一种数据类型,具有指针类型的变量称为指针变量。 指针变量存放的是另外一个对象的地址,这个地址中的值就是另一个对象的内容。 6-10定义一个有五个元素的int型数组,在程序中提示用户输入元素值,最后再在屏幕上显示出来。 解: #include intmain() { intmyArray[5]; inti; for(i=0;i<5;i++) { cout<<"ValueformyArray["< "; cin>>myArray[i]; } for(i=0;i<5;i++) cout< "< return0; } 程序运行输出: ValueformyArray[0]: 2 ValueformyArray[1]: 5 ValueformyArray[2]: 7 ValueformyArray[3]: 8 ValueformyArray[4]: 3 0: 2 1: 5 2: 7 3: 8 4: 3 6-17下列程序有什么问题,请仔细体会使用指针时应该如何避免出现这个问题。 解: 指针p没有初始化,也就是没有指向某个确定的内存单元,它指向内存中的一个随机地址,给这个随机地址赋值是非常危险的。 6-18下列程序有何问题,请改正;仔细体会使用指针时应避免出现的这个问题。 #include intFn1(); intmain() { inta=Fn1(); cout<<"thevalueofais:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 语言程序设计 课后 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)