您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C++程序设计(第二版)钱能-第8章--类
第8章类8.9练习8(Exercises8)1.下面程序错在哪里?//=====================================//e0801.cpp//找错//=====================================#includecmathusingnamespacestd;//-------------------------------------classPoint{protected:doublex;//x轴分量doubley;//y轴分量public:voidSet(doubleix,doubleiy){//设置坐标x=ix;y=iy;}//--------------------------------doublexOffset(){//取x轴坐标分量returnx;}//--------------------------------doubleyOffset(){//取y轴坐标分量returny;}//--------------------------------doubleangle(){//取点的极坐标0return(180/3.14159)*atan2(y,x);}//--------------------------------doubleradius(){//取点的极坐标半径returnsqrt(x*x+y*y);}};//-----------------------------------intmain(){Pointp;doublex,y;coutEnterxandy:\n;cinxy;p.Set(x,y);p.x+=5;p.y+=6;coutangle=p.angle(),radius=p.radius(),xoffset=p.xOffset(),yoffset=p.yOffset()endl;}//=====================================解答:程序缺少头文件iostream,类Point定义结束时,最后应该加上半角分号表示语句的结束。2.将下面程序分离类定义、类的实现和main函数,实现多文件程序结构://=====================================//e0802.cpp//使用Cat类//=====================================#includeiostream//-------------------------------------classCat{intitsAge;public:intgetAge();voidsetAge(intage);voidmeow();//喵喵叫};//-----------------------------------intCat::getAge(){returnitsAge;}voidCat::setAge(intage){itsAge=age;}voidCat::meow(){std::coutMeow.\n;}//-------------------------------------intmain(){Catfrisky;frisky.setAge(5);frisky.meow();std::coutfriskyisacatwhoisfrisky.getAge()yearsold.\n;frisky.meow();}//====================================解答:File1//=====================================//main函数//=====================================#includeiostream#include8.9.2(2).cpp#include8.9.2(3).cppintmain(){Catfrisky;frisky.setAge(5);frisky.meow();std::coutfriskyisacatwhoisfrisky.getAge()yearsold.\n;frisky.meow();}//====================================File2//=====================================//Cat类定义//=====================================classCat{intitsAge;public:intgetAge();voidsetAge(intage);voidmeow();//喵喵叫};//-----------------------------------File3//=====================================//Cat类的实现//=====================================intCat::getAge(){returnitsAge;}voidCat::setAge(intage){itsAge=age;}voidCat::meow(){std::coutMeow.\n;}3.定义一个满足如下要求的Date类:(1)用月/日/年的格式输出日期;(2)可运行在日期上加一天操作;(3)设置日期操作。解答:#includeiostreamusingnamespacestd;classDate{private:intday;intmonth;intyear;boolIsLeapYear();//输入日期格式涉及到对闰年的判断public:Date();Date(intyear,intmonth,intday);voidDisplay();voidAddDay();voidSetDate(intyear,intmonth,intday);~Date();};Date::Date(){}//默认构造函数初始化Date::Date(intyear,intmonth,intday)//带参构造函数初始化{this-day=day;this-month=month;this-year=year;}voidDate::Display()//日期显示{coutyear/month/dayendl;}voidDate::AddDay()//当前日期加1{if(Date::IsLeapYear())//先判断是否是闰年{if(month==2&&day==29){month++;day=1;return;}}else{if(month==2&&day==28){month++;day=1;return;}}if(month==4||month==6||month==9||month==11)//再判断月份{if(day==30){month++;day=1;return;}}elseif(month==12){if(day==30){month=1;day=1;year++;return;}}else{if(day==31){month++;day=1;return;}}day++;//普通年份普通月份普通日子就直接加1}voidDate::SetDate(intyear,intmonth,intday)//设置当前日期{this-year=year;this-month=month;this-day=day;}Date::~Date(){}boolDate::IsLeapYear()//判读闰年{boolbLeap;if((year%100!=0&&year%4==0)||year%400==0)bLeap=1;returnbLeap;}intmain(){Datedate;inty,m,d;cout请输入年月日:;cinymd;date.SetDate(y,m,d);cout当前输入日期:;date.Display();date.AddDay();cout当前日期加1:;date.Display();return0;}4.定义一个时间类Time,能提供和设置由时、分、秒组成的时间,并编成应用程序,要求包括定义时间对象,设置时间,输出该对象提供的时间。并请将类定义作为界面,用多文件结构实现之。解答:File1:#includeiostreamusingnamespacestd;classTime{private:inthour,minute,second;public:voidset(inth,intm,ints);friendostream&operator(ostream&out,Time&t);};File2:#includeiostream#includeiomanipusingnamespacestd;voidTime::set(inth,intm,ints){hour=h;minute=m;second=s;}ostream&operator(ostream&out,Time&t){returnoutsetfill('0')setw(2)t.hour:setw(2)t.minute:setw(2)t.secondsetfill('');}File3:#includeTime.h#includeTime.cpp#includeiostreamusingnamespacestd;intmain(){Timet;t.set(5,15,32);couttendl;return0;}5.编写一个类,实现简单的栈。栈中有以下操作:元素入栈,读出栈顶元素值,退栈,判断栈顶空否。如果栈溢出,程序终止。栈的数据成员由10个整型的数组构成。先后如下操作:创建栈:将10入栈;将12入栈;将14入栈;读出并输出栈顶元素;退栈;读出并输出栈顶元素。解答:#includeiostreamusingnamespacestd;classStack{public:Stack();~Stack();voidpush(intx);voidpop();inttop();intempty();private:intdata[10];intop;};Stack::Stack(){op=-1;}Stack::~Stack(){}voidStack::push(intx){if(op==9){cout栈溢出!endl;return;}data[++op]=x;}voidStack::pop(){op--;}intStack::top(){returndata[op];}intStack::empty(){if(op0)return0;elsereturn1;}intmain(){Stackstack;stack.push(10);stack.push(12);stack.push(14);coutstack.top()endl;stack.pop();coutstack.top()endl;return0;}6.重新编写以下程序,将函数leisure改为友元://=====================================//e0806.cpp//=====================================#includeiostream//-------------------------------------classCar{intsize;public:voidsetSize(intj){size=j;}intgetSize(){returnsize;}};//===================================classBoat{ints
本文标题:C++程序设计(第二版)钱能-第8章--类
链接地址:https://www.777doc.com/doc-4382383 .html