实验2__类和对象 C++_第1页
实验2__类和对象 C++_第2页
实验2__类和对象 C++_第3页
实验2__类和对象 C++_第4页
实验2__类和对象 C++_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、实验2 类和对象(1)班级 学号 姓名 成绩 一实验目的1  掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性;2 掌握类对象的定义,对象的初始化;3 理解类的成员的访问控制的含义,公有、私有和保护成员的区别;4 掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。能够根据给定的要求定义类并实现类的成员函数;二实验内容1分析找出以下程序中的错误,说明错误原因,给出修改方案使之能正确运行。#include<iostream.h>class one int a1,a2; public:one(int x1=0, x2=0

2、);void main()one data(2,3); cout<<data.a1<<endl; cout<<data.a2<<endl;2分析以下程序的错误原因,给出修改方案使之能正确运行。#include <iostream.h>class Amplifier float invol,outvol;public: Amplifier(float vin,float vout) invol=vin;outvol=vout; float gain(); Amplifier:float gain() return outvol/invo

3、l; void main() Amplifier amp(5.0,10.0); cout<<"nnThe gain is =>"<<gain()<<endl;3定义盒子Box类,要求具有以下成员:可设置盒子形状;可计算盒子体积;可计算盒子的表面积。4定义计数器类Counter。要求具有以下成员:计数器值;可进行增值和减值记数;可提供记数值。5编写一个程序计算两个给定的长方形的周长和面积。6编写一个程序,采用一个类求n!,并输出10!的值。7编写一个程序,设计一个Cdate类,它应该满足下面的条件:1)用这样的格式输出日期:日-月-年

4、;2)输出在当前日期上加两天后的日期;3)设置日期。三、实验源程序、测试与结论1. 分析:出错原因:构造函数one(int x1=0, x2=0);没有给x1,x2付值。(cout<<data.a1<<endl; cout<<data.a2<<endl;)main()函数中直接调用class one类的私有成员错误。修改方案:#include<iostream.h>class one int a1,a2; public: one(int x1=0,int x2=0) a1=x1; a2=x2; one() cout<<a1

5、<<endl; cout<<a2<<endl; ;void main() one data(2,3); 测试数据截图:2. 分析:出错原因:Amplifier:float gain() 类体外定义格式错误,main()函数输出gain()错误。修改方案:#include <iostream.h>class Amplifier float invol,outvol;public: Amplifier(float vin,float vout) invol=vin;outvol=vout; float gain();float Amplifier:g

6、ain() return outvol/invol; void main() Amplifier amp(5.0,10.0); cout<<"nnThe gain is =>"<<amp.gain()<<endl;测试数据截图:3.代码:方案一:#include<iostream>#include<math.h>#define pi 3/声明常量pi为using namespace std;class Box /定义为box的类private:double heights; /若干成

