面向程序设计实验报告.docx

上传人:b****8 文档编号:11467093 上传时间:2023-03-01 格式:DOCX 页数:36 大小:800.57KB
下载 相关 举报
面向程序设计实验报告.docx_第1页
第1页 / 共36页
面向程序设计实验报告.docx_第2页
第2页 / 共36页
面向程序设计实验报告.docx_第3页
第3页 / 共36页
面向程序设计实验报告.docx_第4页
第4页 / 共36页
面向程序设计实验报告.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

面向程序设计实验报告.docx

《面向程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《面向程序设计实验报告.docx(36页珍藏版)》请在冰豆网上搜索。

面向程序设计实验报告.docx

面向程序设计实验报告

实验报告

 

实验课程:

学生姓名:

学号:

专业班级:

 

年月日

 

一、实验一熟悉C++开发环境及简单程序设计和应用

…………………………………………3

2、实验二基本控制结构程序设计

…………………………………………8

3、实验三数组和指针

…………………………………………12

4、实验四继承和派生

…………………………………………21

南昌大学实验报告

学生姓名:

李阳学号:

6100509053专业班级:

电商091

实验类型:

□验证□综合□设计□创新实验日期:

2011.11.10实验成绩:

一、实验项目名称

实验一熟悉C++开发环境及简单程序设计和应用

一.实验目的

1.初步了解C++程序的编译、连接和运行的过程。

2.掌握和理解C++程序的结构。

 

二.实验内容

1.使用VC

2.运行一个简单的C++程序

3.编程求出对任意输入的两个整数,求出该两个整数的最大公约数和最小公倍数

三.实验环境

PC微机;

Windows操作系统;

VC程序集成环境。

四.实验步骤

1.启动VC

如果用户计算机系统已经安装了VC编译系统,按下图所示进入VC集成环境。

 

在该窗口,有9个菜单条目。

熟悉每个菜单的意义和操作。

2.输入程序

输入以下程序

#include

usingnamespacestd;

voidmain()

{

inti

(1),sum(0);

do{

sum+=i;

i++;

}while(i<=10);

cout<<"sum="<

}

3.保存文件、运行程序、退出VC程序、打开已经存在的文件

4.编程求出对任意输入的两个整数,求出该两个整数的最大公约数和最小公倍数

五.思考题

总结实验中在编辑、编译、运行等各环节中所出现的问题及解决方法。

南昌大学实验报告

学生姓名:

李阳学号:

6100509053专业班级:

电商091

实验类型:

□验证□综合□设计□创新实验日期:

2011.10.28实验成绩:

(以下主要内容由学生完成)

一、实验项目名称

实验二基本控制结构程序设计

二、实验目的

1.学会有关C++语言的有关运算符,以及包含这些运算符的表达式的使用,熟练掌握多重选择结构。

2.掌握C++函数的定义方法、函数的调用方法、参数说明以及返回值。

掌握函数的嵌套调用及递归调用的设计方法;

3.在编程过程中加深理解函数调用的程序设计思想。

三、实验步骤

1.当a=1,b=2,c=3时,编程求出

a^b&-c

a&b|c

!

a|a

~a|a

a^a

a>>2

以上表达式的值

2.编程实现这样一个完整的程序,运行时向用户提问“你考试考了多少分?

(0~100),接受输入后判断其等级并显示出来。

规则如下:

等级

范围

90〈=分数〈=100

80〈=分数〈90

60〈=分数〈80

0〈=分数〈60

3.用递归方法编写程序求Fibonacci级数,公式为:

fib(n)=fib(n-1)+fib(n-2),n>2;fib

(1)=fib

(2)=1;观察递归调用的过程。

六、思考讨论题或体会或对改进实验的建议

 

南昌大学实验报告

学生姓名:

学号:

专业班级:

实验类型:

□验证□综合□设计□创新实验日期:

实验成绩:

一、实验项目名称

实验三数组和指针

一.实验目的

1.掌握数组的基本概念,包括:

