C++实验代码.docx

上传人:b****5 文档编号:28226398 上传时间:2023-07-09 格式:DOCX 页数:74 大小:175.80KB
下载 相关 举报
C++实验代码.docx_第1页
第1页 / 共74页
C++实验代码.docx_第2页
第2页 / 共74页
C++实验代码.docx_第3页
第3页 / 共74页
C++实验代码.docx_第4页
第4页 / 共74页
C++实验代码.docx_第5页
第5页 / 共74页
点击查看更多>>
下载资源
资源描述

C++实验代码.docx

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

C++实验代码.docx

C++实验代码

实验项目一C++程序设计初步题目

在VisualStudio2008平台上,用C++语言创建一个控制台应用程序,当其运行时在屏幕上显示“Hello,World!

”(参考P15)

实验项目二类与对象

(1)有以下程序:

#include

usingnamespacestd;

classTime//定义Time类

{public:

//数据成员为公用的

inthour;

intminute;

intsec;

};

intmain()

{Timet1;//定义t1为Time类对象

cin>>t1、hour;//输入设定的时间

cin>>t1、minute;

cin>>t1、sec;

cout<

”<

”<

return0;

}

改写程序,要求:

①将数据成员改为私有的;

②将输入与输出的功能改为由成员函数实现;

③在类体内定义成员函数。

然后编译与运行程序。

请分析什么成员应指定为公用的?

什么成员应指定为私有的?

什么函数最好放在类中定义?

什么函数最好放在类外定义?

代码:

/实验_1、cpp:

定义控制台应用程序的入口点。

#include"stdafx、h"

#include

usingnamespacestd;

classTime//定义Time类

{

private:

//数据成员为私有的

inthour;

intminute;

intsec;

public:

voidInput()

{

cout<<"请输入时、分、秒:

"<

cin>>hour>>minute>>sec;

}

voidprint()

{

cout<<"时间为:

"<

cout<

"<

"<

}

};

int_tmain(intargc,_TCHAR*argv[])

{

Timet1;

t1、Input();

t1、print();

return0;

}

结果:

(2)修改实验1中的学生成绩管理系统,建立类OurClass,实现班级学生信息的输入,排序与输出。

要求:

添加构造函数,初始化班级名称,将成员函数定义在类外,类的定义单独放在头文件中。

代码:

头文件:

#defineN3

structStudent

{

longlNum;

charsName[12];

floatcGrade;

floatccGrade;

floatfGrade;

};

classOurClass

{

private:

charcName[20];

Studentstu[N];

public:

OurClass:

:

OurClass();

voidInput();

voidprint();

voidSort();

};

、cpp:

//学生成绩管理、cpp:

定义控制台应用程序的入口点。

#include"stdafx、h"

#include"iostream"

usingnamespacestd;

#include"student、h"

intmain()

{

OurClassc1;

c1、Input();

c1、Sort();

cout<

"<

c1、print();

return0;

}

OurClass:

:

OurClass()//(charNme[20])

{

cout<<"请输入班级名称:

"<

cin>>cName;

}

voidOurClass:

:

Input()

