版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 第八次C+上机实验第一部分题目:定义一个圆类Circle,有数据成员半径(double),设计计算圆的面积和周长的成员函数,写出主函数测试编写的类。-*/#include <iostream>using namespace std;const double PI=3.1415926;/*Program*/class Circledouble R;public:Circle ()R=0.0;Circle (double t)R=t;Circle();void setR(double t)R=t;double getArea()return (PI*R*R);double getPe
2、rimeter()return (2*PI*R);/* End */int main() Circle c1(5),c2; cout<<c1.getArea()<<endl; cout<<c1.getPerimeter()<<endl; c2.setR(10); cout<<c2.getArea()<<endl; cout<<c2.getPerimeter()<<endl; return 0;定义一个立方体类Box,有数据成员边长(double),设计计算立方体的体积和表面积的成员函数,写出主函数测
3、试编写的类。-*/#include <iostream>using namespace std;/*Program*/class Boxdouble s;public:Box()s=0;Box(double t)s=t;setS(double t)s=t;double getVolume()return s*s*s;double getSurfacearea()return 6*s*s ;/* End */int main() Box b1(2),b2; cout<<b1.getVolume()<<endl; cout<<b1.getSurfac
4、earea()<<endl; b2.setS(4); cout<<b2.getVolume()<<endl; cout<<b2.getSurfacearea()<<endl; return 0;定义一个日期类Date,包含年、月、日三个数据成员(int),定义带有3个参数的构造函数,以及一个求日期是当年的第几天的成员函数和输出日期的成员函数,日期的显示格式为年/月/日。编写主函数进行测试。(每年各月天数分别为31,28,31,30,31,30,31,31,30,31,30,31,闰年2月为29天,闰年的条件year%4=0&&
5、amp;year%100!=0)|year%400=0))-*/#include <iostream>using namespace std;/*Program*/class Dateint year,month,day;public:void show();Date(int a,int b,int c) year=a; month=b; day=c;Date ()year=0; month=0; day=0;voidSetD (int a,int b,int c)year=a; month=b; day=c;int dayy() int monthm12=31,29,31,30,
6、31,30,31,31,30,31,30,31;int p=0,s=0;for(;p<month-1;p+)s=s+monthmp;if(month<=2)return s+day;else if(year%4=0&&year%100!=0)|year%400=0)return s+day;else return s+day-1;int getDay()return dayy();/* End */void Date:show() cout<<year<<"/"<<month<<"/&qu
7、ot;<<day<<endl;int main() Date d1(2009,2,1),d2; /d1为2009年2月1日 d1.show(); cout<<d1.getDay()<<endl; d2.SetD(2012,3,1); /d2为2012年3月1日 d2.show();cout<<d2.getDay()<<endl;return 0;第二部分题目:编写一个程序,采用一个类求n!,并输出n!的值。输出结果见图:样张.JPG-*/#include <iostream>#include <cmath
8、>using namespace std;/*Program*/class facint q,p;public:fac(int t)q=t;intgetn()int y=1;int s=1;for(;y<q+1;y+)s=s*y;p=s;return q;void show();/* End */ void fac :show() cout<<" 阶乘为:"<<p<<endl;void main() int n; cout<<"请输入一个整数:" cin>>n; fac a(n);
9、cout<<a.getn()<<endl; a.show();题目:定义计数器类Counter。要求具有以下成员:计数器值:value;可进行增值计数的函数:add();可进行减值计数的函数:sub();可获取计数值的函数:get()。输出结果见图:样张.JPG-*/#include <iostream>using namespace std;/*Program*/class Counterdouble value;public :Counter()value=0;voidadd()value+;voidsub()value-;int get()return
10、 value;/* End */void main() int add=10,sub=7; Counter calc; for(int i=1;i<=add;i+) calc.add(); for(i=1;i<=sub;i+) calc.sub(); cout<<"0+"<<add<<"-"<<sub<<"="<<calc.get()<<endl;题目:定义一个描述二维坐标系中点对象的类Point,它具有下述成员函数:(1)double r
11、(); /计算极坐标的极半径(2)double theta(); /计算极坐标的极角(3)double distance(Point& p); /计算与点p的距离输出结果见图:样张.JPG-*/#include <iostream>#include <cmath>using namespace std;/*Program*/class Pointdouble x,y;public:Point (double a,double b)x=a; y=b;double r()return sqrt(x*x+y*y);double theta()return atan2(
12、y,x);double distance(Point& p)return sqrt(x-p.x)*(x-p.x)+(y-p.y)*(y-p.y);/* End */ void main() Point A(5,5),B(1,1); cout<<"极半径为"<<A.r()<<",极角为"<<A.theta()<<endl; cout<<"AB两点间距离为"<<A.distance(B)<<endl; 题目:定义一个点类Point,包括
13、x坐标和y坐标(int)。定义一个CRect类,代表一个矩形,要求CRect类中有代表矩形的左上角坐标(x1,y1)和右下角坐标(x2,y2)点类的对象,要求CRect类中有两个成员函数RectHeight()和RectWidth(),通过这两个函数能得到矩形的高和宽。(高和宽必须为非负数)输出结果见样张.JPG-*/#include <iostream>#include <cmath>using namespace std;/*Program*/class Point public:int x,y;Point (int a=0,int b=0 )x=a; y=b;vo
14、id setP(int c,int d)x=c;y=d;class CRectint x1,y1,x2,y2;public:CRect(Point p1,Point p2)x1=p1.x;y1=p1.y;x2=p2.x;y2=p2.y;CRect()x1=0;y1=0;x2=0;y2=0; void SetR(Point p3,Point p4)x1=p3.x;y1=p3.y;x2=p4.x;y2=p4.y;int RectHeight()if(x2-x1)*(x2-x1)>(y1-y2)*(y1-y2)return sqrt(x2-x1)*(x2-x1);else return sqr
15、t(y1-y2)*(y1-y2);int RectWidth()if(x2-x1)*(x2-x1)>(y1-y2)*(y1-y2)return sqrt(y1-y2)*(y1-y2);else return sqrt(x2-x1)*(x2-x1);/* End */int main() Point p1(1,9),p2(8,5),p3,p4; /p1-左上角坐标 1-x坐标 9-y坐标 p2-右下角坐标 8-x坐标 5-y坐标 CRect cr(p1,p2),cr1; cout<<cr.RectHeight()<<endl; /输出矩形高度 cout<<
16、;cr.RectWidth()<<endl; /输出矩形宽度 p3.setP(1,1);/改变p坐标 p4.setP(3,5); / 改变p4坐标 cr1.SetR(p3,p4); /p3-左上角坐标 p4-右下角坐标 cout<<cr1.RectHeight()<<endl; cout<<cr1.RectWidth()<<endl; return 0;第三部分:1、范例:编写一个函数,其原型为:void Index(int a, int n,int & sub),其功能是,在大小为n的数组a中,查找某个数sub,若找到,将其
17、下标存放在sub中,若没找到,将-1存放在sub中,在主调函数中通过判断值来判断数组中是否有该数。在这里,sub是引用类型的参数,但起返回值的作用。#include <iostream>using namespace std;const int m=5;void Index(int a,int n,int & sub);int main()int b25=2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97;int n=25,k,sub;for (k=0;k<m;k+)if(k=0
18、) cout<<"输入小于100的正整数:"<<endl;else cout<<"再输入小于100的正整数:"<<endl;cin>>sub;Index(b,n,sub);if(sub!=-1) cout<<"对应元素下标为"<<sub<<endl;else cout<<"未找到。"<<endl;return 0;void Index(int a,int n,int&sub)int i,k
19、=sub;sub=-1;for(i=0;i<n;i+)if(ai=k)sub=i;break;(1)修改主程序连续查找数字的循环语句,使程序能在输入特定数字后退出循环。cin>>sub;后插入if(sub=100) break;可使程序输入100时结束(2)将void Index(int a, int n,int & sub); 改为void Index(int a, int n,int sub);程序还能正确执行吗?试分析其结果并解释。不能正确运行,结果输出下标会与输入数相同,原因是改后正确的下标sub变成了临时变量,输出的是输入的全局变量sub。(3)在上述修改的
20、基础上如果结果不正确,怎样修改可以同样得到正确的结果。 可将int sub;的位置提到定义类之前,再将for语句里sub=i;改为:sub=i;。2、一个声明为返回引用的函数,既可以作为右值出现在赋值号的右边,也可以作为左值出现在赋值号的左边。下面是一个函数调用本身作为左值的例子。 #include <iostream>using namespace std ;int array=2,4,6,8,10;int& index(int i);int main()index(3)=16;for (int i=0;i<5;i+)cout<<index(
21、i)<<' 'cout<<endl;return 0;int &index(int i)return arrayi;修改程序使用非返回引用的函数实现上述功能。试分析两者之间的区别。修改为:#include <iostream>using namespace std ;int t;int array=2,4,6,8,10;int index(int i);int main()for (int i=0;i<5;i+)if (i=2) cout<<16<<' 'elsecout<<i
22、ndex(i)<<' 'cout<<endl;return 0;int index(int i)t=arrayi;return t;3、为矩形类定义复制构造函数。矩形类见主教材的例4.2.在rect.h 头文件中的类rect定义中加入以下代码:Rectangle(Rectangle & rec);在rect.cpp文件中添加以下代码:Rectangle:Rectangle(Rectangle & rec) left=rec.left;top=rec.top;right=rec.right ; bottom=rec.bottom ;/复制构
23、造函数在main( )函数中添加以下代码:Rectangle rect2(rect1);cout < < ”由复制构造函数生成的rect2:”<<< endl;rect2.Show( );这里的复制构造函数是默认的按成员语义定义的,可以不写,系统会自动提供。class Rectangle int left, top ;int right, bottom;public:Rectangle(Rectangle & rec);/添加Rectangle(int l=0, int t=0, int r=0, int b=0);Rectangle(); /析构函数,在
24、此函数体为空void Assign(int l, int t, int r, int b);void SetLeft(int t) left = t; / 以下四个函数皆为内联成员函数void SetRight( int t ) right = t;void SetTop( int t ) top = t;void SetBottom( int t ) bottom = t;void Show();#include <iostream>#include "rect.h"using namespace std;Rectangle:Rectangle(Rectangle & rec) left=rec.left;top=rec.top;right=rec.right ; bottom=rec.bottom ;/复制构造函数Rectangle:Rectangle(int l , int t, int r, int b) left = l; top = t;right = r; bottom = b; / 构造函数,带默认参数,缺省值为全0,在声明中指
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版脑膜炎早期症状介绍及护理建议
- 训练危险废物培训
- 逐步回归分析方法
- 遗址安防工程体系构建
- 病人安全转运方法
- 放射科PET-CT检查护理要点
- 肿瘤科肺癌化疗不良反应护理干预培训手册
- 中国神话故事人物介绍
- 2025版胆囊炎常见症状及护理调理技巧
- 事物介绍类文章核心要素
- 2024年北京昌平一中初二(上)期中数学试卷及答案
- 超星尔雅学习通《微生物与人类健康(复旦大学)》2024章节测试答案
- 学术道德与学术规范
- 中邮保险招聘笔试题库2024
- 城市作战案例研究报告
- 2024年基本级执法资格考试题库及解析(200题)
- HG∕T 5229-2017 热空气老化箱
- DL-T1362-2014输变电工程项目质量管理规程
- 2024年四川省成都市中考英语试卷(含官方答案)
- 第五章运动中的中枢控制
- 授权他人使用车辆委托书
评论
0/150
提交评论