为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

2021年C++面向对象程序设计习题解答与上机指导(第二版)源程序

2019-11-18 10页 doc 255KB 54阅读

用户头像

is_179289

暂无简介

举报
2021年C++面向对象程序设计习题解答与上机指导(第二版)源程序C++面向对象程序设计习题解答与上机指引(第2版)习题参照答案源代码使用源程序几点注意事项(1)由于源程序在复制、编辑、解压缩等过程中也许引起某些符号(重要是标点符号,如分号、冒号、逗号、引号)字体、半全角等发生变化,在编译时也许被检出语法错误,只要使用“替代”功能,纠正后即能顺利运营。(2)有C++系统(如VisualC++6.0)没有完全实现C++原则,它所提供不带后缀.h头文献不支持友元运算符重载函数,在VisualC++6.0中编译会出错,这时可采用带后缀.h头文献。将程序中#includeusingnamespace...
2021年C++面向对象程序设计习题解答与上机指导(第二版)源程序
C++面向对象程序设计习解答与上机指引(第2版)习题参照答案源代码使用源程序几点注意事项(1)由于源程序在复制、编辑、解压缩等过程中也许引起某些符号(重要是标点符号,如分号、冒号、逗号、引号)字体、半全角等发生变化,在编译时也许被检出语法错误,只要使用“替代”功能,纠正后即能顺利运营。(2)有C++系统(如VisualC++6.0)没有完全实现C++原则,它所提供不带后缀.h头文献不支持友元运算符重载函数,在VisualC++6.0中编译会出错,这时可采用带后缀.h头文献。将程序中#includeusingnamespacestd;修改成#include即可顺利运营。第2章C++基本【2.2】下面是一种C程序,改写它,使它采用C++风格I/O语句。#includeintmain(){inta,b,d,min;printf("Entertwonumbers:");scanf("%d%d",&a,&b);min=a>b?b:a;for(d=2;dusingnamespacestd;intmain(){inta,b,d,min;cout<<"Entertwonumbers:";cin>>a;cin>>b;min=a>b?b:a;for(d=2;dusingnamespacestd;inti=15;intmain(){inti;i=100;::i=i+1;cout<<::i<usingnamespacestd;voidf(int&m,intn){inttemp;temp=m;m=n;n=temp;}intmain(){inta=5,b=10;f(a,b);cout<分析
下面程序输出成果。#includeusingnamespacestd;int&f(int&i){i+=10;returni;}intmain(){intk=0;int&m=f(k);cout<usingnamespacestd;intmain(){int*p=newint[20];//动态分派20个整型内存空间*p=1;*(p+1)=1;//对前面2个内存空间赋值1cout<<*p<<"\t"<<*(p+1)<<"\t";p=p+2;//p指向第3个内存空间for(inti=3;i<=20;i++){*p=*(p-1)+*(p-2);cout<<*p<<"\t";if(i%5==0)cout<#includeusingnamespacestd;doublesroot(inti){returnsqrt(i);}doublesroot(longl){returnsqrt(l);}doublesroot(doubled){returnsqrt(d);}intmain(){inti=12;longl=1234;doubled=12.34;cout<<"i二次方根是:"<usingnamespacestd;intmain(){inti,j,sum=0;;for(i=0;i<=20;i++)for(j=0;j<=50;j++)if(100-5*i-2*j>=0){sum++;cout<<100-5*i-2*j<<"\t"<usingnamespacestd;intmain(){voidchange(int&,int&);inta,b;cin>>a>>b;if(a>b)change(a,b);cout<#includeusingnamespacestd;inlinefloatf(floatx){return2*x*x*x-4*x*x+3*x-6;}intmain(){floatleft,right,middle,ym,yl,yr;cout<<"pleasetwonumber:"<>left>>right;yl=f(left);yr=f(right);do{middle=(right+left)/2;ym=f(middle);if(yr*ym>0){right=middle;yr=ym;}else{left=middle;yl=ym;}}while(fabs(ym)>=1e-6);cout<<"\nRootis:"<usingnamespacestd;classtest{public:test();~test(){};private:inti;};test::test(){i=25;for(intctr=0;ctr<10;ctr++){cout<<"Countingat"<usingnamespacestd;classTest{private:intval;public:Test(){cout<<"default."<usingnamespacestd;classStudent{public:voidprintStu();private:charname[10];intage;floataver;};intmain(){Studentp1,p2,p3;p1.age=30;…return0;}【3.21】指出下列程序中错误,并阐明为什么。#includeusingnamespacestd;classStudent{intsno;intage;voidprintStu();voidsetSno(intd);};voidprintStu(){cout<<"\nSnois"<usingnamespacestd;classPoint{public:intx,y;private:Point(){x=1;y=2;}};intmain(){Pointcpoint;cpoint.x=2;return0;}【3.23】下面是一种计算器类定义,请完毕该类成员函数实现。classcounter{public:counter(intnumber);voidincrement();//给原值加1voiddecrement();//给原值减1intgetvalue();//获得计数器值intprint();//显示计数private:intvalue;};【解】classcounter{public:counter(intnumber);voidincrement();//给原值加1voiddecrement();//给原值减1intgetvalue();//获得计数器值intprint();//显示计数private:intvalue;};counter::counter(intnumber){value=number;}voidcounter::increment(){value++;}voidcounter::decrement(){value--;}intcounter::getvalue(){returnvalue;}intcounter::print(){cout<<"valueis"<usingnamespacestd;classDate{public:voidprintDate();//显示日期voidsetDay(intd);//设立日值voidsetMonth(intm);//设立月值voidsetYear(inty);//设立年值private:intday,month,year;};intmain(){DatetestDay;testDay.setDay(5);testDay.setMonth(10);testDay.setYear();testDay.printDate();return0;}【解】voidDate::printDate(){cout<<"\nDateis"<
达圆柱体半径和高度。用类cylinder计算圆柱体体积,并存储在一种double变量中。在类cylinder中包括一种成员函数vol,用来显示每个cylinder对象体积。【解】实现本题功能程序如下:#includeusingnamespacestd;classcylinder{public:cylinder(doublea,doubleb);voidvol();private:doubler,h;doublevolume;};cylinder::cylinder(doublea,doubleb){r=a;h=b;volume=3.141592*r*r*h;}voidcylinder::vol(){cout<<"volumeis:"<usingnamespacestd;constintSIZE=80;classStock{public:Stock(){strcpy(stockcode,"");}Stock(charcode[],intq=1000,doublep=8.98){strcpy(stockcode,code);quan=q;price=p;}voidprint(void){cout<stockcode;cout<<""<quan<<""<price<usingnamespacestd;classB{public:B(){}B(inti,intj){x=i;y=j;}voidprintb(){cout<usingnamespacestd;classA{public:voidset(inti,intj){x=i;y=j;}intget_y(){returny;}private:intx,y;};classbox{public:voidset(intl,intw,ints,intp){length=l;width=w;label.set(s,p);}intget_area(){returnlength*width;}private:intlength,width;Alabel;};intmain(){boxb;b.set(4,6,1,20);cout<usingnamespacestd;classSample{public:Sample(inti,intj){x=i;y=j;}voiddisp(){cout<<"disp1"<usingnamespacestd;classR{public:R(intr1,intr2){R1=r1;R2=r2;}voidprint();voidprint()const;private:intR1,R2;};voidR::print(){cout<usingnamespacestd;classStudent{public:Student(){++x;cout<<"\npleaseinputstudentNo.";cin>>Sno;}staticintget_x(){returnx;}intget_Sno(){returnSno;}private:staticintx;intSno;};intStudent::x=0;intmain(){cout<usingnamespacestd;classCTest{public:constinty2;CTest(inti1,inti2):y1(i1),y2(i2){y1=10;x=y1;}intreadme()const;//...private:intx;constinty1;};intCTest::readme()const{inti;i=x;x++;returnx;}intmain(){CTestc(2,8);inti=c.y2;c.y2=i;i=c.y1;return0;}【解】#includeusingnamespacestd;classCTest{public:constinty2;CTest(inti1,inti2):y1(i1),y2(i2){y1=10;//错误,y1是用const定义,不能修改x=y1;}intreadme()const;//...private:intx;constinty1;};intCTest::readme()const{inti;i=x;x++;//错误,函数定义用了const,表达该函数不能修改对象returnx;}intmain(){CTestc(2,8);inti=c.y2;c.y2=i;//错误,y2是常量,不能修改i=c.y1;//错误,y1私有变量,不能直接存取return0;}【4.18】指出下面程序中错误,并阐明因素。#includeusingnamespacestd;classCTest{public:CTest(){x=20;}voiduse_friend();private:intx;friendvoidfriend_f(CTestfri);};voidfriend_f(CTestfri){fri.x=55;}voidCTest::use_friend(){CTestfri;this->friend_f(fri);::friend_f(fri);}intmain(){CTestfri,fri1;fri.friend_f(fri);friend_f(fri1);return0;}【解】#includeusingnamespacestd;classCTest{public:CTest(){x=20;}voiduse_friend();private:intx;friendvoidfriend_f(CTestfri);};voidfriend_f(CTestfri){fri.x=55;}voidCTest::use_friend(){CTestfri;this->friend_f(fri);//错误,友元函数不是成员函数,//因此不能用this->调用友元函数::friend_f(fri);}intmain(){CTestfri,fri1;fri.friend_f(fri);//错误友元函数不是成员函数,//因此不能用“对象.函数名”调用友元函数friend_f(fri1);return0;}【4.19】指出下面程序中错误,并阐明因素。#includeusingnamespacestd;classCTest{public:CTest(){x=20;}voiduse_this();private:intx;};voidCTest::use_this(){CTesty,*pointer;this=&y;*this.x=10;pointer=this;pointer=&y;}intmain(){CTesty;this->x=235;return0;}【解】#includeusingnamespacestd;classCTest{public:CTest(){x=20;}voiduse_this();private:intx;};voidCTest::use_this(){CTesty,*pointer;this=&y;//错误,不能对this直接赋值。*this.x=10;//错误,按优先级原句含义是*(this.x)=10,显然不对//对的写法是(*this).x=10;或this->x=10;pointer=this;pointer=&y;}intmain(){CTesty;this->x=235;//错误,this引用不能在外部函数中,只能在内部函数中。Return0;}【4.20】写出下面程序运营成果。#includeusingnamespacestd;classtoy{public:toy(intq,intp){quan=q;price=p;}intget_quan(){returnquan;}intget_price(){returnprice;}private:intquan,price;};intmain(){toyop[3][2]={toy(10,20),toy(30,48),toy(50,68),toy(70,80),toy(90,16),toy(11,120),};for(inti=0;i<3;i++){cout<usingnamespacestd;classexample{public:example(intn){i=n;cout<<"Constructing\n";}~example(){cout<<"Destructing\n";}intget_i(){returni;}private:inti;};intsqr_it(exampleo){returno.get_i()*o.get_i();}intmain(){examplex(10);cout<usingnamespacestd;classaClass{public:aClass(){total++;}~aClass(){total--;}intgettotal(){returntotal;}private:staticinttotal;};intaClass::total=0;intmain(){aClasso1,o2,o3;cout<usingnamespacestd;classtest{public:test();~test(){};private:inti;};test::test(){i=25;cout<<"Here'stheprogramoutput.\n";cout<<"Let′sgeneratesomestuff...\n";for(intctr=0;ctr<10;ctr++){cout<<"Countingat"<usingnamespacestd;classbook{public:book(inta,intb){qu=a;price=b;}voidshow_money(){cout<usingnamespacestd;classbook{public:book(inta,intb){qu=a;price=b;}voidshow_money(){cout<show_money();p--;}return0;}【4.26】使用C++类建立一种简朴卖玩具程序。类内必要具备玩具单价、售出数量以及每种玩具售出总金额等数据,并为该类建立某些必要函数,并在主程序中使用对象数组建立若干个带有单价和售出数量对象,显示每种玩具售出总金额。【解】实现本题功能程序如下:#includeusingnamespacestd;classtoy{public:toy(){}toy(intp,intc){Price=p;Count=c;}voidInput(intP,intC);voidCompute();voidPrint();private:intPrice;intCount;longTotal;};voidtoy::Input(intP,intC){Price=P;Count=C;}voidtoy::Compute(){Total=(long)Price*Count;}voidtoy::Print(){cout<<"Price="<usingnamespacestd;constintSIZE=80;classStock{public:Stock(){strcpy(stockcode,"");}Stock(charcode[],intq=1000,doublep=8.98){strcpy(stockcode,code);quan=q;price=p;}voidprint(void){cout<stockcode;cout<<""<quan<<""<price<usingnamespacestd;classshen_stock;//向前引用classshang_stock//深圳类{public:shang_stock(intg,ints,intp);//构造函数friendvoidshang_count(constshang_stockss);//计算上海股票总数friendvoidcount(constshang_stockss,constshen_stockzs);//计算上海和深圳股票总数private:intgeneral;//普通股票个数intst;//ST股票个数intpt;//PT股票个数};shang_stock::shang_stock(intg,ints,intp)//构造函数{general=g;st=s;pt=p;}classshen_stock{intgeneral;//普通股票个数intst;//ST股票个数intpt;//PT股票个数public:shen_stock(intg,ints,intp);//构造函数friendvoidshen_count(constshen_stockes);//计算深圳股票总数friendvoidcount(constshang_stockss,constshen_stockzs);//计算上海和深圳股票总数};shen_stock::shen_stock(intg,ints,intp)//构造函数{general=g;st=s;pt=p;}intmain(){shang_stockshanghai(1600,20,10);//建立对象//表达上海有1600支普通股票,20支ST股票,10支PT股票shen_stockshenzhen(1500,15,8);//建立对象//表达深圳有1500支普通股票,15支ST股票,8支PT股票shang_count(shanghai);//计算上海股票总数shen_count(shenzhen);//计算深圳股票总数count(shanghai,shenzhen);//计算上海和深圳股票总数return0;}voidshang_count(constshang_stockss)//计算上海股票总数{cout<<"stocksofshanghaiare"<usingnamespacestd;classStudent{public:Student(intn,stringna,doubled){no=n;deg=d;name=na;sum+=d;num++;}staticdoubleavg(){returnsum/num;}staticinttotal(){returnnum;}voiddisp(){cout<usingnamespacestd;classB1{public:B1(inti){b1=i;cout<<"ConstructorB1."<usingnamespacestd;classMain{protected:char*mainfood;public:Main(char*name){mainfood=name;}};classSub{protected:char*subfood;public:Sub(char*name){subfood=name;}};classMenu:publicMain,publicSub{public:Menu(char*m,char*s):Main(m),Sub(s){}voidshow();};voidMenu::show(){cout<<"主食="<usingnamespacestd;classA{private:inta;public:A(){a=0;}A(inti){a=i;}voidPrint(){cout<usingnamespacestd;classB1{intb1;public:B1(inti){b1=i;cout<<"constructorB1."<usingnamespacestd;#includeclasstable{public:table(intp){i=p;}voidascii(void);protected:inti;};voidtable::ascii(void){intk=1;for(;i<127;i++){cout<usingnamespacestd;#includeclasstable{protected:inti;intj;public:table(intp,intq){i=p;j=q;}voidascii(void);};voidtable::ascii(void){intk=1;for(;i<=j;i++){cout<usingnamespacestd;classarea_cl{protected:doubleheight;doublewidth;public:area_cl(doubler,doubles){height=r;width=s;}virtualdoublearea()=0;};classrectangle:publicarea_cl{public:rectangle(doubler,doubles):area_cl(r,s){};doublearea(){returnheight*width;}};classisosceles:publicarea_cl{public:isosceles(doubler,doubles):area_cl(r,s){};doublearea(){returnheight*width/2;}};intmain(){area_cl*p;rectangleb(10.0,5.0);isoscelesi(4.0,6.0);p=&b;cout<<"Therectangle'sareais"<area()<area()<usin
/
本文档为【2021年C++面向对象程序设计习题解答与上机指导(第二版)源程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
相关资料
热门搜索
你可能还喜欢

历史搜索

    清空历史搜索