课程设计(小题)_第1页
课程设计(小题)_第2页
课程设计(小题)_第3页
课程设计(小题)_第4页
课程设计(小题)_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

...v.1函数重载定义重载函数max3用于计算三个数的最大值〔参数类型分别为int和double〕。#include<iostream>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"<<max3(a,b,c)<<endl;doublea1,b1,c1; cout<<"Pleaseinputthreerealnumber:"; cin>>a1>>b1>>c1; cout<<"TheMaxofthreeis"<<max3(a1,b1,c1)<<endl;}2类的组合定义point类,数据成员包括x,y,成员函数包括构造函数,拷贝构造函数和析构函数,以及setx,getx,sety,gety四个属性函数。定义line类,端点由两个point类的对象组成,包括构造函数,析构函数以及计算线段长度的函数getlength。在main函数中,定义line的对象,并输出其长度。#include<iostream>#include<cmath>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"<<l1.getlength()<<endl;}3对象数组和函数定义student类,数据成员包括XXname和成绩score,成员函数包括构造函数,拷贝构造函数和析构函数。定义函数voidhighestscore(students[]),输出分数最高的学生XX和分数。在main函数中定义students[N],调用highestscore函数,输出分数最高的学生XX和分数。#include<iostream>#include<iomanip>#include<string>constintN=2;usingnamespacestd;classstudent{private:stringname;doublescore;public: student(){} student(stringn,doubles):name(n),score(s) {} student(student&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<N;i++) {if(max<s[i].score) { max=s[i].score; k=i; } } cout<<"Thenameis"<<s[k].name<<endl; cout<<"Highestscoreis"<<s[k].score<<endl; } ~student(){}friendostream&operator<<(ostream&os,students) { os<<<<""<<s.score<<endl;returnos; }friendistream&operator>>(istream&is,student&s) { is>>>>s.score;returnis; }};voidmain(){students[N];for(inti=0;i<N;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<iostream>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<iostream>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"<<c1.getarea()<<endl;}7虚基类定义vehicle类,数据成员包括私有的weight,公有的构造函数,析构函数和输出函数dispaly;从vehicle类公有派生car类,增加数据成员载人数personnum,公有的构造函数,析构函数和输出display;从vehicle类公有派生truck类,增加数据成员载货量laod,公有的构造函数,析构函数和输出函数display;从car类和truck类共同公有派生出pickup类,包括公有的构造函数和输出函数。在main函数中,定义pickup类对象,并输出其根本信息。#include<iostream>usingnamespacestd;classvehicle{private:doubleweight;public: vehicle(doublew):weight(w) {}voiddisplay() { cout<<"theweightofvehicleis"<<weight<<endl; } ~vehicle(){}};classcar:virtualpublicvehicle{private:intpersonnum;public: car(doubleww,intp):vehicle(ww),personnum(p) {}voiddisplay() {//vehicle::display(); cout<<"Thenumberofpersonis"<<personnum<<endl; } ~car(){}};classtruck:virtualpublicvehicle{private:doubleload;public: truck(doubleww,doublel):vehicle(ww),load(l) {}voiddisplay() {//vehicle::display(); cout<<"Theloadofthetruckis"<<load<<endl; } ~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<iostream>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<<c.num<<endl;returnos;}istream&operator>>(istream&is,counter&c){is>>c.num;returnis;}voidmain(){counterc1,c2; cin>>c1; c2=c1.operator++(0); cout<<"c1="<<c1; cout<<"c2="<<c2;}9虚函数和抽象类定义一个抽象类shape,包括公有的计算面积area函数,计算体积volume函数,输出根本信息函数printinfo〔三个函数均为纯虚函数〕。从shape公有派生point类,增加私有数据成员x,y坐标,以及构造函数,析构函数。从point公有派生circle类,增加私有数据成员半径r,以及构造函数,析构函数。从circle公有派生cylinder类,增加私有数据成员高度h,以及构造函数,析构函数。〔在定义三个派生类的过程中,自己考虑需要重定义哪个虚函数〕。在main函数中,定义shape类的指针,指向派生类的对象,输出三类对象的根本信息,面积,体积;〔将shape指针改为引用再尝试〕。#include<iostream>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="<<x<<",y="<<y<<endl; } ~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="<<r<<endl;//cout<<"circleareais"<<area()<<endl; } ~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="<<h<<endl;//cout<<"volumeis"<<volume()<<endl; } ~cylinder(){}};voidmain(){cylinderc1(2,3,4,5);shape*s; s=&c1; (*s).printinfo(); cout<<"circleareais"<<s->area()<<endl; cout<<"volumeis"<<(*s).volume()<<endl;}10模板设计一个堆栈的类模板Stack,在模板中用类型参数T表示栈中存放的数据,用非类型参数MAXSIZE代表栈的大小。#include<iostream>//constintMAXSIZE=5;usingnamespacestd;template<typenameT,intMAXSIZE>classstack{private:Ta[MAXSIZE];inttop;public: stack():top(0) {}voidpush(intx) {if(top==MAXSIZE) cout<<"thestackisfull"<<endl;else a[top]=x; top++; }Tpop() {if(top==0) cout<<"thestackisempty"<<endl;else top--;returna[top]; }};voidmain(){stack<int,5>s; s.push(1); cout<<s.pop()<<endl;;}11文件读写定义学生类数组,有N个人〔N=5〕,包括XX和语数外三名课的成绩,通过重载<<和>>运算符实现学生数组的文件读写。〔XX用stringname;〕#include<iostream>#include<fstream>#include<string>#include<iomanip>constintN=3;usingnamespacestd;classs

温馨提示

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

评论

0/150

提交评论