{

inti;

cout<<"输入"<

for(i=0;i

{

cin>>stu[i]、lNum>>stu[i]、sName>>stu[i]、cGrade>>stu[i]、ccGrade;

stu[i]、fGrade=stu[i]、cGrade+stu[i]、ccGrade;

}

}

voidOurClass:

:

Sort()

{

inti,j;

StudentTemp;

for(i=0;i

{

for(j=i+1;j

{

if(stu[i]、fGrade

{

Temp=stu[i];

stu[i]=stu[j];

stu[j]=Temp;

}

}

}

}

voidOurClass:

:

print()

{

inti;

cout<<"班级名称:

";

cout<

cout<<"学号姓名成绩"<

for(i=0;i

cout<

}

结果:

(3)需要求3个长方柱的体积(用对象数组完成),请编一个基于对象的程序。

数据成员包括length(长)、width(宽)、height(高)。

要求用成员函数实现以下功能:

①由键盘分别输入3个长方柱的长、宽、高;

②计算长方柱的体积;

③输出3个长方柱的体积。

请编程序,上机调试并运行。

完成后,将其中的数组名当常量指针用。

代码:

头文件:

classcube

{

private:

doublelength;

doublewidth;

doubleheight;

public:

cube();

voidinput();

voidprint();

doublevolume();

};

//求长方柱的体积、cpp:

定义控制台应用程序的入口点。

#include"stdafx、h"

#include"iostream"

usingnamespacestd;

#include"cube、h"

voidcube:

:

input()

{

doublelength;

doublewidth;

doubleheight;

}

cube:

:

cube()

{cout<<"请输入长方柱的长、宽、高:

"<

cin>>length>>width>>height;

}

doublecube:

:

volume()

{

returnlength*width*height;

}

voidcube:

:

print()

{

cout<<"长方柱的体积为:

"<

}

intmain()

{

cubec[3];

for(inti=0;i<3;i++)

{

c[i]、input();

(c+i)->print();

}

return0;

}

结果:

(4)友元函数

(1)有以下程序:

#include

usingnamespacestd;

classDate;//对Date类的提前引用声明

classTime//定义Time类

{public:

Time(int,int,int);

voiddisplay(Date&);//display就是成员函数,形参就是Date类对象的引用

private:

inthour;

intminute;

intsec;

};

classDate//声明Date类

{public:

Date(int,int,int);

friendvoidTime∷display(Date&);

//声明Time中的display函数为友元成员函数

private:

intmonth;

intday;

intyear;

};

Time∷Time(inth,intm,ints)//类Time的构造函数

{hour=h;

minute=m;

sec=s;

}

voidTime∷display(Date&d)//display的作用就是输出年、月、日与时、分、秒

{cout<

//引用Date类对象中的私有数据

cout<

”<

”<

}

Date∷Date(intm,intd,inty)//类Date的构造函数

{month=m;

day=d;

year=y;

}

intmain()

{Timet1(10,13,56);//定义Time类对象t1

Dated1(12,25,2004);//定义Date类对象d1

t1、display(d1);//调用t1中的display函数,实参就是Date类对象d1

return0;

}

请读者分析与运行此程序,注意友元函数Time:

:

display的作用。

将程序中的display函数不放在Time类中,而作为类外的普通函数,然后分别在Time与Date类中将display声明为友元函数。

在主函数中调用display函数,display函数分别引用Time与Date两个类的对象的私有数据,输出年、月、日与时、分、秒。

修改后上机调试与运行。

代码:

//实验_4、cpp:

定义控制台应用程序的入口点。

#include"stdafx、h"

#include

usingnamespacestd;

classDate;//对Date类的提前引用声明

classTime//定义Time类

{

friendvoiddisplay(Date&,Time&);

public:

Time(int,int,int);

//voiddisplay(Date&);//display就是成员函数,形参就是Date类对象的引用

private:

inthour;

intminute;

intsec;

};

classDate//声明Date类

{

public:

Date(int,int,int);

friendvoiddisplay(Date&,Time&);

public:

intmonth;

intday;

intyear;

};

Time:

:

Time(inth,intm,ints)//类Time的构造函数

{

hour=h;

minute=m;

sec=s;

}

voiddisplay(Date&d,Time&t1)//display变为普通函数

{

cout<

//引用Date类对象中的私有数据

cout<

"<

"<

}

Date:

:

Date(intm,intd,inty)//类Date的构造函数

{month=m;

day=d;

year=y;

}

int_tmain(intargc,_TCHAR*argv[])

{

Timet1(10,13,56);//定义Time类对象t1

Dated1(12,25,2004);//定义Date类对象d1

display(d1,t1);

return0;

}

结果:

实验项目三函数重载

(1)编写程序,实现普通函数重载练习。

求三角型,矩形,圆形的面积与周长,其中面积函数与周长函数重载。

代码:

classZhc//Area、h

{

private:

doublea,b,c;

doubler;

public:

Zhc(doublea,doubleb,doublec);

Zhc(doublea,doubleb);

Zhc(doubler);

};

classArea//Area、h

{

private:

doublea,b,c;

doubler;

public:

Area(doublea,doubleb,doublec);

Area(doublea,doubleb);

Area(doubler);

};

//三角形等面积及周长、cpp:

定义控制台应用程序的入口点。

#include"stdafx、h"

#include"iostream"

usingnamespacestd;

#include"Area、h"

#include"Zhc、h"

#include"math、h"

int_tmain(intargc,_TCHAR*argv[])

{

doublea,b,c;

doubler;

cout<<"请输入三角形的三条边a,b,c:

"<

cin>>a>>b>>c;

cout<<"三角形的面积为:

"<

cout<<"三角形的周长为:

"<

cout<<"请输入矩形的两条边a,b:

"<

cin>>a>>b;

cout<<"矩形的面积为:

"<

cout<<"矩形的周长为:

"<<2*(a+b)<

cout<<"请输入圆的半径:

"<

cin>>r;

cout<<"圆的面积为:

"<

cout<<"圆的周长为:

"<<2*r*3、14<

}

doubleArea(doublea,doubleb,doublec)

{

returnsqrt((a+b+c)/2*((a+b+c)/2-a)*((a+b+c)/2-b)*((a+b+c)/2-c));

}

doubleArea(doublea,doubleb)

{

returna*b;

}

doubleArea(doubler)

{

returnr*r*3、14;

}

doubleZhc(doublea,doubleb,doublec)

{

returna+b+c;

}

doubleZhc(doublea,doubleb)

{

return2*(a+b);

}

doubleZhc(doubler)

{

return2*r*3、14;

}

结果:

(2)编写程序,(注意复数构造函数的重载及构造函数分带默认参数与不带默认参数的情况)

求两个复数的与,复数考虑有实部与虚部、无实部、无虚部三种情况

代码:

头文件:

#defineN2

classComplex

{

private:

doublereal;

doubleimag;

public:

Complex(doubler=0,doublei=0);

voidInput();

voidPrint();

friendComplexAdd(Complexc1,Complexc2);

};

//复数相加、cpp:

定义控制台应用程序的入口点。

#include"stdafx、h"

#include"iostream"

usingnamespacestd;

#include"complex、h"

intmain()

{

Complextotal=0;

Complexc[N];

for(intm=0;m

{

cout<<"请输入第"<

";

c[m]、Input();

total=Add(total,c[m]);

}

cout<<"复数相加的结果就是:

";

total、Print();

return0;

}

Complex:

:

Complex(doubler,doublei)

{

real=r;

imag=i;

}

voidComplex:

:

Input()

{

cin>>real>>imag;

cout<

if(imag>0)

{

cout<<"+";

cout<

}

elseif(imag==0)

cout<<""<

}

ComplexAdd(Complexc1,Complexc2)

{

c1、real=c1、real+c2、real;

c1、imag=c1、imag+c2、imag;

returnc1;}

voidComplex:

:

Print()

{

cout<

if(imag>0)

cout<<"+";

if(imag!

=0)

cout<

}

结果:

(3)以上实验做完,练习书上的例题。

实验项目四常量与引用

1、有关const的上机内容:

(1)、运行课本中的例4-5,分析查瞧,然后逐个将程序中的const删除,分析运行的结果;

代码:

//student、h

#ifndefSTUDENT_H_

#defineSTUDENT_H_

classStudent{

intNo;

charName[20];

public:

Student();

intGetNo();

char*GetName();

};

#endif

//student、cpp

#include"stdafx、h"

#include

#include"student、h"

Student:

:

Student(){

No=1;

strcpy(Name,"wang");

}

intStudent:

:

GetNo(){

returnNo;

}

char*Student:

:

GetName(){

returnName;

}

//例_5、cpp:

定义控制台应用程序的入口点。

#include"stdafx、h"

#include"student、h"

intmain()

{

Students1;

s1、GetNo();

s1、GetName();

Students2;

s2、GetNo();

//s2、GetName();

return0;

}

结果:

(2)、运行课本中的例4-10与例4-11,对比两个程序中指针与引用。

例4-10:

//例_10、cpp:

定义控制台应用程序的入口点。

#include"stdafx、h"

#include

usingnamespacestd;

voidchangpointer1(int**x)

{

(*x)++;

**x=1;

}

voidchangpointer2(int*&x)

{

x++;

*x=2;

}

intmain()

{

intiData[3]={0};

int*p=iData;

inti;

for(i=0;i<3;i++)

cout<<"iData["<

cout<

changpointer1(&p);

for(i=0;i<3;i++)

cout<<"iData["<

cout<

p=iData;

changpointer2(p);

for(i=0;i<3;i++)

cout<<"iData["<

cout<

return0;

}

结果:

例4-11:

//例_11、cpp:

定义控制台应用程序的入口点。

#include"stdafx、h"

#include

usingnamespacestd;

voids(int*x,int*y)

{

intz;

z=*x;

*x=*y;

*y=z;

}

voids(int&x,int&y)

{

intz;

z=x;

x=y;

y=z;

}

intmain()

{

inti=10,j=20;

intm=10,n=20;

s(&i,&j);

s(m,n);

cout<<"i="<

cout<<"m="<

return0;

}

结果:

2、有关拷贝构造函数

(1)比较例4-15与例4-16,理解拷贝构造函数的作用。

例4-15:

//例-15、cpp:

定义控制台应用程序的入口点。

#include"stdafx、h"

#include

usingnamespacestd;

classStudent

{

staticintnumber;

public:

Student()

{

number++;

show("Student");

}

~Student()

{

number--;

show("~Student");

}

staticvoidshow(constchar*str=NULL)

{

if(str)

cout<

";

cout<<"number="<

}

};

intStudent:

:

number=0;

Studentf(Studentx)

{

x、show("xinsidef()");

returnx;

}

int_tmain(intargc,_TCHAR*argv[])

{

Studenth1;

Studenth2=f(h1);

Student:

:

show("aftercallf()");

return0;

}

结果:

例4-16:

//例-16修改例-15、cpp

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

当前位置:首页 > 工作范文 > 演讲主持

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

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