面向对象程序设计习题讲解.pdf
《面向对象程序设计习题讲解.pdf》由会员分享,可在线阅读,更多相关《面向对象程序设计习题讲解.pdf(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、试验1:熟识开发环境,简洁的VC+开发试验目的:熟识Visual C+6.0的开发环境;学习用Visual C+6.0编写标准的C+掌握台程序试验内容:课后习题:1.4,1.6,1.71.4 仿照本课件中的例题,编写下列C+语句:a)输出信息Enter two numbers”。b)将输入的两个整数读入变量a 与 b 中c)将变量a 和 b 的乘积赋给变量cd)打 印“a*b=,加上变量c 的值。1.6 下列代码打印出什么结果?cout*n*n*n*n*n;1.7 仿照本章的程序例子,编写一个完整程序,从键盘输入三个值,打印其和、平均数、最小值和最大值。试验报告要求:将习题1.7 的试验过程与
2、结果写到试验报告上。#include main()int a,b,c;cin ab c;int sum=a+b+c;coutna+b+c=nsumendl;cout naverage=n(double)sum/3endl;int min=a,max=a;if(minb)min=b;elsemax=b;if(minc)min=c;else if(maxc)max=c;coutvv“min=nm inendl;coutnmax=nmaxendl;试验2:从C到C+试验目的:把握C+对C的非面对对象特性的扩展。试验内容:1.以下这个简短的C+程序不能编译通过,为什么?#include main()i
3、nt a,b,c;coutnEnter two numbers:n;cinab;c=sum(a,b);coutnsum is:ncendl;return 0;sum(int a,int b)return a+b;2.回答问题:如下两个函数的原型是否等价:float fun(i nt a,f I oat b,char*c);float fun(i nt,fI oat,char*c);如下两个函数是否等价:i nt fun();i nt fun(v i od);如下两个函数是否等价:fun(int a);void fun(int a);3.分析下面程序的输出结果:#include int&f(in
4、t&i)(i+=10;return i;void main()int k=0;int&m=f(k);coutkendl;m=20;coutkendl;)4.建立一个被称为srootO的函数,返回其参数的二次根。重载srootO两次,让它分别返回整数、双精度数的二次根。(为了实际的计算二次根,可以使用标准库函数sq rtO).double sroot(int a)return sqrt(a);double sroot(double a)return sqrt(a);)5.编写一个程序,用C+风 格 的I/O从键盘中输入两个整数,然后显示以第一个数为底,其次个数为指数的结果。(例如用户输入2与4,
5、那么结果就是16)试验报告要求:将 第4题与第5题的源代码及试验结果写到试验报告上。main()int a,b;cinab;int c=l;for(int I=O;Ib,I+)c=a*c;coutcendl;试 验 3 名称:类的定义和使用试验目的:把握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性;把握对象的定义;理解类的成员的访问掌握的含义,公有、私有成员的区分;把握构造函数的含义与作用、定义方式和实现,能够依据要求正确定义和重载构造函数。能够依据给定的要求定义类并实现类的成员函数。试验内容:1、建立类box,box的构造函数被传递了三个double值,每一个 doubl
6、e值表示盒子的一条边长。用 box类计算立方体的体积,并存储在一个doub I e 变量中。在 box类中包含一个成员函数v o l(),用来显示每个box对象的体积。#includeclass box int width,height,length;public:box(double w,double h,double 1)width=w;height=h;length=l;double vol()double v=width*height*length;return v;main()box b(l,2,3);coutb.vol()endl;)2、定义一个类score,它含有私有数据成员en
7、g I i sh_score(英语分数)、公有成员函数setscore()和 pr intscore(),其中setscore()用来设 eng I ish_score 的值,printscore()用来输出eng I i sh_score的值。在主程序中第一类score的两个对象stu1和 stu 2,其英语成果分别为85.5 和 93.5,输出这两个分数。3、下面是一个计算器类的定义,请完成该类的实现:class counterint value;public:counter(int number);void increment。;/给原值加 1void decrement。;给原值减 1
8、int getvalue();/取得计数器值void print();显示计数器值);4、定义日期类型Date。要求有以下面成员:D可以设置日期;2)日期加一天操作;3)输出函数,输出格式为“XXXX年XX月XX日”。参考解答:#include class Dateprivate:int y,m,d;bool Isleap();public:Date()y=2000;m=l;d=l;void setDate(int year,int month,int day);void IncreDate();void print()cout0)y=year;elsey=2000;if(0month&mon
9、th12)m=month;elsem=l;if(m=l|m=31|m=51|m=7|m=8|m=10|m=12)&0day&day=31)d=day;else if(m=4|m=6|m=9|m=ll)&0day&day=30)d=day;else if(Isleap()&m=2&0vday&dayv=29)/润年 2 月 29 天d=day;else if(!(Isleap()&m=2&0vday&dayv=28)平年 2 月 28 天d=day;elseday=l;bool Date:Isleap()if(y%400=0|y%4=0&y%100!=0)return true;elseretu
10、rn false;void Date:IncreDate()d+;if(d=31&(m=4|m=6|m=9|m=ll)d=l;m+;if(m=l|m=3|m=5|m=7|m=8|m=10)&d=32)(d=l;m+;if(Isleap()&m=2&d=30)d=l;m=3;if(m=2&d=29&!Isleap()(d=l;m=3;if(m=12&d=32)m=l;d=l;y+;)main()Date tl;int yl,ml,dl;cin y l m l d l;tl.setDate(yl,ml,dl);tl.IncreDate();tl.print();tl.IncreDate();tl.
11、print();)5、定义一个同学类,其中有3个数据成员有学号、姓名、年龄,以及若干成员函数。同时编写主函数使用这个类,实现对同学数据的赋值和输出。要求:D使用成员函数实现对数据的输入、输出;2)使用构造函数和析构函数。参考解答:class studentprivate:char sno20;char*name;int age;public:student(char*s,char*n,int a);student();void setdata(char*s,char*n,int a);void print();试验要求1、写出程序,并调试程序,要给出测试数据和试验结果。2、整理上机步骤,总结阅
12、历和体会。3、(2题和3 题的源程序、测试数据和试验结果)写到试验报告上。第四章书面作业和上机作业题目书面作业:题目1 和题目5上机作业:题目1、2、3、4、5题目1:自定义一个简洁的复数类comp lx,如下:class complex double real;复数的实部double imag;/复数的虚部public:complex(double r=0,double i=0);void inCom();complex addCom(complex c2);调用者对象与对象c2相 力 口complex subCom(complex c2);complex mulCom(complex c2
13、);voidoutCom。;/输出调用者的有关数据(各重量);请完成各个成员函数,并编制主函数,说明comp lex类对象,对定义的各个成员函数进行调用,以验证它们的正确性。提示:(a+bi)(c+di)=ac+adi+bei+bdi2=(ac bd)4-(ad+bc)i题目2改错题目:#include class sam int a;int b;public:sam()a=l;b=l;sam(int a,int b)a=a;b=b;void plus(sam p)sam c;c.a=a+p.a;c.b=b+p.b;return c;void print()coutna=n a n nnb=n
14、bendl;);main()sam si;sam s2(2,2);s2.print();sam s3(4);s2.plus(sl);题目3:阅读程序,写出运行结果:#include class myclaint a,b;public:void set(int x,int y)a=x;b=y;mycla()cou t11 constructor!n*1;a=0;b=0;-mycla()cou t,destructor!,a=,a;cou tn,b=,b en d l;void show()cou tna=n a H b=,b en d l;);void main()mycla*pa=new my
15、cla3;for(int i=0;iset(90,88);for(i=0;i3;i+)pai.set(i*i+l,i*i+l);delete pl;for(i=0;i3;i+)pai.show();delete pa;题目4:阅读程序,写出运行结果:#include class sampublic:static int m;sam()m+;sam(int n)m=n;static void testm()m+;;int sam:m=0;int main()sam A;sam B(3);A.testm();sam:testm();coutnm=nB.mendl;return 0;)题目5:输入十
16、个整数而后反序输出的实现#include class myclaint arr10;/存放数据public:void myln();/输入数据的成员函数void myOut。;输出数据的成员函数);实现成员函数,编制主程序,调用成员函数,实现输入1。个整数,而后反序输出。补充:分数类参考答案:#include#include class fraction(int above;分子int below;分母intgcd();私有成员函数,负责求出分子、分母的最大公约数public:fraction(int,int);/带两个参数构造函数fraction(int);带1个参数的构造函数fractio
17、n();默认构造函数fraction add(fraction&);fraction sub(fraction&);void print(););fraction:fraction(int a,int b)(above=a;if(b!=O)保证分母不为0below=b;elsebelow=l;fraction:fraction(int a)above=a;below=l;fraction:fraction()above=0;below=l;int fraction:gcd()if(below0)above=-above;below=-below;)if(above=0)return 1;int
18、 a=abs(above),b=abs(below);int g=axyrh;实现从键盘读取4 个 doubIe类型的数据c.x=x;c.y=y;c.height=h;c.radius=r;void print(Column&c)()3、对于下面定义的类Test:class Test(private:int a;double b;;要求:a)为类Test的每个数据成员增加一个s e t函数,并使这些set函数都可以被连续调用;b)为类Test的每个数据成员增加一个g et函数。#include class Test(public:Test&set(int al)this-a=al;retum*
19、this;Test&set(double b)this-b=b;return*this;Test&get(int&al)al=this-a;return*this;Test&get(double&d)d=this-b;return*this;private:int a;double b;;main()int a;double b;cinab;Test t;t.set(a).set(b);cinab;coutna=n a n b=nbendl;t.get(b);coutn b=Hbendl;4、阅读程序,写出执行结果:#include class Aconst int const_v;stati
20、c const int static_const_v;public:A(int i);void print();;const int A:static_const_v=8;A:A(int i):const_v(i)(void A:print()(coutnconst_v=nconst_vendl;coutn static_const_v=nstatic_const_vendl;)void main()(A obj(123),obj2(66);obj.printQ;obj2.print();5、定义分数类Rational:要求:在 Private部分用整数表示分子和分母;用友元函数实现分数的加法
21、和减法,全部函数都返回Rational对象;供应public成员函数实现:依据a/b 的形式输出分数的值,a、b 为整数,分子和分母以简化形式表示。#include#include class fraction(int above;分子int below;/分母intgcd。;/私有成员函数,负责求出分子、分母的最大公约数public:fraction(int,int);/带两个参数构造函数fraction(int);/带 1个参数的构造函数fraction();默认构造函数friend fraction add(fraction a,fraction b);friend fraction s
22、ub(fraction a,fraction b);void printQ;6、下面是一个类的复合的例子:首先定义并实现了点类Point,然后定义了一个线段类Line,L in e以复合的方式使用了类Po i nt,类L i ne中表示端点的两个成员startPo i nt和endPo int都是类Point的对象。class Pointpublic:Point(double a=0,double b=0);构造函数Point(const Point&p);/拷贝构造函数void setPoint(double a,double b);/转变两个数据成员的值double getX()const
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 习题 讲解
限制150内