7、员double widths;double lengths;double area;public: void create_data(double length,double height,double width=0) /数据创建函数 heights=height; widths=width; lengths=length; double creat_area(int n) /底面积函数 area=double(n)/(4*tan(pi/n)*lengths*lengths; /针对正多边形的面积公式 return 2*area+n*lengths*heights; /返回表面积 doubl

8、e creat_bulk() /体积函数 return area*heights; double creat_area_oblong() /普通的四边形的面积 return 2*(widths*lengths+heights*lengths+heights*widths); double creat_bulk_oblong() /普通四边形的体积 return heights*widths*lengths;void main() Box T; int i=1,a; double l,h,w; cout<<"ttt欢迎进入BOX计算应用"<<endl;

9、 system("title BOX盒子计算应用"); while(i) /循环 cout<<"请输入你要设置的盒子的形状(N>3:底面的边数):" cin>>a; if(a<4) /判断输入的正确性 cout<<'a'<<'a'<<'a'<<"输入错误!"<<endl; /发出错误警告 cin.clear(); /清除fail状态 cin.sync(); /清除缓冲区 if(a=4) /进入

10、普通底面为四边形的盒子的计算 cout<<"请输入该盒子的边长,宽,高:" cin>>l>>w>>h; T.create_data(l,h,w); cout<<"该盒子的表面积为:"<<T.creat_area_oblong()<<endl; cout<<"该盒子的体积为:"<<T.creat_bulk_oblong()<<endl; if(a>4) /进入底面积为正多边形的盒子的计算 cout<<

11、"你当前选择为正多边体;请输入该盒子的边长和高:" cin>>l>>h; T.create_data(l,h); cout<<"底面为正"<<a<<"边形的盒子的表面积为:"<<T.creat_area(a)<<endl; cout<<"底面为正"<<a<<"边形的盒子的体积为:"<<T.creat_bulk()<<endl; cout<<&

12、quot;是否继续(1or0):" /循环 cin>>i; system("pause");测试数据截图:方案二:简单的盒子计算#include<iostream>using namespace std;class Box /定义为box的类private:double heights; /若干成员double widths;double lengths;double area;public: void create_data(double length,double width,double height) /数据创建函数 heights

13、=height; widths=width; lengths=length; double creat_area() /四边形的面积 return 2*(widths*lengths+heights*lengths+heights*widths); double creat_bulk() /四边形的体积 return heights*widths*lengths;void main() Box T; int i=1; double l,h,w; cout<<"ttt欢迎进入BOX计算应用"<<endl; system("title BOX盒

14、子计算应用"); while(i) /循环 cout<<"请输入你要设置的盒子的形状(长,宽,高):" cin>>l>>w>>h; T.create_data(l,w,h); cout<<"面积为:"<<T.creat_area()<<endl; cout<<"体积为:"<<T.creat_bulk()<<endl; cout<<"是否继续(1or0):" /循环 cin&g

15、t;>i; system("pause");4. 代码:方案一:#include <iostream> /声明头文件#include <windows.h> /包含Sleep() 用于起停顿作用#include <conio.h> /包含kbhit函数 #include<iomanip> using namespace std;class counter /定义counter类 double count; public: void counte(double c)count=c; void variation(int i

16、); void again();void counter:variation(int i) / cout<<"当输入变量后每隔1秒将自动增减,键盘按任意键可停止!"<<endl; cout<<"tttt计数正在进行loading.原始数据:" cout<<setprecision(15)<<count; int j=0;while(!_kbhit() Sleep(1000); cout<<'r' count+=i; j+; cout<<setprecisi

17、on(15)<<count;cout<<'r'<<"已计数"<<j<<"次,此时的数值为:"<<count<<endl; void counter:again() double data;int choose,m,l=1; cout<<"请输入你的初始化计数数据:" cin>>data; counte(data); cout<<"t 1:计数增减量"<<endl<

18、<"t 2:重新开始"<<endl<<"t 0:退出"<<endl; cout<<"请选择功能:" cin>>choose; if(choose>=0&&choose<=4&&!cin.fail() while(l) switch(choose) case 1: cout<<"请输入你增值的量:"cin>>m;variation(m);cout<<"是否继续1o

19、r0:"cin>>l;break; case 2:cout<<endl;again();l=0;break; case 0: l=0;exit(0); else cout<<"输入有误!"<<'a'<<endl; void main() int k;counter T; system("title 计算应用"); cout<<"tttt计数器应用"<<endl; while(k) T.again();cout<<&

20、quot;1继续新的计算0退出:"cin>>k; system("pause");测试数据截图:方案二:#include<iostream>#include<stdlib.h>using namespace std;class Counter static int num; int data100;public: void create(); void show();int Counter:num=0;void Counter:create() int a,b; cout<<"请输入你要增值与减值(减值输入

21、负数)的个数;退出0:" cin>>a; if(a>0) cout<<"请输入你的数值"<<endl; for(int i=0;i<a;i+) cin>>b; datai+num=b; num+=a; if(a<0&&num=0)|(a<0&&-a>num) cout<<"输入错误,计数器内没有可减的数值或超出可减范围!"<<endl; if(a<0&&num!=0&&-a&

22、lt;=num) num+=a; cout<<"你已减少了"<<-a<<"个数值"<<endl; if(a=0) exit (0); void Counter:show() cout<<"现在有"<<num<<"个数值"<<endl; for(int i=0;i<num;i+) cout<<datai<<'t' if(i<10)cout<<endl;void

23、 main() Counter T; int k=1; system("title 计数器"); while(k) T.create (); T.show (); cout<<endl; cout<<"继续1,否0:" cin>>k; system("pause");测试数据截图:5.代码:#include<iostream>using namespace std;class oblong /定义长方形的类private: float wides,lengths; /成员周长和面积pub

24、lic: oblong(float wide,float length) /构造函数 wides=wide; lengths=length;oblong() /析构函数 cout<<"该长方形的周长为:"<<2*(wides+lengths)<<endl<<"该长方形的面积为:"<<wides*lenlengths<<endl; ;void main() float a,b;int i=0; system("title 长方形计算"); while(i<2)

25、 cout<<"请输入第"<<i+1<<"个长方形的宽和长:" cin>>a>>b; oblong:oblong(a,b); i+; cout<<endl; system("pause");测试数据截图:6.代码:#include<iostream>#include<iomanip>using namespace std;class fact /定义阶乘的类 long double facts; int numbers; public: f

26、act(int number) /构造函数 numbers=number; facts=1; for(int i=1;i<=number;i+) facts=facts*i; fact() /析构函数 cout<<numbers<<"的阶乘为:"<<setprecision(20)<<facts<<endl;void main() int a; system("title 阶乘计算"); cout<<"请输入阶乘的级数:" cin>>a; fac

27、t:fact(a);system("pause");测试数据截图:7.代码:#include<iostream>#include <windows.h>#define N 2using namespace std;class Cdate int year,month,day,k; public: void setcalendar(int years,int months,int days) year=years;month=months;day=days; void setyear(); void setmonth(); void putout()

28、cout<<"两天后的日期是:"<<day<<"日-"<<month<<"月-"<<year<<"年"<<endl; int result()return k; ;void Cdate:setyear() if(year%4=0) cout<<year<<"年是闰年"<<endl; k=0;if(month=12&&(day=31|day=30) y

29、ear+=1;month=1;k=1; if(day=30) day=1; else day=2;void Cdate:setmonth() if(month=1|month=3|month=5|month=7|month=8|month=10|month=12) for(int i=0;i<N;i+) if(day<31) day+; else month+=1; day=1; if(month=4|month=6|month=9|month=11) for(int i=0;i<N;i+) if(day<30) day+; else month+=1; day=1; if(year%4=0&&month=2) for(int i=0;i<

温馨提示

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

评论

0/150

提交评论