C++实验报告.docx
《C++实验报告.docx》由会员分享,可在线阅读,更多相关《C++实验报告.docx(12页珍藏版)》请在冰豆网上搜索。
C++实验报告
实验1-1过程化编程
【实验目的】
理解、掌握过程化编程程序设计思想。
【实验内容】
1.程序填空,练习类、对象、继承的定义和实现方法。
2.根据程序运行结果,补充完整程序。
【实验要求】
我们在进行英语阅读的时候,会发现一个有趣的现象:
有些字串是左右对称的,如madam。
我们把这种字串称为symmetrytext即“对称文”。
现在有若干航字串,每一行可以由数字、标点符号、空格符以及英文字符(包括大小写)组成。
要你帮忙编程判断是否是对称文,否则,就不能最大限度地发现有趣现象了。
输入说明
每个字串为一行,每行结束以回车符为标志,可能有上百上千行业说不定。
当字串为“000000”时,输入结束。
英文字符不区分大小写,即Madam亦为对称文。
不要忘了“{<([”与“])>}”也是互为对称的。
输出说明
如果是对称文,则输出“Symmetry”,否则输出“Notsymmetry”。
每个结论占一行。
图1
图2
【程序代码】
#include
#include
usingnamespacestd;
boolisMatch(strings);
intmain(){
strings;
while
(1){
cin>>s;
if("000000")==0){
break;
}
if(isMatch(s)){
cout<<"Symmetry"<}
else{
cout<<"Notsymmetry"<}
}
return0;
}
boolisMatch(strings){
intlen=();
for(inti=0;iif((s[i]>='a'&&s[i]<='z')&&(s[len-i-1]>='A'&&s[len-i-1]<='Z')){
if(s[i]!
=(s[len-i-1]+('a'-'A'))){
returnfalse;
}
}
elseif((s[i]>='A'&&s[i]<='Z')&&(s[len-i-1]>='a'&&s[len-i-1]<='z')){
if(s[i]!
=(s[len-i-1]-('a'-'A'))){
returnfalse;
}
}
elseif(((s[i]=='{'&&s[len-i-1]=='}'))){
continue;
}
elseif(((s[i]=='<'&&s[len-i-1]=='>'))){
continue;
}
elseif(((s[i]=='['&&s[len-i-1]==']'))){
continue;
}
elseif(((s[i]=='('&&s[len-i-1]==')'))){
continue;
}
else{
if(s[i]!
=s[len-i-1]){
returnfalse;
}
}
}
returntrue;
}
【运行结果】
图3实验一运行结果
实验1-2面向对象编程技术
(1)
【实验目的】
理解面向对象的的程序设计思想。
【实验内容】
定义一个时间类Time,能提供和设置由时、分、秒组成的时间,并编出应用程序,要求包括定义时间对象,设置时间,输出该对象提供的时间。
并请将类定义作为界面,用多文件结构实现之。
【程序代码】
isplay();”使之不会产生内存泄漏。
【实验程序】
n";
exit
(1);
}
v=newint[s];
}
Vector:
:
Vector(constVector&s)
{
inti;
sz=;
v=newint[sz];
for(i=0;i{
v[i]=[i];
}
}
Vector:
:
~Vector()
{
delete[]v;
}
int&Vector:
:
operator[](inti)n";
exit
(1);
}
returnv[i];
}
voidVector:
:
display()
{
inti;
for(i=0;icout<cout<<"\n";
}
classMatrix
{
int*m;
intszl,szr;
public:
Matrix(int,int);
Matrix(constMatrix&m);
~Matrix();
intsizeL(){returnszl;}
intsizeR(){returnszr;}
int&elem(int,int);
};
Matrix:
:
Matrix(inti,intj)
{
szl=i;szr=j;
if(i<=0||j<=0)
{
cerr<<"badMatrixsize.\n";
exit
(1);
}
m=newint[i*j];
}
Matrix:
:
Matrix(constMatrix&s)
{
inti,j;
szl=;
szr=;
m=newint[szl*szr];
for(i=0;i{
for(j=0;j{
m[i*szr+j]=[i*szr+j];
}
}
}
Matrix:
:
~Matrix()
{
delete[]m;
}
int&Matrix:
:
elem(inti,intj)n";
exit
(1);
}
returnm[i*szr+j];
}
Vectormultiply(Matrix&m,Vector&v)
{n";
exit
(1);
}
Vectorr());isplay();
}
【实验结果】
图5实验三运行结果
实验4面向对象程序设计(3)
【实验要求】
请在程序中的日期类的基础上,实现一个可以进行加天数操作获得另一个日期,以及进行日期减日期操作获得相隔天数的日期类,并进行应用程序设计:
创建和两个日期,并计算中间相隔的天数,前者加上300天会是什么日子呢
【实验程序】
一、头文件部分
#pragmaonce
_str());
month=atoi(5,2).c_str());
day=atoi(8,2).c_str());
}
voidDate:
:
i2ymd(intabsDay){
year=absDay/Y400*400;
inty=absDay%Y400;
intoperator-(WDate&wd)const{returnymd2i()-();}
friendostream&operator<<(ostream&o,constWDate&wd);
};
三、
_str());
month=atoi(5,2).c_str());
day=atoi(8,2).c_str());
}
voidDate:
:
i2ymd(intabsDay){
year=absDay/Y400*400;
inty=absDay%Y400;"<case1:
returno<<"Mon."<case2:
returno<<"Tue."<case3:
returno<<"Wed."<case4:
returno<<"Thr."<case5:
returno<<"Fri."<case6:
returno<<"Sat."<}
}
五、
//
//usingWDateclass
#include""
#include
usingnamespacestd;
intmain(){
WDated1(2005,8,21);
WDated2(2008,8,8);
cout<cout<}
【实验结果】
学生实验心得
通过这次实验,我也着实又感受了一次编程的乐趣,从中也学到了不少知识。
虽然都说“程序=数据结构+算法”,但我在学习运用数据结构编程之前,并没能深刻体会到这一点,直到这次C++的实验。
我感受最深的一点是:
以前用C语言编程,只注重如何编写函数能够完成所需要的功能,没有明确的战术,只是单纯凭借意识和简单的语句来堆砌出一段程序,只要能完成任务就行。
但现在感觉完全不同,在编写程序之前,自己能够综合考虑各种因素,首选自己需要的数据结构,然后选定一种或几种存储结构来具体决定后面的函数的主要风格。
最后在编写每一个函数之前,可以仔细斟酌对比,挑选出最适合当前状况的算法。
这样,即使在完整的程序还没有写出来之前,自己心中已经有了明确的原图了。
这样无形中就提高了自己编写的程序的质量。
学生(签名):
2016年04月13日
指导
教师
评语
成绩评定:
指导教师(签名):
年月日