太原理工大学C++实验报告.docx

上传人:b****7 文档编号:8711858 上传时间:2023-02-01 格式:DOCX 页数:34 大小:149.59KB
下载 相关 举报
太原理工大学C++实验报告.docx_第1页
第1页 / 共34页
太原理工大学C++实验报告.docx_第2页
第2页 / 共34页
太原理工大学C++实验报告.docx_第3页
第3页 / 共34页
太原理工大学C++实验报告.docx_第4页
第4页 / 共34页
太原理工大学C++实验报告.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

太原理工大学C++实验报告.docx

《太原理工大学C++实验报告.docx》由会员分享,可在线阅读,更多相关《太原理工大学C++实验报告.docx(34页珍藏版)》请在冰豆网上搜索。

太原理工大学C++实验报告.docx

太原理工大学C++实验报告

本科实验报告

 

课程名称:

C++面向对象程序设计

实验项目:

C++语言编程

实验地点:

明向校区

专业班级:

软件1431学号:

201400XXXX

学生姓名:

白建兴

指导教师:

崔晓红

 

2015年5月10日

 

实验内容

实验2.3

(1)

(2)(3)

实验记录

1.运行例题程序:

#include

usingnamespacestd;

voidfn1(intz=5);

intx=1,y=2;

intmain()

{

cout<<"Begin..."<

cout<<"x="<

cout<<"y="<

cout<<"Evaluaexandyinmain()..."<

intx=10,y=20;

cout<<"x="<

cout<<"y="<

cout<<"Stepintofn1()..."<

fn1();

fn1(10);

cout<<"Baceinmain"<

cout<<"x="<

cout<<"y="<

return0;

}

voidfn1(intz)

{

staticintx=100;

inty=200;

cout<<"x="<

cout<<"y="<

x=x+y+z;

}运行结果:

2.编写重载函数max1可分别求取2个整数,3个整数,3个双精度数,3个双精度数的最大值

#include

usingnamespacestd;

intmax(intx,inty);

doublemax(doublex,doubley);

intmax(intx,inty,intz);

doublemax(doublex,doubley,doublez);

intmain()

{

inta,b,c;

cout<<"请输入3个整数"<

cin>>a>>b>>c;

cout<<"2个整数的最大值:

"<

cout<<"3个整数的最大值:

"<

doublei,j,k;

cout<<"请输入3个双精度数"<

cin>>i>>j>>k;

cout<<"2个双精度数的最大值:

"<

cout<<"3个双精度数的最大值:

"<

return0;

}

intmax(intx,inty)

{

returnx>y?

x:

y;

}

doublemax(doublex,doubley)

{

returnx>y?

x:

y;

}

intmax(intx,inty,intz)

{

return(max(x,y)>z)?

max(x,y):

z;

}

doublemax(doublex,doubley,doublez)

{

return(max(x,y)>z)?

max(x,y):

z;

}运行结果:

3.用new操作为一个包含10个整数的数组分配内存,输入若干个值到数组中,分别统计其中正数和负数的个数后再用delete操作释放内存。

#include

usingnamespacestd;

constintN=10;

intmain()

