面向程序设计实验报告.docx
- 文档编号:6315429
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:36
- 大小:800.57KB
面向程序设计实验报告.docx
《面向程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《面向程序设计实验报告.docx(36页珍藏版)》请在冰点文库上搜索。
面向程序设计实验报告
实验报告
实验课程:
学生姓名:
学号:
专业班级:
年月日
一、实验一熟悉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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 程序设计 实验 报告