实验2类和对象 C++.docx

上传人:b****3 文档编号:24911150 上传时间:2023-06-02 格式:DOCX 页数:21 大小:153.45KB
下载 相关 举报
实验2类和对象 C++.docx_第1页
第1页 / 共21页
实验2类和对象 C++.docx_第2页
第2页 / 共21页
实验2类和对象 C++.docx_第3页
第3页 / 共21页
实验2类和对象 C++.docx_第4页
第4页 / 共21页
实验2类和对象 C++.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

实验2类和对象 C++.docx

《实验2类和对象 C++.docx》由会员分享,可在线阅读,更多相关《实验2类和对象 C++.docx(21页珍藏版)》请在冰豆网上搜索。

实验2类和对象 C++.docx

实验2类和对象C++

实验2类和对象

(1)

班级学号姓名成绩

一.实验目的

1. 掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性;

2.掌握类对象的定义,对象的初始化;

3.理解类的成员的访问控制的含义,公有、私有和保护成员的区别;

4.掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。

能够根据给定的要求定义类并实现类的成员函数;

二.实验内容

1.分析找出以下程序中的错误,说明错误原因,给出修改方案使之能正确运行。

#include

classone

{inta1,a2;

public:

one(intx1=0,x2=0);

};

voidmain()

{onedata(2,3);

cout<

cout<

}

2.分析以下程序的错误原因,给出修改方案使之能正确运行。

#include

classAmplifier{

floatinvol,outvol;

public:

Amplifier(floatvin,floatvout)

{invol=vin;outvol=vout;}

floatgain();

};

Amplifier:

:

floatgain(){returnoutvol/invol;}

voidmain()

{Amplifieramp(5.0,10.0);

cout<<"\n\nThegainis=>"<

}

3.定义盒子Box类,要求具有以下成员:

可设置盒子形状;可计算盒子体积;可计算盒子的表面积。

4.定义计数器类Counter。

要求具有以下成员:

计数器值;可进行增值和减值记数;可提供记数值。

5.编写一个程序计算两个给定的长方形的周长和面积。

6.编写一个程序,采用一个类求n!

并输出10!

的值。

7.编写一个程序,设计一个Cdate类,它应该满足下面的条件:

1)用这样的格式输出日期:

日-月-年;

2)输出在当前日期上加两天后的日期;

3)设置日期。

三、实验源程序、测试与结论

1.分析:

出错原因:

构造函数one(intx1=0,x2=0);没有给x1,x2付值。

(cout<

修改方案:

#include

classone

{inta1,a2;

public:

one(intx1=0,intx2=0)

{a1=x1;a2=x2;}

~one()

{cout<

cout<

}

};

voidmain()

{onedata(2,3);}

测试数据截图:

2.分析:

出错原因:

Amplifier:

:

floatgain()类体外定义格式错误,main()函数输出gain()错误。

修改方案:

#include

classAmplifier

{

floatinvol,outvol;

public:

Amplifier(floatvin,floatvout)

{invol=vin;outvol=vout;}

floatgain();

};

floatAmplifier:

:

gain(){returnoutvol/invol;}

voidmain()

{Amplifieramp(5.0,10.0);

cout<<"\n\nThegainis=>"<

}

测试数据截图:

3.代码:

方案一:

#include

#include

#definepi3.14159265358//声明常量pi为π

usingnamespacestd;

classBox//定义为box的类

{

private:

doubleheights;//若干成员

doublewidths;

doublelengths;

doublearea;

public:

voidcreate_data(doublelength,doubleheight,doublewidth=0)//数据创建函数

{

heights=height;

widths=width;

lengths=length;

}

doublecreat_area(intn)//底面积函数

{area=double(n)/(4*tan(pi/n))*lengths*lengths;//针对正多边形的面积公式

return2*area+n*lengths*heights;//返回表面积

}

doublecreat_bulk()//体积函数

{returnarea*heights;}

doublecreat_area_oblong()//普通的四边形的面积

{return2*(widths*lengths+heights*lengths+heights*widths);}

doublecreat_bulk_oblong()//普通四边形的体积

{returnheights*widths*lengths;}

};

voidmain()

{BoxT;

inti=1,a;

doublel,h,w;

cout<<"\t\t\t欢迎进入BOX计算应用"<

system("titleBOX盒子计算应用");

while(i)//循环

{

cout<<"请输入你要设置的盒子的形状(N>3:

底面的边数):

";

cin>>a;

if(a<4)//判断输入的正确性

{

cout<<'\a'<<'\a'<<'\a'<<"输入错误!

!

"<

cin.clear();//清除fail状态

cin.sync();//清除缓冲区

}

if(a==4)//进入普通底面为四边形的盒子的计算

{

cout<<"请输入该盒子的边长,宽,高:

";

cin>>l>>w>>h;

T.create_data(l,h,w);

cout<<"该盒子的表面积为:

"<

cout<<"该盒子的体积为:

"<

}

if(a>4)//进入底面积为正多边形的盒子的计算

{

cout<<"你当前选择为正多边体;请输入该盒子的边长和高:

";

cin>>l>>h;

T.create_data(l,h);

cout<<"底面为正"<

"<

cout<<"底面为正"<

"<

}

cout<<"是否继续(1or0):

";//循环

cin>>i;

}

system("pause");

}

