上机考试综合应用题.doc_第1页
上机考试综合应用题.doc_第2页
上机考试综合应用题.doc_第3页
上机考试综合应用题.doc_第4页
上机考试综合应用题.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

综合应用题1.程序通过继承关系,实现对姓名的控制。类NameCtrl实现对名字访问的接口,AnimalName实现对动物名字的设置和输出。程序输出为:AnimalNameDog其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。(1)在类NameCtrl中定义接口函数GetName,为虚函数。请在注释/*1*后添加适当的语句。(2)函数GetName2()实现获得动物名字的缓存,但是只获得读允许操作的这个缓存,请在注释/*2*后添加适当的语句。(3)实现AnimalName的构造函数,请在注释/*3*后添加适当的语句。(4)完成AnimaName的构造函数,实现对名字的处理。请在注释/*4*后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。#include class NameCtrlpublic:/*1*;class AnimalName: public NameCtrlpublic:void GetName()coutAnimalNameGetName();coutobj1.GetName2()endl;return;2.按要求完成下列操作,将类的定义补充完整。(1)定义私有数据成员year, month. Day, 分别用于年、月、日,它们都是int型的数据,请在注释/*1*后添加适当的语句。(2)完成判断数据成员date2是否四闰年函数int Date:IsLeapYear()的定义,返回数据成员data2是否是闰年的值,是则返回1,否则返回0。请在注释/*2*后添加适当的语句。(3)设置SetData()的默认时间为2004-12-1,请在注释/*3*后添加适当的语句。(4)完成主函数main(),完成输出date2 is a leapyear,请在注释/*4*后添加适当的语句。提示:公元纪年的年数可以被四整除,即为闰年;被100整除儿不能被400整除为平年;被100整除也可被400整除的为闰年。注意:增加代码,或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。#include using namespace std;class Datepublic: /*3*void SetDate(int y,int m,int n);int IsLeapYear();void Print()cout year - month - day endl;private:/*1*;void Date:SetDate(int y,int m,int d)year=y;month=m;day=d;int Date:IsLeapYear()/*2*return int main()Date date1,date2;date1.SetDate();date2.SetDate(2004,12,1);cout date1:;date1.Print();cout date2:;date2.Print();/*4*cout date2 is( :not) a leapyear. endl;return 0;3. 按要求完成下列操作,将类的定义补充完整。(1)定义类的公有数据成员函数No、Name32, 其中No是int型的数据,Name32为字符型。请在注释/*1*后添加适当的语句。(2)完成函数set的定义,分布设置No和Name的值,请在注释/*2*后添加适当的语句。(3)完成函数print(),请在注释/*3*后添加适当的语句。(4)加缺省构造函数,设置No为0,Name为空,请在注释/*4*后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。#includeclass Studentpublic:/*1*/*2*No = no;for(int i=0;strNamei != 0 ; i+)Namei = strNamei;Namei+1 = 0;void print()/*3*Student()/*4*;int main()Student stu;stu.Set(125,XiaoXin);stu.print();return 0;4. 源程序文件中定义了Circle类与Money类,Circle类可对半径为r的圆进行周长与面积的计算,而Money类用于计算一圆形游泳池的造价。游泳池四周有原形过道,过道外围上栅栏,过道宽度为3米,根据键入的游泳池半径,每米栅栏价格及每平方米过道价格,即可计算出游泳池的造价。请按要求完成下列操作,将程序补充完整。(1)定义符号常量PI(值为3.14159f)与WIDTH(值为3.00f),分别用于表示圆周率与过道的固定宽度。请在注释/*1*之后添加适当的语句。(2)定义Circle类默认构造函数,把私有成员radius初始化为参数r的值。请在注释 /*2* 之后添加适当的语句;(3)完成Money类默认构造函数的定义,把私有成员FencePrice(每米栅栏的价格)、 ConcretePrice(每平方米过道的价格)初始化为参数f,c的值。请在注释/*3*之后添加适当的语句。(4)完成Money类成员函数float Money:TotalMoney(float fencelen, float conarea)的定义,根据参数fencelen(栅栏的长度)和conarea(过道的面积),返回栅栏与过道的总造价。请在注释/*4*之后添加适当的语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#include /*1*class Circleprivate:float radius;public:/*2*float Circumference()return 2 * PI * radius;float Area()return PI * radius * radius;class Moneyprivate:float FencePrice; float ConcretePrice;public:Money(float f,float c);float TotalMoney(float fencelen, float conarea);Money:Money(float f,float c)/*3*float Money:TotalMoney(float fencelen, float conarea)/*4*void main()float radius,fence,concrete;cout.setf(ios:fixed); cout.setf(ios:showpoint);cout.precision(2);cout radius;cout fence;cout concrete;Circle Pool(radius);Circle PoolRim(radius + WIDTH);Money mon(fence,concrete);float totalmoney=mon.TotalMoney(PoolRim.Circumference(),(PoolRim.Area() - Pool.Area();cout The total money is RMB totalmoney endl;5. 按要求完成下列操作,将类的定义补充完整。(1)完成类Rect的构造函数,实现对遍历left、right、top、bottom的初始化,缺省值都为0,请在注释/*1*后添加适当的语句。(2)完成类Rectde 构造函数,请在注释/*2*后添加适当的语句。(3)完成计算矩形面积函数Area(),请在注释/*3*后添加适当的语句。(4)完成计算周长函数Circly(),请在注释/*4*后添加适当的语句。程序输出: 100 40注意:增加代码,或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。#includeclass Rectpublic:int left,right,top,bottom;/*1*left = l;right= r;top = t;bottom=b;/*2*left = rc.left;right= rc.right;top = rc.top;bottom=rc.bottom;int Area()/*3*return;int Circly()/*4*return ;int main()Rect rc(10,20,40,50);Rect rc2(rc);coutrc2.Area()endl;coutrc2.Circly()endl;return 0;6. 按要求完成下列操作,将类的定义补充完整。完成以下功能:(1)完成构造函数,设置数组元素的个数为0,请在注释/*1*后添加适当的语句。(2)完成函数Add(int n),如果参数n包含在类的数据成员数组中,则返回0,否则把数据写入数组,然后返回1,请在注释/*2*后添加适当的语句。(3)完成函数Del(int n),如果变量在数据中,则删除该变量,并且返回1,如果不存在则返回0,请在注释/*3*后添加适当的语句。(3在完成成员函数isMemberOf(int n)的定义,该函数检查参数n是否在类的数据成员数组elems中,如果在返回1,否则返回0. 请在注释/*4*后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。#include#define MAX_LEN 1024class CMyClasspublic:CMyClass()/*1*int Add(int n)for(int i=0;im_Len;i+)/*2*if()return 0;m_Arraym_Len+ = n;return 1;int Del(int n)int i;for( i=0;im_Len;i+)if( m_Arrayi = n)break;/*3*if()for(; im_Len-1;i+)m_Arrayi = m_Arrayi+1;m_Len-;return 1;return 0;int isMemberOf(int n)for(int i=0;im_Len;i+)/*4*if()return 1;return 0;private:int m_ArrayMAX_LEN; int m_Len; /;int main()CMyClass obj;obj.Add(2);obj.Add(4);obj.Add(5);obj.Add(10);obj.Add(2);obj.isMemberOf(4);obj.isMemberOf(11);obj.Del(5);obj.Del(2);obj.isMemberOf(2);obj.isMemberOf(5);return 0;7. 按要求完成下列操作,将类的定义补充完整。完成以下功能:(1)完成构造函数的定义,使得数据成员变量m_filename和m_contex为空,内容长度m_Ctxlen为0. 请在注释/*1*后添加适当的语句。(2)完成函数Write()函数,用来对contex内容进行设置填充内容,如果以前有内容,则删除以前的内容,重新填写。请在注释/*2*后添加适当的语句。(3)完成Copy函数,完成将Source的内容拷贝到当前的文件内容中,请在注释/*3*后添加适当的语句。(4)完成析构函数,对Contex内存的释放。请在注释/*4*后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。#includeclass CMyFileprivate:char m_filename64;char* m_contex;int m_CtxLen;public:CMyFile()/*1*m_contex = NULL;m_CtxLen = 0;CMyFile()if( m_CtxLen )/*2*void Open(char* str,int len)for(int i=0;ilen;i+)m_filenamei = stri;m_filenamelen = 0;m_CtxLen = 0;if( m_contex)delete m_contex;m_contex = NULL;void Write(char* str,int len)if( m_contex != NULL )/*3*m_contex = new charlen+1;for(int i=0;ilen;i+)m_contexi = stri;m_contexlen = 0;m_CtxLen = len;void Copy(CMyFile& file)/*4*;int main()CMyFile file1,file2;file1.Open(abc,3);file2.Open(avd,3);file1.Write(dede,4);file2.Copy(file1);return 0;8. 按要求完成下列操作,将类的定义补充完整。完成以下功能:(1)定义类Cat的保护数据成员itsAge用于表示年龄,它是int型的数据。请在注释/*1*之后添加适当的语句。(2)完成成员函数GetAge()的类外定义,返回成员的itsAge值,请在注释/*2*之后添加适当的语句。(3)完成成员函数SetAge(int age)的类外定义,把数据成员itsAge赋值为参数age的值,请在注释/*3*之后添加适当的语句。(4)完成成员函数Meow的类外定义,使其输出字符串meow.到屏幕上。请在注释/*4*之后添加适当的语句。输出结果如下:meow.kitty is a cat who is 5 years old.meow.注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#includeclass Catpublic:int GetAge();void SetAge(int age);void Meow();protected:/*1*;int Cat:GetAge()/*2*void Cat:SetAge(int age)/*3*void Cat:Meow()/*4*void main()Cat kitty;kitty.Meow();kitty.SetAge(5);coutkitty is a cat who is ;coutkitty.GetAge(); cout years old.n; kitty.Meow();9. 源程序运行的结果为: Derive1s Print() called. Derive2s Print() called.按要求完成下列操作,将类的定义补充完整。完成以下功能:(1)定义函数Print()为无值型纯虚函数。请在注释/*1*后添加适当的语句。(2)建立类Derive1的构造函数,请在注释/*2*后添加适当的语句。(3)完成类Derive2成员函数Print()的定义。请在注释/*3*后添加适当的语句。(4)定义类Derivel的对象指针d1,类Derive2的对象指针d2。其初始化分别为1和2。请在注释/*4*后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。#include using namespace std;class Basepublic:Base(int i)b=i;/*1*protected:int b;class Derive1 : public Basepublic:/*2*void Print()coutDerive1s Print() called.Print();void main()/*4*fun(d1);fun(d2);10. 源程序定义了表示人的类Human,但Human的定义并不完整,请按要求完成下列操作,将类Human的定义补充完成:(1)定义私有数据成员blood_type用于表示血型,血型为char型的数据。请在注释/*1*后添加适当的语句。(2)完成默认构造函数的定义,要求具有缺省值,缺省值为身高175体重70血型A。请在注释/*2*后添加适当的语句。(3)完成类外Human成员函数SetHuman的定义。请在注释/*3*后添加适当的语句。(4)在主函数中调用成员函数SetHuman,把对象d2的三个私有数据成员分别设定为身高172,体重65,血型为O。请在注释/*4*后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。#includeclass Human private: int stature, avoirdupois;/*1*public:/*2*: stature(st),avoirdupois(av),blood_type(bl) ;Human(Human &d1) : stature(d1.stature),avoirdupois(d1.avoirdupois),blood_type(d1.blood_type) ;int GetStature() return stature;int GetAvoirdupois()return avoirdupois;int GetBlood_type()return blood_type;void SetHuman(int st,int av,char bl); void Print();/*3*stature = st;avoirdupois = av;blood_type = bl;void Human:Print()cout Human:;cout stature . avoirdupois . blood_type endl;void main()Human d1(168, 59, B);Human d2;Human d3(d1);/*4*d1.Print();d2.Print();d3.Print();11.源程序定义了表示卡的类Card,以及Card的派生类EmployeeCard和IdCard。但类的定义并不完整。按要求完成下列操作,将类的定义补充完整。使程序运行结果为:卡名:工卡人名:黎明卡号:1669公司名:生意科技部门名:工艺部卡名:工卡人名:黎明卡号:1669公司名:生意科技部门名:工艺部民族:汉族性别:男住址:广州天河211号(1)完成EmployeeCard类的构造函数,要求所有数据成员的缺省值为空字符串(“)。请在注释/*1*后添加适当的语句。(2)完成IdCard类的构造函数。要求性别sex的缺省值为“男“。民族nation的缺省值为“汉族”,其他数据成员的缺省值为空字符串(” ”)。请在注释/*2*后添加适当的语句。(3)把EmployeeCard的成员函数visit设为Idcard的友元函数。请在注释/*3*后添加适当的语句。(4)补充EmployeeCard成员函数的类外定义。请在注释/*4*后添加适当的语句。(5)在main()函数中调用EmployeeCar成员函数visit访问IdCard类对象的数据成员。请在注释/*5*后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。#include #include class IdCard;class Card char cname34;/卡号char bname34; /人名char Id24; /卡号public:Card(char *cn=,char *bn=, char* id=) strcpy (cname,cn);strcpy (bname,bn);strcpy(Id,id); void print( );void Card:print( )cout卡号:cnameendl;cout人名:bnameendl;cout卡号:Idendl; class EmployeeCard:public Cardchar companyname40; /公司名称char section20; /部门public:/*1*strcpy(companyname,cmn);strcpy(section,sn);void print( );void visit(IdCard);void EmployeeCard:print( ) Card:print();cout公司名companynameendl部门sectionendl;class IdCard:public Cardchar sex4; /性别char nation20; /民族char address50;public:/*2*strcpy(address,ad);strcpy(sex,sx);strcpy(nation,na);void print( );/*3*;void IdCard:print( )Card:print();cout性别:sexendl民族nationendl住址addressendl;/*4* EmployeeCard:print(); /visit的函数体cout民族:x.nationendl;cout性别:x.sexendl;cout住址x.addressendl;void main(void) EmployeeCard b(工卡,黎明,1669,生意科技,工艺部);IdCard c(居民身份证,黎明广州天河211号);b.print( );/*5*12. 源程序定义了表示时间的类Time,但Time类定义并不完整。请按要求完成下列操作,将程序补充完整。(1)定义类Time的私有数据成员hours、minutes和seconds,它们都是int型的数据,分别表示时间的小时、分和秒。请在注释/ * 1 * 之后添加适当的语句。(2)完成类Time缺省构造函数的定义,该函数将数据成员hours、minutes和seconds的值初始化为0,请在注释/ * 2 * 之后添加适当的语句。(3)完成类Time带参构造函数的定义,该函数将数据成员hours、minutes和seconds的值分别初始化为参数h、m和s的值,请在注释/ * 3 * 之后添加适当的语句。(4)完成类Time中运算符+的重载,注意小时、分和秒在相加时的进位问题。请在注释/ * 4 * 之后添加适当的语句。程序输出结果如下:8:17:11注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#include class Time /* 1 *public:Time() /* 2 *seconds=0; Time(int h, int m,int s) /* 3 *minutes=m;seconds=s;Time operator +(Time&);void gettime();Time Time:operator +(Time& time) /* 4 *s=time.seconds+seconds;m=time.minutes+minutes+s/60;h=time.hours+hours+m/60;Time result(h,m%60,s%60);return result;void Time:gettime()couthours:minutes:secondsendl;void main( )Time t1(3,20,15),t2(4,56,56),t3;t3=t1+t2;t3.gettime();13. 源程序包含一个模板类Data,完成对数据的“+”操作,其中定义的类并不完整,按要求完成虾类操作,将类的定义补充完整。(1)完成Data类的重载运输符“+”的定义。请在注释/*1*后添加适当的语句。(2)完成制定字符串模板的数据定义,定义成员变量位固定大小为1024个字节的char型变量,请在注释/*2*后添加适当的语句。(3)完成字符串指针的赋值,请在注释/*3*后添加适当的语句。(4)完成字符串的追加,请在注释/*4*后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。#include #include templateclass Dataprivate:T data;public:Data(T t)data =t;/*1*data += t;return data;templateclass Dataprivate:/*2*public:Data(T t)/*3*T operator +(T t)/*4*return data;void main()Data obj1=10;cout (obj1 + 20) endl;Data obj=This is ;cout( obj + Test!)endl;14.源程序中含有一个类CGuest,这个类是一个数字游戏,游戏规则如下:(1)开始的时候程序随机生成一个数并保存起来,记为Taget,范围在10240之间,不包含1024和0.(2)然后输入一个数字,程序提示输入的数字大于Taget。则返回1,小于则返回-1,否则提示已经胜利,返回0,输入次数超过6次,则返回0,提示失败。其中定义的类并不完整,按要求完成以下操作,将类的定义补充完整。(1)增加私有整型成员变量Target和size,请在注释/*1*后添加适当的语句。(2)用时间做种子,初始化随机函数,请在注释/*2*后添加适当的语句。(3)获得01024之间,不包括0和1024的随机数。然后赋值给Taget,请在注释/*3*后添加适当的语句。(4)完成函数,判断输入过多次数则游戏失败,请在注释/*4*后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。#include #include #include using namespace std;class CGuestprivate:/*1*public:void Start()/*2* /*3* coutGame Start!endl;size = 0;int guest(int t)/*4* if( )coutGame Over! Target)coutsizetHigh!endl;return 1;else if( t = Target)coutsizetGame Win!endl;return 0;coutsizetLow!endl;return -1;void main()CGuest obj;coutinput 0 = QUITt;if( t=0)return; while( obj.guest(t) ); while(1);15. 源程序中的类Ctime是一个对时间进行加操作的类,按要求完成下列操作,将类的定义补充完整。完成以下功能:(1)完成构造函数的定义,对私有变量hour、sec、min的初始化,默认为0,请在注释/*1*后添加适当的语句。(2)完成重载运算符“+”,请在注释/*2*后添加适当的语句。(3)完成重载运算符“+=”函数,请在注释/*3*后添加适当的语句。(4)完成打印函数,输出内容如下,请在注释/*4*后添加适当的语句。hour=36min=6sec=1hour=57min=51sec=57注意:增加代码,或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。#include class CTimeprivate:int hour,sec,min;public:/*1*hour = h;min = m;sec = s;/*2*CTime tm;tm.sec = sec + t.sec;tm.min = tm.sec /60;tm.sec = tm.sec %60;tm.min += min + t.min;tm.hour = tm.min /60;tm.min = tm.min %60;tm.hour += hour + t.hour;return tm;operator +=(CTime& t)sec += t.sec;min += t.min + sec/60;sec %= 60;/*3*min %= 60;void print()/*4*coutmin = min endl;coutsec = sec endl;void main() CTime tm1(10,20,5);CTime tm2(23,45,56);CTime tm3;tm3 = tm1 + tm2;tm3.print();tm3 += tm2;tm3.print();16.源程序中定义了抽象类point和它的派生类line,但它们的定义并不完整。请按要求完成下列操作,将程序补充完整。(1)定义类point的构造函数,函数含参数i和j,它们都是int型数据,默认值都是0,用i和j分别将point的数据成员x0和y0初始化。请在注释/*1*之后添加适当的语句;(2)完成类point 的成员函数纯虚函数void set()和void draw()的定义,请在注释/*2*之后添加适当的语句;(3)添加类line的构造函数,函数含参数i、j、m和n,它们都是int型数据,默认值都是0,用i和j分别将point的数据成员x0和y0初始化。请在注释/*3*之后添加适当的语句。输出结果如下:line:set() called.注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#includeclass pointpublic:/*1*/*2*protected:int x0,y0;class line: public pointpublic:/*3* x1=m;y1=n;void set() coutline:set() called.n; void draw() coutset();17.源程序中的类MyClass在自定义的命名空间MyNameSpace中定义,然后实现了字符串操作符运算。这个运算删除第一次出现的指定字符串。Print函数打印类对象的字符串。按要求完成下列操作,将类的定义补充完整。完成以下功能:(1)定义私有变量

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论