{

int*p,i,plus,minus;

p=newint[N];

if(!

p)

{

cout<<"内存分配错误!

"<

exit

(1);

}

plus=0;

minus=0;

cout<<"请任意输入"<

for(i=0;i

{

cin>>p[i];

if(p[i]>0)

plus++;

elseif(p[i]!

=0)

minus++;

}

cout<<"正数的个数:

"<

cout<<"负数的个数:

"<

delete[]p;

return0;

}运行结果:

心得体会

在经过多次编写实验程序后,比较了C与C++,二者在编程的思想上完全不同,但是在C++的编译器中,也会用到很多C中的东西,虽然C++后期修改程序上比C要容易了很多,但是在编写过程中要比C要麻烦。

虽然编写了这么多的程序,但是对编写的程序如何变成软件还是有很多的疑惑以及更大好奇心。

实验内容

实验3.3

(1)

(2)(3)(4)

实验记录

1.程序:

#include

#definepi3.14

usingnamespacestd;

intmain()

{

cout<<"1计算圆面积"<

<<"2计算矩形面积"<

<<"3计算正方形面积"<

<<"4退出"<

<<"请输入对应程序代码"<

intx;

doublearea;

cin>>x;

while(x!

=4)

{

if(x==1)

{

doubler;

cout<<"请输入圆半径:

";

cin>>r;

area=3.14*r*r;

cout<<"圆的面积:

"<

}

elseif(x==2)

{

doublem,n;

cout<<"请输入矩形的长和宽:

";

cin>>m>>n;

area=m*n;

cout<<"矩形的面积:

"<

}

elseif(x==3)

{

doublem;

cout<<"请输入正方形的边长:

";

cin>>m;

area=m*m;

cout<<"正方形的面积:

"<

}

else

{

cout<<"输入有误,请重新输入!

"<

cout<<"输入代码:

";

cin>>x;

}

}

return0;

}运行结果:

2.定义一个复数类Complex,复数的实部Real与虚部Image定义为私有数据成员。

用复数类定义复数对象c1、c2、c3,用默认构造函数将c1初始化为c1=20+40i,将c2初始化为c2=0+0i,用拷贝构造函数将c3初始化为c3=20+40i。

用公有成员函数Dispaly()显示复数c1、c2与c3的内容。

程序:

#include

usingnamespacestd;

classComplex

{

private:

doublereal,image;

public:

Complex(doubler,doublei);

Complex(Complex&c);

voidDisplay();

};

Complex:

:

Complex(doubler,doublei)

{

real=r;

image=i;

}

Complex:

:

Complex(Complex&c)

{

real=c.real;

image=c.image;

}

voidComplex:

:

Display()

{

cout<

}

intmain()

{

Complexc1(20,40),c2(0,0),c3(c1);

cout<<"c1=";c1.Display();

cout<<"c2=";c2.Display();

cout<<"c3=";c3.Display();

return0;

}运行结果:

3.定义一个学生成绩类Score,描述学生成绩的私有数据成员为学号(No)、姓名(Name[8])、数学(Math)、物理(Phi)、数据结构(Data)、平均分(ave)。

定义能输入学生成绩的公有成员函数Write(),能计算学生平均分的公有成员函数Average(),能显示学生成绩的公有成员函数Display()。

在主函数中用Score类定义学生成绩对象数组s[3]。

用Write()输入学生成绩,用Average()计算每个学生的平均分,最后用Display()显示每个学生的成绩。

实验数据:

NoNameMathPhiDataAve

1001Zhou807060

1002Chen908085

1003Wang707589

程序:

#include

#include

usingnamespacestd;

classScore

{

private:

intNo;

charName[10];

floatMath,Phi,Data,Ave;

public:

voidWrite(intno,charname[],floatmath,floatphi,floatdata)

{

No=no;

strcpy(Name,name);

Math=math;

Phi=phi;

Data=data;

}

voidAverage()

{

Ave=(Math+Phi+Data)/3;

}

voidDisplay()

{

cout<

}

};

intmain()

{

inti,no;

charname[10];

floatmath,phi,data;

Scores[3];

cout<<"学号姓名数学物理数据结构"<

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

{

cin>>no>>name>>math>>phi>>data;

s[i].Write(no,name,math,phi,data);

s[i].Average();

}

cout<<"学号姓名数学物理数据结构平均分"<

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

s[i].Display();

return0;

}运行结果:

4.定义一个矩形类Rectangle,矩形的左上角(Left,Top)与右下角坐标(Right,Bottom)定义为保护数据成员。

用公有成员函数Diagonal()计算出矩形对角线的长度,公有成员函数Show()显示矩形左上角与右下角坐标及对角线长度。

在主函数中用new运算符动态建立矩形对象r1,初值为(10,10,20,20)。

然后调用Show()显示矩形左上角与右下角坐标及对角线长度。

最后用delete运算符回收为矩形动态分配的存储空间。

程序:

#include

#include

usingnamespacestd;

classRectangle

{

private:

floatLeft,Top,Right,Bottom;

public:

Rectangle(floatleft,floattop,floatright,floatbottom);

floatDiagonal();

voidShow();

};

Rectangle:

:

Rectangle(floatleft,floattop,floatright,floatbottom):

Left(left),Top(top),Right(right),Bottom(bottom)

{}

floatRectangle:

:

Diagonal()

{

floatdia;

dia=sqrt((Right-Left)*(Right-Left)+(Bottom-Top)*(Bottom-Top));

returndia;

}

voidRectangle:

:

Show()

{

cout<<"矩形左上角坐标:

<"<"<

cout<<"矩形右下角坐标:

<"<"<

cout<<"矩形对角线长度:

"<

:

Diagonal()<

}

intmain()

{

Rectangle*r1;

r1=newRectangle(10,10,20,20);

r1->Diagonal();

r1->Show();

deleter1;

return0;

}运行结果:

遇到的问题和解决方法

实验内容

实验5.3

(1)

(2)(3)(4)

实验记录

1.程序:

#include

usingnamespacestd;

classPoint

{

public:

Point(intxx,intyy):

x(xx),y(yy){}

private:

intx,y;

};

classRectangle:

publicPoint

{

public:

Rectangle(Pointpr,intx,inty):

Point(pr),len(x),wid(y)

{cout<<"constructingrectangle\n";}

~Rectangle(){cout<<"destructingrectangle\n";}

intget_len(){returnlen;}

intget_wid(){returnwid;}

doublearea(){returnlen*wid;}

doublelength(){return2*(len+wid);}

private:

intlen,wid;

};

classCircle:

publicPoint

{

public:

Circle(Pointpc,intx):

Point(pc),r(x)

{cout<<"constructingcircle\n";}

~Circle(){cout<<"destructingCircle\n";}

doublearea(){returnr*r*3.14;}

doublelength(){return2*r*3.14;}

private:

intr;

};

classSquare:

publicPoint

{

public:

Square(Pointps,intx):

Point(ps),len(x)

{cout<<"constructingsquare\n";}

~Square(){cout<<"desttuctingSquare\n";}

doublearea(){returnlen*len;}

doublelength(){return4*len;}

private:

intlen;

};

intmain()

{

intx,y,len,wid,rad;

cin>>x>>y>>len>>wid;

Pointp1(x,y);

cout<<"p1hasbeenconstructed"<

Rectangler1(p1,len,wid);

cout<<"r1hasbeenconstructed"<

cout<<"矩形的周长:

"<

cin>>x>>y>>rad;

Pointp2(x,y);

Circlec1(p2,rad);

cout<<"c1hasbeenconstructed"<

cout<<"圆的周长:

"<

cin>>x>>y>>len;

Pointp3(x,y);

Squares1(p3,len);

cout<<"s1hasbeenconstructed"<

cout<<"正方形的周长:

"<

return0;

}运行结果:

(坐标似乎没有用处)

2.程序:

#include

usingnamespacestd;

classPerson

{

charstrName[20];

intnAge;

public:

Person(char*name,intage)

{

strcpy(strName,name);

nAge=age;

cout<<"constructorofperson"<

}

~Person(){cout<<"deconstrutorofperson"<

};

classEmployee:

publicPerson

{

charstrDept[20];

PersonWang;

public:

Employee(char*name,intage,char*dept,char*name1,intage1):

Person(name,age),Wang(name1,age1)

{

strcpy(strDept,dept);

cout<<"constructorofEmployee"<

}

~Employee(){cout<<"deconstrucorofEmployee"<

};

intmain()

{

Employeeemp("张三",25,"财务部","李四",30);

return0;

}运行结果:

3.定义描述职工档案的类Archives,私有数据成员为职工号No,姓名Name[8],性别Sex,年龄Age。

成员函数有:

构造函数,显示职工信息的函数Show()。

再由职工档案类派生出职工工资类Laborage,在职工工资类Laborage中新增加数据成员:

应发工资(SSalary),社保金(Security),实发工资(Fsalary),其成员函数有:

构造函数,计算实发工资的函数Count()计算公式为:

实发工资=应发工资-社保金。

显示职工档案以及工资的函数。

在主函数中用Laborage类定义职工对象lab,并赋初始值(1001,””cheng,’M’,21,2000,100),然后显示职工档案与工资。

#include

#include

usingnamespacestd;

classArchives

{

private:

intNo;

charName[8],Sex;

intAge;

public:

Archives(intno,char*name,charsex,intage);

voidShow();

};

classLaborage:

publicArchives

{

private:

floatSSalary,Security,Fsalary;

public:

Laborage(intno,char*name,charsex,intage,floatsal,floatsec);

floatCount();

voidDisplay();

};

Archives:

:

Archives(intno,char*name,charsex,intage)

{

No=no;

strcpy(Name,name);

Sex=sex;

Age=age;

}

voidArchives:

:

Show()

{

cout<

}

Laborage:

:

Laborage(intno,char*name,charsex,intage,floatsal,floatsec):

Archives(no,name,sex,age)

{

SSalary=sal;

Security=sec;

}

floatLaborage:

:

Count()

{

returnSSalary-Security;

}

voidLaborage:

:

Display()

{

Show();

cout<

}

intmain()

{

Laboragelab(1001,"Cheng",'M',21,2000,100);

cout<<"职工号姓名性别年龄应发工资社保金实发工资"<

lab.Display();

return0;

}运行结果:

4.定义个人信息类Person,其数据成员有姓名、性别、出生年月。

并以Person为基类定义一个学生的派生类Student,增加描述学生的信息:

班级、学号、专业、英语成绩和数学成绩。

再由基类Person定义一个职工的派生类Employee,增加描述职工的信息:

部门、职务、工资。

编写程序实现学生与职工信息的输入与输出。

#include

#include

usingnamespacestd;

classPerson

{

charName[8],Sex;

intBirth;

public:

Person(char*name,charsex,intbirth)

{

strcpy(Name,name);

Sex=sex;

Birth=birth;

}

voidShow()

{

cout<

}

};

classStudent:

publicPerson

{

intClasses,No,Math,English;

charMajor[8];

public:

Student(char*name,charsex,intbirth,intcl,intno,char*m,inten,in

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

当前位置:首页 > 小学教育 > 英语

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

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