• 157.86 KB
  • 2022-04-22 11:16:34 发布

C++面向对象程序设计 (胡云 著) 电子工业出版社 课后答案

  • 15页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'课后答案网您最真诚的朋友www.hackshp.cn网团队竭诚为学生服务,免费提供各门课后答案,不用积分,甚至不用注册,旨在为广大学生提供自主学习的平台!课后答案网:www.hackshp.cn视频教程网:www.efanjy.comPPT课件网:www.ppthouse.com课后答案网www.hackshp.cn 《C++面向对象程序设计》习题答案第1章答案1.1单项选择题01-05CCCBD06-10ADDAB1.2判断题01-05×××√×1.3分析以下程序执行结果请输入一个数:5输入的数是:51.4简答题1、答:对象是客观世界中的一个实体,包括名字、属性和操作三个方面。类可以说是对象的模型,用一个模型便能建立许多类的对象,它有以下三个特点:(1)类是抽象的。(2)类的属性其实是一个范围,是不确定的。(3)类和对象都有操作,且二者的操作是相同的。2、答:类与对象的关系就是抽象与具体的关系。类是一个框架,是对具有同类型属性和操作的对象组的抽象;对象则是类的实例化,给类这个框架中的属性填上一组确定的值就可以得到一个对象。3、答:对象传送消息时,只是抽象的叫法,并不是真的发送一个完整的消息,对一个对象中的课后答案网方法的调用也是消息的传送。这里的消息发送并不强调发送形式,消息发送只是一种通知,告诉其他对象要使用其中的方法。4、封装性。对象中的属性和操作都被隐藏起来,只把接口暴露给外界。继承性。对象间的一种层次关系,如某个对象继承了另一个对象就具有了那个对象所有的属性www.hackshp.cn和方法。多态性。同一个操作作用在不同对象上的时候表现出的不同行为。5、答:略。6、答:C++源程序文件和头文件的扩展名是.cpp和.h.。C++源程序由头文件、函数和注释组成。7、答:面向对象方法具有以下优点:(1)与人类的思维习惯类似。面向对象技术对问题空间进行自然分割,以更接近人类思维的方式建立问题域模型,以便对客观实体进行结构模拟和行为模拟,从而使设计出的软件尽可能直接地描述现实世界。(2)具有良好的稳定性。运用面向对象技术,软件开发时间短,效率高,所开发的程序更稳定。由于面向对象编程的可重用性,可以在应用程序中大量采用成熟的类库,从而缩短了开发的时间。(3)可重用性好。应用程序更易于维护、更新和升级。继承和封装使得应用程序的修改所带来的影响更加局部化。1.2分析以下程序执行结果1、5 2、分析:输入2后,进入语句case2:out=2,但由于该语句后没有“break”,所以继续执行后面的语句case3:out=3;break;,并跳出switch语句,此时out=3,故结果为3。答案:输入mark:23第2章答案2.1单项选择题01-05:CABDC06-10:DDCDB11-15:CBCDC16-20:AACBA21-25:BACAC2.2填空(1)响铃(2)双引号(3)++,&&(4)10(5)x=x*(y+8)2.3将下列数学表达式转化为C++的表达式(1)(2*a+4*b)*(c+3*d)(2)X>0&&x<10(3)J%3==0(4)x%3==1&&x%5==1(5)X>20&&x<30||x!=402.4求下面表达式的值课后答案网(1)1(2)69.0(3)1,1,0(4)7,5,0,-1,0,1www.hackshp.cn(5)62.5读程序,写结果1、a=1b=10c=10.0d=1.2boygirla-b=-92、+a=-3-a=3d=10b=10k=7c=7 3、b/a=1d/a=2.666667c%b=-3第3章答案3.1填空题1、空语句、说明语句、表达式语句、函数调用语句、程序控制语句和复合语句。2、顺序结构、选择结构和循环结构。3、整型或字符型的,整型或字符型的,常量表达式,任何位置。4、switch,do...while。5、开关、循环,终止当前语句,switch或循环语句,转去执行其后续语句。循环体内,结束本次循环。3.2用if-else语句完成下列要求1、if(grade>=60)cout<<”Passed!n”;elsecout<<“Failed!n”;2、if(a>=b)cout<<”a>=b”;elsecout<<”a90)cout<<”heavyn”;elseif(weight<=45)cout<<”lightn”;elsecout<<”normal”;3.3写出下列程序的输出结果:1、b=5b=5b=1b=7a=1c=0b=3课后答案网c=12、a=0b=5c=03、************www.hackshp.cn***4、1235、pardon3.4#includevoidmain(){intx,y;cout<<”inputx(int):”;cin>>x;cout<#includevoidmain(){doublea,b,c,m,s;cout<<"inputsidelengthoftriangle(a,b,c):";cin>>a>>b>>c;if((a+b)>c&&(a+c)>b&&(b+c)>a){m=(a+b+c)/2;s=m*(m-a)*(m-b)*(m-c);s=sqrt(s);cout<<"nAreaofthetriangleis:"<voidmain()课后答案网{intnum;floatc1,c2,s1,s2,ave;c1=c2=s1=s2=0;www.hackshp.cncout<<”输入一批整数,以0结束:n”;cin>>num;while(num!=0){if(num>0){c1++;s1+=num;}else{c2++;s2+=num;}cin>>num; }ave=(s1+s2)/(c1+c2);cout<<”正数个数是:”<voidmain(){inta,b,c,i;cout<<”水仙花数有:n”;for(i=100;i<=999;i++){a=i/100;b=i/10-a*10;c=i%10;if(a*a*a+b*b*b+c*c*c==i)cout<课后答案网voidmain(){intn;doubled=1e-9,x,y,e;www.hackshp.cne=1.0;x=1.0;y=1/x;for(n=1;y>=d;n++){x=x*n;y=1/x;e=e+y;}cout<<”e=”<#include #includevoidmain(){inta,n,m;for(n=-39;n<=40;n++){a=n*n-n+41;cout<<”n=”<voidmain(){inti,y,c1,c2,c3,c;cout<<“inputyears:”;cin>>y;for(i=1;i<=y;i++)课后答案网{if(i>3){c=c1+c3;www.hackshp.cnc1=c2;c2=c3;c3=c;}elsec=c1=c2=c3=1;}cout<<”year=”<#includevoidmain() {inti,j;for(i=1;i<=7;i++){if(i<=4){cout<2成立,则再次调用fib(2)和fib(1),而fib(1)和fib(2)在函数调用时,不再递归调用,均返回2到它的上一级调用,即到调用fib(3)的执行过程,所以fib(3)调用返回值为4。13、解析:函数func第一次调用的返回值作为第二次调用的实参,第一次调用func(x,y)即func(2,5)的返回值是7,第二次调用func(7,z)即func(7,8)的返回值是15,所以r的值为15。14、解析:函数f(a,3,7)调用时,a是传数组地址,形参数组b与a使用同一片存储空间。f函数的执行是循环控制变量I的初值是3,变量s中累加上b[3]的值4,s的值为4,然后变量I增为5,条件I<7成立,s中累加上b[5]的值6,s的值为10,变量I的值增为7,条件不成立,则退出循环,返回值给x,则最后输出的值为10。4.2填空题1、4334解析:swap函数的功能是将参数x,y进行互换,主函数中调用swap(a,b),将a值传给形参x,将b值传给形参y,在执行函数的过程中,互换x和y的值并出输出;返回主函数时,变量a和b的值并没有改变。本程序说明函数调用中的参数传递是单向的。2、6 1515解析:函数fun调用两次,第一次调用的实参是全局变量d的值1,在函数调用执行过程中,输出的是局部静态变量d;第二次调用的实参是第一次调用的返回值和变量a的和,输出的仍是局部静态变量d的值。注意静态变量的定义和初始化是在第一次使用时进行的,在以后的使用过程中,保留上一次的值,不再初始化。3、x=120解析:函数f的功能是将数组第0个至第n个数组元素相乘并返回,f(a,3)就是将a数组的前4个数相乘,得到120。4、g=8i=7j=6x=7y=2g=5i=2j=3x=5y=9g=8i=7j=6x=7y=2解析:本题主要检查形参与实参的作用域。5、1解析:fun函数调用是递归调用,主函数中fun(3)调用的执行过程是:初始n=3,if语句的条件n==1||n==2不成立,执行else子句,再次调用fun函数,s=3-fun(2),则此次执行过程中,if语句的条件n==1||n==2成立,执行if后的子句s=2;,然后再返回到调用它的上一级函数fun(3),fun(3)调用再返回到主函数,返回值为1。第5章答案5.1单项选择题课后答案网01-05BCBDC06-10DB5.2分析修改以下程序并给出运行结果1、程序段正确。解析:本题说明字符与字符串的使用方法,单个字符使用单引号,字符串使用双引号。www.hackshp.cn所以输出为:Aabcd2、程序段有错误。constintsize=3;chararray[size];inti;for(i=0;i>array[i];解析:本题说明一维数组的使用方法。一维数组应该使用[],而且一维数组的下标从0开始,所以最后一个元素的下标为2,要将i<=size的=去掉。所以输出为:305.3编写程序1、从键盘输入20个数字,计算这些数字的和。#includeclassnumber{ floatcj[20],sum;public:voidsortData(){for(intm=0;m<20;m++){cout<<"Enterthecj:";cin>>cj[m];sum=sum+cj[m];}}voiddisplay(){cout<<"thesumofthesenumberis:"<classCustomer{www.hackshp.cnprivate:charname[20];charphoneNo[13];charcity[20];charbirthday[20];public:voidprint(){cout<<"yournameis:"<>name;cout<<"DateofBirth:"<>birthday;cout<<"City:"<>city;cout<<"phoneNo:"<>phoneNo;}};intmain(){Customerobject;object.get();object.print();return0;}3、询问需要输入的成绩个数并进行输入,统计其中不及格的数量#includevoidmain(){int*p,n,num=0;cout<<"您要输入几个数据?"<>n;cout<<"请输入"<>*(p+i);www.hackshp.cnif(*(p+i)<60)num=num+1;}cout<#includeusingnamespacestd; intmain(){charfname[15];cout<<"Enterthefilename:";cin>>fname;charch;ifstreamifile(fname);//把fname的值作为读文件参数while(ifile){ifile.get(ch);if(ch>="a"&&ch<="z")//判断是否为小写字母{ch=ch-32;//小写字母的ASCII值-32即为大写字母}cout<>ch;//暂停执行,显示屏幕}9.2从输入文件file.in中读入文件内容,为每一行加上行号后,输出到输出文件file.out中,最后输出所读的文件的总的字符数。#include"stdafx.h"#include#include#include课后答案网#includeusingnamespacestd;intmain(){www.hackshp.cncharab;ifstreamin("c:\file.in");if(!in){cerr<<"errorduringopeningfile.inn";cin>>ab;//防止屏幕关闭exit(-1);}ofstreamout("c:\file.out",ios::trunc);if(!in){cerr<<"errorduringopeningfile.outn";cin>>ab;//防止屏幕关闭exit(-1);} stringline;intlength=0;intline_num=1;while(getline(in,line)){out<>ab;//防止屏幕关闭}课后答案网www.hackshp.cn'

您可能关注的文档