测试数据截图:

方案二:

简单的盒子计算

#include

usingnamespacestd;

classBox//定义为box的类

{

private:

doubleheights;//若干成员

doublewidths;

doublelengths;

doublearea;

public:

voidcreate_data(doublelength,doublewidth,doubleheight)//数据创建函数

{

heights=height;

widths=width;

lengths=length;

}

doublecreat_area()//四边形的面积

{return2*(widths*lengths+heights*lengths+heights*widths);}

doublecreat_bulk()//四边形的体积

{returnheights*widths*lengths;}

};

voidmain()

{BoxT;

inti=1;

doublel,h,w;

cout<<"\t\t\t欢迎进入BOX计算应用"<

system("titleBOX盒子计算应用");

while(i)//循环

{

cout<<"请输入你要设置的盒子的形状(长,宽,高):

";

cin>>l>>w>>h;

T.create_data(l,w,h);

cout<<"面积为:

"<

cout<<"体积为:

"<

cout<<"是否继续(1or0):

";//循环

cin>>i;

}

system("pause");

}

4.代码:

方案一:

#include//声明头文件

#include//包含Sleep()用于起停顿作用

#include//包含kbhit函数

#include

usingnamespacestd;

classcounter//定义counter类

{

doublecount;

public:

voidcounte(doublec){count=c;}

voidvariation(inti);

voidagain();

};

voidcounter:

:

variation(inti)//

{cout<<"当输入变量后每隔1秒将自动增减,键盘按任意键可停止!

"<

cout<<"\t\t\t\t计数正在进行loading.....原始数据:

";

cout<

intj=0;

while(!

_kbhit())

{Sleep(1000);

cout<<'\r';

count+=i;

j++;

cout<

}

cout<<'\r'<<"已计数"<

"<

}

voidcounter:

:

again()

