您好,欢迎访问三七文档
综合编程题及解答1.设计一个类Rect,要求如下:(1)该类中的私有数据成员length,width存放它的长和宽,并且设置它们的默认值是0。(2)通过成员函数设置其长和宽,并确保长和宽都在(0,50)范围之内。(3)实现求周长函数GetPerimeter()。解:编程如下:#includeiostreamusingnamespacestd;classRect{private:floatlength,width;public:Rect(floatl=0,floatw=0):length(l),width(w){}Rect(Rect&R):length(R.length),width(R.width){}~Rect(){}Rectinput();floatGetPerimeter();voidshow();};RectRect::input(){floatL,W;cout输入该长方形的长(Length)和宽(Width):endl;do{coutLength=;cinL;if(L=0||L=50)cout输入的数据不在区间(0,50)内,请重新输入!endl;}while(L=0||L=50);do{coutWidth=;cinW;if(W=0||W=50)cout输入的数据不在区间(0,50)内,请重新输入!endl;}while(W=0||W=50);returnRect(L,W);}voidRect::show(){coutLengthlength,Width=widthendl;coutPerimeter=GetPerimeter()endl;}floatRect::GetPerimeter(){return2*(length+width);}intmain(){RectR;R=R.input();R.show();return0;}2.定义一个二维座标类Vector2d,二个数据成员为double型x,y为private属性。定义代二个参数的构造函数和一个Show()函数用以输出x,y的值,另外作为成员函数重载的运算苻”+”的功能是将此类二个对象的数据成员x和y对应相加。这些成员函数的属性均为public.请用C++编写此程序,并编写测试程序进行测试解:程序如下:#includeiostreamusingnamespacestd;classVector2d{private:doublex;doubley;public:Vector2d(doublex=0,doubley=0):x(x),y(y){}Vector2d(Vector2d&v):x(v.x),y(v.y){}voidshow();Vector2doperator+(Vector2dv);~Vector2d(){}};voidVector2d::show(){coutX=x,Y=yendl;}Vector2dVector2d::operator+(Vector2dv){returnVector2d(x+v.x,y+v.y);}intmain(){Vector2dv1(1,3);Vector2dv2(2,5);(v1+v2).show();return0;}3.编程实现抽象类Employee,派生类Manger和HourlyWorker,Employee有数据成员姓名name和工号ID,Manger有数据成员sal,代表经理的月工资,HourlyWorker有wage和hours,分别代表钟点工的每小时的工资数和月工作时数,定义的所有类中必须包含构造函数、析构函数、修改和获取所有数据成员的成员函数,以及虚函数来计算职员的工资、输出职员的姓名name和工号ID。解:编程如下:#includeiostream#includestringusingnamespacestd;classEmployee{private:stringname;stringID;public:Employee(stringn,stringid):name(n),ID(id){}Employee(){}~Employee(){}virtualfloatCountPays(){return0;}virtualvoidshow(){}stringGetName(){returnname;}stringGetID(){returnID;}voidchangen(stringn){name=n;}voidchangei(stringid){ID=id;}Employeeinput();Employeeset();};EmployeeEmployee::input(){stringn,id;cout输入员工的姓名与工号:endl;cinnid;returnEmployee(n,id);}EmployeeEmployee::set(){stringn,id;cout输入要修改后的信息:endl;cinnid;returnEmployee(n,id);}classManger:publicEmployee{private:floatsal;public:Manger(stringname,stringid,floats):Employee(name,id),sal(s){}Manger():Employee(){}~Manger(){}floatCountPays();voidshow();Mangerinput();Mangerset();};floatManger::CountPays(){returnsal;}voidManger::show(){cout姓名:GetName()endl;cout工号:GetID()endl;cout工资:salendl;}MangerManger::input(){stringn,id;floats;cout输入员工的姓名与工号,工资:endl;cinnids;returnManger(n,id,s);}MangerManger::set(){cout输入要修改后的信息:姓名,工号,工资:endl;stringn,id;floatw;cinnidw;returnManger(n,id,w);}classHourlyWorker:publicEmployee{private:floatwages,hours;public:HourlyWorker(stringname,stringid,floatw,floath):Employee(name,id),wages(w),hours(h){}HourlyWorker():Employee(){}~HourlyWorker(){}floatCountPays();voidshow();HourlyWorkerinput();HourlyWorkerset();};floatHourlyWorker::CountPays(){returnwages*hours;}voidHourlyWorker::show(){cout姓名:GetName()endl;cout工号:GetID()endl;cout工资:CountPays()endl;}HourlyWorkerHourlyWorker::input(){stringn,id;floatw,h;cout输入员工的姓名与工号,单位时间工资,工作时间:endl;cinnidwh;returnHourlyWorker(n,id,w,h);}HourlyWorkerHourlyWorker::set(){cout输入要修改后的信息:姓名,工号,单位时间工资,工作时间:endl;stringn,id;floats,h;returnHourlyWorker(n,id,s,h);}intmain(){Mangerm;m=m.input();m=m.set();m.show();HourlyWorkerh;h=h.input();h.show();return0;}4.编写一个函数模板,用于求参数的绝对值,并编写测试程序进行测试。解:编程如下:#includeiostreamusingnamespacestd;templateclassTTabs(Tx){returnx0?-x:x;}intmain(){intn=-3;floatm=4.5;doublej=-34;coutabs(n)endl;coutabs(m)endl;coutabs(j)endl;}5.设计一个类DateInfo,要求其满足下述要求:(1)要求有一个无参的构造函数,其初始的年、月、日分别为:2010,8,8。(2)要求有一个带参数的构造函数,其参数分别对应年、月、日。(3)要求用一个成员函数实现日期的设置。(4)要求用一个成员函数实现输出日期。请用C++编写此程序,并编写测试程序进行测试。解:编程如下:#includeiostream#includeiomanipusingnamespacestd;classDateInfo{private:intyear;intmonth;intday;public:DateInfo():year(2008),month(8),day(8){}DateInfo(inty,intm,intd):year(y),month(m),day(d){}DateInfo(DateInfo&D):year(D.year),month(D.month),day(D.day){}~DateInfo(){}DateInfoset();voidshow();};DateInfoDateInfo::set(){inty,m,d;cout输入要设定的日期:endl;cout年份:;ciny;cout月份:;cinm;cout日期:;cind;returnDateInfo(y,m,d);}voidDateInfo::show(){cout显示的日期如下:endl;coutyearsetw(1)年setw(1)monthsetw(1)月setw(1)daysetw(1)日endl;}intmain(){DateInfoD;D.show();D=D.set();D.show();return0;}
本文标题:综合编程题及解答
链接地址:https://www.777doc.com/doc-1856362 .html