数组的定义、数组的类型、数组的初始化、数组的赋值、数组元素下标的范围、数组元素的正确以及引用数组元素的输入/输出等;重点掌握对象数组的使用。

2.掌握指针的基本概念和基本用法。

包括:

变量的地址和变量的值,指针变量的说明、指针变量的初始化、指针的内容与定义格式、指针的基本运算等;重点掌握对象指针的使用。

二.实验内容

有关数组和指针的程序设计

三.实验环境

PC微机

DOS操作系统或Windows操作系统

TurboC程序集成环境

四.实验步骤

1.编程实现:

设计一个Point类,利用对象数组,进行点的线性拟合。

要求能通过键盘输入对对象数组进行赋值。

 

#include

#include

usingnamespacestd;

classPoint

{

public:

Point(floatxx=0,floatyy=0)

{

X=xx;

Y=yy;

}

floatGetX(){returnX;}

floatGetY(){returnY;}

friendfloatlinefit(Pointl_point[],intn_point);//友元函数

private:

floatX,Y;

};

floatlinefit(Pointl_point[],intn_point)//友元函数体

{

floatav_x,av_y;

floatL_xx,L_yy,L_xy;

av_x=0;

av_y=0;

L_xx=0;

L_yy=0;

L_xy=0;

for(inti=0;i

{

av_x+=l_point[i].X/n_point;

av_y+=l_point[i].Y/n_point;

}

for(i=0;i

{//计算Lxx,Lyy,Lxy

L_xx+=(l_point[i].X-av_x)*(l_point[i].X-av_x);

L_yy+=(l_point[i].Y-av_y)*(l_point[i].Y-av_y);

L_xy+=(l_point[i].X-av_x)*(l_point[i].Y-av_y);

}

cout<<"Thislinecanbefittedbyy=ax+b."<

cout<<"a="<

cout<<"b="<

returnfloat(L_xy/sqrt(L_xx*L_yy));//返回相关系数r

}

intmain()

{

intx,y;

Pointl_p[10];//定义一个数组

cout<<"请输入10组观测数据(XiYi):

"<

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

{

cout<<"请输入第"<

";

cin>>x>>y;

l_p[i]=Point(x,y);

}

floatr=linefit(l_p,10);//进行线性回归计算

cout<<"Linecoefficientr="<

return0;

}

2.编程实现:

利用指针,设计一个程序,对任意的一个浮点数,可以将其整数部分和小数部分分别输出。

#include

usingnamespacestd;

voidsplitfloat(floatx,int*intpart,float*fracpart)

{

*intpart=int(x);

*fracpart=x-*intpart;

}

voidmain()

{

intn;

floatx,f;

cout<<"enterafloatpointnumebers:

"<

cin>>x;

splitfloat(x,&n,&f);

cout<<"integerpart="<

}

3.编程实现:

设计一个Point类,编程实现通过对象指针的方法访问Point类对象的成员;通过成员函数指针的方法访问成员函数;动态创建和删除对象数组

程序如下:

#include

usingnamespacestd;

classpoint

{public:

point();

point(intxx,intyy);

~point();

intGetX(){returnX;};

intGetY(){returnY;};

voidMove(intx,inty);

private:

intX,Y;

};

point:

:

point()

{X=Y=0;cout<<"defaultconstructorcalled."<

point:

:

point(intxx,intyy)

{X=xx;Y=yy;cout<<"constructorcalled."<

point:

:

~point()

{cout<<"destructorcalled."<

voidpoint:

:

Move(intx,inty)

{intX=x;intY=y;cout<

voidmain()

{

pointA(4,5);

point*p_A=&A;

int(point:

:

*p_GeX)()=&point:

:

GetX;

point*ptr=newpoint[3];

ptr[0].Move(5,10);

ptr[1].Move(10,20);

ptr[2].Move(15,25);

cout<<"deleting..."<

delete[]ptr;

cout<<(p_A->GetX)()<

cout<<(A.*p_GeX)()<

}

五.思考题

小结有关对象数组、数组指针、函数指针、对象指针的使用。

南昌大学实验报告

学生姓名:

李阳学号:

6100509053专业班级:

电商091

实验类型:

□验证□综合□设计□创新实验日期:

实验成绩:

(以下主要内容由学生完成)

1、实验项目名称

实验4继承和派生

2、实验目的

1.理解掌握类的继承和派生等

基本概念。

2.掌握不同继承方式下对基类成员的访问控制,学习利用虚基类解决二义性问题。

三、实验内容

1、求解矩形的面积。

2、用虚基类构造一个销售经理类,使之同时具有销售人员和管理人员的特点。

2、用高斯消去法解线性方程组的程序设计。

四、实验环境

PC微机

Windows操作系统

VC程序集成环境

四.实验步骤

1.编程实现:

先构造点类,再分别利用公有、私有、保护等继承方式构造一个矩形类,求出其面积。

程序如下:

#include

usingnamespacestd;

classpoint

{public:

voidinitp(floatxx=0,floatyy=0){X=xx;Y=yy;}

voidmove(floatxo,floatyo){X+=xo;Y+=yo;}

intGetX(){returnX;}

intGetY(){returnY;}

voidMove(intx,inty){X=x;Y=y;}

private:

intX,Y;

};

classrectangle_a:

publicpoint

{public:

intflag(floatx,floaty,floatw,floath)

{initp(x,y);W=w;H=h;returnW*H;}

floatGetW(){returnW;}

floatGetH(){returnH;}

private:

floatW,H;

};

classrectangle_b:

privatepoint

{public:

intflag(floatx,floaty,floatw,floath)

{initp(x,y);W=w;H=h;returnW*H;};

floatGetX(){returnpoint:

:

GetX();};

floatGetY(){returnpoint:

:

GetY();};

floatGetW(){returnW;};

floatGetH(){returnH;};

private:

floatW,H;

};

classrectangle_c:

protectedpoint

{public:

intflag(floatx,floaty,floatw,floath)

{initp(x,y);W=w;H=h;returnW*H;}

floatGetX(){returnpoint:

:

GetX();}

floatGetY(){returnpoint:

:

GetY();}

floatGetW(){returnW;}

floatGetH(){returnH;}

private:

floatW,H;

};

voidmain()

{

rectangle_aa;

rectangle_bb;

rectangle_cc;

cout<

cout<

cout<

}

2.编程实现:

构造一个销售经理类,使之同时具有销售人员和管理人员的特点,编程演示对其的管理。

程序如下:

#include

#include

usingnamespacestd;

classemployee

{

protected:

charname[20];//姓名

intindividualEmpNo;//个人编号

intgrade;//级别

floataccumPay;//月薪总额

staticintemployeeNo;//本公司职员编号目前最大值

public:

employee();//构造函数

~employee();//析构函数

voidpay();//计算月薪函数

voidpromote(int);//升级函数

voidSetName(char*);//设置姓名函数

char*GetName();//提取姓名函数

intGetindividualEmpNo();//提取编号函数

intGetgrade();//提取级别函数

floatGetaccumPay();//提取月薪函数

};

classsalesman:

virtualpublicemployee//兼职推销员类

{

protected:

floatCommRate;//按销售额提取酬金的百分比

floatsales;//当月销售额

public:

salesman();//构造函数

voidSetsales(floatsl);//设置销售额

voidpay();//计算月薪函数

};

classmanager:

virtualpublicemployee//经理类

{

protected:

floatmonthlyPay;//固定月薪数

public:

manager();//构造函数

voidpay();//计算月薪函数

};

classsalesmanager:

publicmanager,publicsalesman//销售经理类

{

public:

salesmanager();//构造函数

voidpay();//计算月薪函数

};

 

intemployee:

:

employeeNo=1000;//员工编号基数为1000

employee:

:

employee()

{individualEmpNo=employeeNo++;//新输入的员工编号为目前最大编号加1

grade=1;//级别初值为1

accumPay=0.0;}//月薪总额初值为0

employee:

:

~employee(){}

voidemployee:

:

pay()//计算月薪,空函数

{}

voidemployee:

:

promote(intincrement)

{grade+=increment;}//升级,提升的级数由increment指定

voidemployee:

:

SetName(char*names)

{strcpy(name,names);}//设置姓名

char*employee:

:

GetName()

{returnname;}//获取姓名

intemployee:

:

GetindividualEmpNo()

{returnindividualEmpNo;}//获取成员编号

intemployee:

:

Getgrade()

{returngrade;}//获取级别

floatemployee:

:

GetaccumPay()

{returnaccumPay;}//获取月薪

salesman:

:

salesman()

{CommRate=0.04;}//销售提成比例4%

voidsalesman:

:

Setsales(floatsl)

{sales=sl;}//设置销售额

voidsalesman:

:

pay()

{accumPay=sales*CommRate;}//月薪=销售提成

manager:

:

manager()

{monthlyPay=8000;}//固定月薪8000元

voidmanager:

:

pay()

{accumPay=monthlyPay;}//月薪总额即固定月薪数

salesmanager:

:

salesmanager()

{monthlyPay=5000;

CommRate=0.005;}

voidsalesmanager:

:

pay()

{accumPay=monthlyPay+CommRate*sales;}//月薪=固定月薪+销售提成

voidmain()

{

managerm1;

salesmanagersm1;

salesmans1;

charnamestr[20];//输入雇员姓名时首先临时存放在namestr中

cout<<"请输下一个雇员的姓名:

";

cin>>namestr;

m1.SetName(namestr);//设置雇员m1姓名

cout<<"请输下一个雇员的姓名:

";

cin>>namestr;

sm1.SetName(namestr);//设置雇员sm1姓名

cout<<"请输下一个雇员的姓名:

";

cin>>namestr;

s1.SetName(namestr);//设置雇员s1姓名

m1.promote(3);//经理m1提升3级

m1.pay();//计算m1月薪

cout<<"请输入销售经理"<

";

floatsl;

cin>>sl;//输入s1所管辖部门本月的销售总额

sm1.Setsales(sl);//设置s1所管辖部门本月的销售总额

sm1.pay();//计算s1月薪

sm1.promote

(2);//s1提升2级

cout<<"请输入推销员"<

";

cin>>sl;//输入s1本月的销售额

s1.Setsales(sl);//设置s1本月的销售额

s1.pay();//计算s1月薪

//显示m1信息

cout<

<<"级别为"<

//显示sm1信息

cout<

<<"级别为"<

//显示s1信息

cout<

<<"级别为"<

}

 

2.编程实现:

根据以前学过的数学知识,利用类继承的方法实现用高斯消去法解线性方程组。

程序代码如下:

(书上都有代码)

//linequ.h文件一,类声明

#ifndefLINEQU_H

#defineLINEQU_H

#include

#include

usingnamespacestd;

classMatrix//基类Matrix声明

{

public:

//外部接口

Matrix(intdims=2);//构造函数

~Matrix();//析构函数

voidsetMatrix(double*rmatr);//矩阵赋初值

voidprintM();//显示矩阵

protected:

//保护数据成员

intindex;//矩阵的维数

double*MatrixA;//矩阵存放数组首地址

};

classLinequ:

publicMatrix//公有派生类Linequ声明

{

public:

//外部接口

Linequ(intdims=2);//构造函数

~Linequ();//析构函数

voidsetLinequ(double*a,double*b);//方程赋值

voidprintL();//显示方程

intSolve();//全选主元高斯消去法求解方程

voidshowX();//显示方程的解

private:

//私有数据

double*sums;//方程右端项

double*solu;//方程的解

};

#endif

//lineequ.cpp文件二,类实现

#ifndefLINEEQU_CP

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

当前位置:首页 > 农林牧渔 > 林学

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

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