{

doubledata;intchoose,m,l=1;

cout<<"请输入你的初始化计数数据:

";

cin>>data;

counte(data);

cout<<"\t1:

计数增减量"<

重新开始"<

退出"<

cout<<"请选择功能:

";

cin>>choose;

if(choose>=0&&choose<=4&&!

cin.fail())

{

while(l)

{

switch(choose)

{

case1:

cout<<"请输入你增值的量:

";cin>>m;variation(m);cout<<"是否继续1or0:

";cin>>l;break;

case2:

cout<

case0:

l=0;exit(0);

}}}

else

{cout<<"输入有误!

"<<'\a'<

}

voidmain()

{intk;counterT;

system("title计算应用");

cout<<"\t\t\t\t计数器应用"<

while(k)

{

T.again();cout<<"1继续新的计算0退出:

";cin>>k;

}

system("pause");

}

测试数据截图:

方案二:

#include

#include

usingnamespacestd;

classCounter

{

staticintnum;

intdata[100];

public:

voidcreate();

voidshow();

};

intCounter:

:

num=0;

voidCounter:

:

create()

{inta,b;

cout<<"请输入你要增值与减值(减值输入负数)的个数;退出0:

";

cin>>a;

if(a>0)

{cout<<"请输入你的数值"<

for(inti=0;i

{cin>>b;data[i+num]=b;}

num+=a;

}

if((a<0&&num==0)||(a<0&&-a>num))

{cout<<"输入错误,计数器内没有可减的数值或超出可减范围!

"<

if(a<0&&num!

=0&&-a<=num)

{num+=a;

cout<<"你已减少了"<<-a<<"个数值"<

}

if(a==0)

{exit(0);}

}

voidCounter:

:

show()

{cout<<"现在有"<

for(inti=0;i

cout<

if(i<10)

cout<

}

voidmain()

{CounterT;intk=1;

system("title计数器");

while(k){

T.create();

T.show();

cout<

cout<<"继续1,否0:

";

cin>>k;

}

system("pause");

}

测试数据截图:

5.代码:

#include

usingnamespacestd;

classoblong//定义长方形的类

{

private:

floatwides,lengths;//成员周长和面积

public:

oblong(floatwide,floatlength)//构造函数

{wides=wide;

lengths=length;

}

~oblong()//析构函数

{cout<<"该长方形的周长为:

"<<2*(wides+lengths)<

"<

};

voidmain()

{floata,b;inti=0;

system("title长方形计算");

while(i<2)

{

cout<<"请输入第"<

";

cin>>a>>b;

oblong:

:

oblong(a,b);

i++;

cout<

}

system("pause");

}

测试数据截图:

6.代码:

#include

#include

usingnamespacestd;

classfact//定义阶乘的类

{longdoublefacts;

intnumbers;

public:

fact(intnumber)//构造函数

{numbers=number;

facts=1;

for(inti=1;i<=number;i++)

facts=facts*i;

}

~fact()//析构函数

{cout<

"<

};

voidmain()

{inta;

system("title阶乘计算");

cout<<"请输入阶乘的级数:

";

cin>>a;

fact:

:

fact(a);

system("pause");

}

测试数据截图:

7.代码:

#include

#include

#defineN2

usingnamespacestd;

classCdate

{

intyear,month,day,k;

public:

voidsetcalendar(intyears,intmonths,intdays)

{year=years;month=months;day=days;}

voidsetyear();

voidsetmonth();

voidputout()

{cout<<"两天后的日期是:

"<

intresult(){returnk;}

};

voidCdate:

:

setyear()

{if(year%4==0)

cout<

k=0;

if(month==12&&(day==31||day==30))

{year+=1;month=1;k=1;

if(day==30)

day=1;

else

day=2;}

}

voidCdate:

:

setmonth()

{if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)

{

for(inti=0;i

if(day<31)

day++;

else

{month+=1;day=1;}

}

if(month==4||month==6||month==9||month==11)

{for(inti=0;i

if(day<30)

day++;

else

{month+=1;day=1;}

}

if(year%4==0&&month==2)

{

for(inti=0;i

if(day<29)

day++;

else

{month=3;day=1;}

}

if(month==2&&year%4!

=0)

{for(inti=0;i

if(day<28)

day++;

else

{month=3;day=1;}

}

}

voidmain()

{CdateT;SYSTEMTIMEst;

inty,m,d,x=1;

system("title日期设定");

cout<<"\t\t\t\t日期设置"<

cout<<"当前的系统的日期为:

";

GetSystemTime(&st);

cout<

T.setcalendar(st.wYear,st.wMonth,st.wDay);

T.setyear();

if(!

T.result())

T.setmonth();

T.putout();

cout<

while(x)

{

cout<<"请设置你的日期[日-月-年]:

";

cin>>d>>m>>y;

T.setcalendar(y,m,d);

T.setyear();

if(!

T.result())

T.setmonth();

T.putout();

cout<

1or0:

";

cin>>x;

}

system("pause");

}

测试数据截图:

四、结论:

本次试验运用和复习了类,类对象的定义,对象的初始化;包括类的定义和成员函数的使用。

类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性;理解类的成员的访问控制的含义,公有、私有和保护成员的区别;构造函数和析构函数的含义与作用、定义方式和实现,根据给定的要求定义类并实现类的成员函数。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1