课程设计小题.docx
- 文档编号:10192809
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:18
- 大小:19.47KB
课程设计小题.docx
《课程设计小题.docx》由会员分享,可在线阅读,更多相关《课程设计小题.docx(18页珍藏版)》请在冰豆网上搜索。
课程设计小题
1函数重载
定义重载函数max3用于计算三个数的最大值(参数类型分别为int和double)。
#include
usingnamespacestd;
intmax3(intx,inty,intz)
{
return((x>y?
x:
y)>(x>z?
x:
z)?
(x>y?
x:
y):
(x>z?
x:
z));
}
doublemax3(doublex,doubley,doublez)
{
return((x>y?
x:
y)>(x>z?
x:
z)?
(x>y?
x:
y):
(x>z?
x:
z));
}
voidmain()
{
inta,b,c;
cout<<"Pleaseinputthreeinteger:
";
cin>>a>>b>>c;
cout<<"TheMaxofthreeis"< doublea1,b1,c1; cout<<"Pleaseinputthreerealnumber: "; cin>>a1>>b1>>c1; cout<<"TheMaxofthreeis"< } 2类的组合 定义point类,数据成员包括x,y,成员函数包括构造函数,拷贝构造函数和析构函数,以及setx,getx,sety,gety四个属性函数。 定义line类,端点由两个point类的对象组成,包括构造函数,析构函数以及计算线段长度的函数getlength。 在main函数中,定义line的对象,并输出其长度。 #include #include usingnamespacestd; classpoint { private: doublex,y; public: point(){} point(doublex,doubley): x(x),y(y) {} voidsetx(doublexx) { x=xx; } doublegetx(){returnx;} voidsety(doubleyy) { y=yy; } doublegety(){returny;} point(point&p) { x=p.x; y=p.y; } ~point(){} }; classline { private: pointa,b; public: line(pointaa,pointbb): a(aa),b(bb) {} doublegetlength() { doublelength; length=sqrt(pow((a.getx()-b.getx()),2)+pow((a.gety()-b.gety()),2)); returnlength; } ~line(){} }; voidmain() { pointp1(2,3); pointp2(5,6); linel1(p1,p2); cout<<"Thelengthofthelineis"< } 3对象数组和函数 定义student类,数据成员包括姓名name和成绩score,成员函数包括构造函数,拷贝构造函数和析构函数。 定义函数voidhighestscore(students[]),输出分数最高的学生姓名和分数。 在main函数中定义students[N],调用highestscore函数,输出分数最高的学生姓名和分数。 #include #include #include constintN=2; usingnamespacestd; classstudent { private: stringname; doublescore; public: student(){} student(stringn,doubles): name(n),score(s) {} student(student&s) { name=s.name; score=s.score; } /*voidsetname(stringnn) { name=nn; } stringgetname(){returnname;} voidsetscore(doubless) { score=ss; } doublegetscore(){returnscore;}*/ voidhighestscore(students[]) { intk=0; doublemax; max=s[0].score; for(inti=1;i { if(max { max=s[i].score; k=i; } } cout<<"Thenameis"< cout<<"Highestscoreis"< } ~student(){} friendostream&operator<<(ostream&os,students) { os< returnos; } friendistream&operator>>(istream&is,student&s) { is>>s.name>>s.score; returnis; } }; voidmain() { students[N]; for(inti=0;i { cin>>s[i]; } s[N].highestscore(s); } 4静态数据成员 设计一个书类,能够保存书名、定价,所有书的本数和总价。 (将书名和定价设计为普通数据成员;将书的本数和总价设计为静态数据成员) class book{ private: double priece; string name; static int num; static double total; }; int book: : num; double book: : total; 5动态内存分配 定义point类,数据成员包括x,y,成员函数包括构造函数,拷贝构造函数和析构函数,以及setx,getx,sety,gety四个属性函数。 在main函数中,用new和delete分配和释放N个point的数组。 (N是const常量,N=10) #include constintN=10; usingnamespacestd; classpoint { private: intx,y; public: point(){} point(intx,inty): x(x),y(y) {} point(point&p) { x=p.x; y=p.y; } voidsetx(intxx) { x=xx; } intgetx(){returnx;} voidsety(intyy) { y=yy; } intgety(){returny;} ~point(){} }; voidmain() { point*p=newpoint[N]; delete[]p; } 6类的继承 定义一个point类,包含私有数据成员x,y,成员函数包括无参构造函数,带参构造函数,set和get属性函数。 定义circle类,从point类公有派生,增加数据成员半径r,成员函数包括无参构造函数,带参构造函数,计算面积函数getarea。 在main函数中定义一个circle的对象,并计算其面积。 #include usingnamespacestd; classpoint { private: doublex,y; public: point(){} point(doublex,doubley): x(x),y(y) {} voidsetx(doublexx) { x=xx; } doublegetx(){returnx;} voidsety(doubleyy) { y=yy; } doublegety(){returny;} ~point(){} }; classcircle: publicpoint { private: doubler; public: circle(){} circle(doublex,doubley,doubler): point(x,y),r(r) {} doublegetarea() { return3.14*r*r; } }; voidmain() { circlec1(2,3,4.5); cout<<"Theareaofcircleis"< } 7虚基类 定义vehicle类,数据成员包括私有的weight,公有的构造函数,析构函数和输出函数dispaly;从vehicle类公有派生car类,增加数据成员载人数personnum,公有的构造函数,析构函数和输出display;从vehicle类公有派生truck类,增加数据成员载货量laod,公有的构造函数,析构函数和输出函数display;从car类和truck类共同公有派生出pickup类,包括公有的构造函数和输出函数。 在main函数中,定义pickup类对象,并输出其基本信息。 #include usingnamespacestd; classvehicle { private: doubleweight; public: vehicle(doublew): weight(w) {} voiddisplay() { cout<<"theweightofvehicleis"< } ~vehicle(){} }; classcar: virtualpublicvehicle { private: intpersonnum; public: car(doubleww,intp): vehicle(ww),personnum(p) {} voiddisplay() { //vehicle: : display(); cout<<"Thenumberofpersonis"< } ~car(){} }; classtruck: virtualpublicvehicle { private: doubleload; public: truck(doubleww,doublel): vehicle(ww),load(l) {} voiddisplay() { //vehicle: : display(); cout<<"Theloadofthetruckis"< } ~truck(){} }; classpickup: publiccar,publictruck { public: pickup(doublew1,intp,doublew2,doublel,doublew): car(w1,p),truck(w2,l),vehicle(w) {} voiddisplay() { vehicle: : display(); car: : display(); truck: : display(); } ~pickup(){} }; voidmain() { pickupp1(211,2,200,170,100); p1.display(); } 8运算符重载,友元函数和this指针 定义一个计数器类counter,具备自增,自减功能(前后缀);输入输出>>,<<功能。 在main函数里测试该类。 #include usingnamespacestd; classcounter { private: doublenum; public: counter(){} counter(doublen): num(n) {} counteroperator++() { ++num; return*this; } counteroperator--() { --num; return*this; } counteroperator++(int) { counternn; nn.num=this->num; num++; returnnn; } counteroperator--(int) { counternn; nn.num=this->num; num--; returnnn; } friendostream&operator<<(ostream&os,counterc); friendistream&operator>>(istream&is,counter&c); }; ostream&operator<<(ostream&os,counterc) { os< returnos; } istream&operator>>(istream&is,counter&c) { is>>c.num; returnis; } voidmain() { counterc1,c2; cin>>c1; c2=c1.operator++(0); cout<<"c1="< cout<<"c2="< } 9虚函数和抽象类 定义一个抽象类shape,包括公有的计算面积area函数,计算体积volume函数,输出基本信息函数printinfo(三个函数均为纯虚函数)。 从shape公有派生point类,增加私有数据成员x,y坐标,以及构造函数,析构函数。 从point公有派生circle类,增加私有数据成员半径r,以及构造函数,析构函数。 从circle公有派生cylinder类,增加私有数据成员高度h,以及构造函数,析构函数。 (在定义三个派生类的过程中,自己考虑需要重定义哪个虚函数)。 在main函数中,定义shape类的指针,指向派生类的对象,输出三类对象的基本信息,面积,体积;(将shape指针改为引用再尝试)。 #include usingnamespacestd; classshape { public: virtualdoublearea()=0; virtualdoublevolume()=0; virtualvoidprintinfo()=0; }; classpoint: publicshape { private: intx,y; public: point(intx,inty): x(x),y(y) {} voidprintinfo() { cout<<"x="< } ~point(){} }; classcircle: publicpoint { private: doubler; public: circle(intx,inty,doubler): point(x,y),r(r) {} doublearea() { return3.14*r*r; } voidprintinfo() { point: : printinfo(); cout<<"r="< //cout<<"circleareais"< } ~circle(){} }; classcylinder: publiccircle { private: doubleh; public: cylinder(intx,inty,doubler,doubleh): circle(x,y,r),h(h) {} doublearea() { returncircle: : area(); } doublevolume() { returncircle: : area()*h; } voidprintinfo() { circle: : printinfo(); cout<<"h="< //cout<<"volumeis"< } ~cylinder(){} }; voidmain() { cylinderc1(2,3,4,5); shape*s; s=&c1; (*s).printinfo(); cout<<"circleareais"< cout<<"volumeis"<<(*s).volume()< } 10模板 设计一个堆栈的类模板Stack,在模板中用类型参数T表示栈中存放的数据,用非类型参数MAXSIZE代表栈的大小。 #include //constintMAXSIZE=5; usingnamespacestd; template classstack { private: Ta[MAXSIZE]; inttop; public: stack(): top(0) {} voidpush(intx) { if(top==MAXSIZE) cout<<"thestackisfull"< else a[top]=x; top++; } Tpop() { if(top==0) cout<<"thestackisempty"< else top--; returna[top]; } }; voidmain() { stack s.push (1); cout< } 11文件读写 定义学生类数组,有N个人(N=5),包括姓名和语数外三名课的成绩,通过重载<<和>>运算符实现学生数组的文件读写。 (姓名用stringname;) #include #include #include #include constintN=3; usingnamespacestd; classstudent { private: charname[10]; doubleChinese,Math,English; public: student(){} student(charn[],doublec,doublem,doublee): Chinese(c),Math(m),English(e) { strcpy_s(name,n); } friendostream&operator<<(ostream&os,students) { os< returnos; } friendistream&operator>>(istream&is,student&s) { is>>s.name>>s.Chinese>>s.Math>>s.English; returnis; } }; voidmain() { students[N]; fstreamfile; file.open("d: \\student.txt",ios_base: : out); if(file.is_open()) { for(inti=0;i { cin>>s[i]; file< } file.close(); } else cout<<"filecan'tbeopened! "< students1[N]; fstreamfile1("d: \\student.txt",ios_base: : in); if(file1.is_open()) { for(inti=0;i { file1>>s1[i]; cout< } file1.close(); } else c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计