C++实验代码.docx
《C++实验代码.docx》由会员分享,可在线阅读,更多相关《C++实验代码.docx(20页珍藏版)》请在冰豆网上搜索。
C++实验代码
实验项目一C++程序设计初步题目之五兆芳芳创作
在VisualStudio2008平台上,用C++语言创建一个控制台应用程序,当其运行时在屏幕上显示“Hello,World!
”(参考P15)
实验项目二类与对象
(1)有以下程序:
#include
usingnamespacestd;
classTime//定义Time类
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;icout<}
结果:
(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
{
private:
doublea,b,c;
doubler;
public:
Zhc(doublea,doubleb,doublec);
Zhc(doublea,doubleb);
Zhc(doubler);
};
classArea
{
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删除,阐发运行的结果;
代码:
#ifndefSTUDENT_H_
#defineSTUDENT_H_
classStudent{
intNo;
charName[20];
public:
Student();
intGetNo();
char*GetName();
};
#endif
#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;