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

下载本文档

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

文档简介

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类,数据组员包含姓名name和成绩score,组员函数包含结构函数,拷贝结构函数和析构函数。定义函数voidhighestscore(students[]),输出分数最高学生姓名和分数。在main函数中定义students[N],调用highestscore函数,输出分数最高学生姓名和分数。#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),包含姓名和语数外三名课成绩,经过重载<<和>>运算符实现学生数组文件读写。(姓名用stringname;)#include<iostream>#include<fstream>#include<string>#include<iomanip>constintN=3;usingnamespacestd;classstudent{private

温馨提示

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

评论

0/150

提交评论