已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高级语言程序设计实验指导书实 验 报 告实验课程: 学生姓名: 学 号: 专业班级: 年 月 日目 录一、实验一 熟悉C+开发环境及简单程序设计和应用 32、 实验二 基本控制结构程序设计 83、 实验三 数组和指针 124、 实验四 继承和派生 21 南昌大学实验报告学生姓名: 李阳 学 号: 6100509053 专业班级: 电商091 实验类型: 验证 综合 设计 创新 实验日期: 2011.11.10 实验成绩: 一、实验项目名称 实验一 熟悉C+开发环境及简单程序设计和应用一实验目的1初步了解C+程序的编译、连接和运行的过程。2掌握和理解C+程序的结构。二实验内容1使用VC2运行一个简单的C+程序3编程求出对任意输入的两个整数,求出该两个整数的最大公约数和最小公倍数三实验环境PC微机;Windows 操作系统;VC 程序集成环境。四实验步骤1启动VC如果用户计算机系统已经安装了VC编译系统,按下图所示进入VC集成环境。 在该窗口,有9个菜单条目。熟悉每个菜单的意义和操作。2输入程序 输入以下程序#includeusing namespace std;void main() int i(1), sum(0); do sum+=i; i+;while(i=10); coutsum=sum2以上表达式的值2 编程实现这样一个完整的程序,运行时向用户提问“你考试考了多少分?(0100),接受输入后判断其等级并显示出来。规则如下:等级范围优90=分数=100良80=分数90中60=分数80差0=分数603用递归方法编写程序求Fibonacci级数,公式为:fib(n)=fib(n-1)+fib(n-2),n2;fib(1)=fib(2)=1;观察递归调用的过程。 六、思考讨论题或体会或对改进实验的建议 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 一、实验项目名称 实验三 数组和指针一实验目的1掌握数组的基本概念,包括:数组的定义、数组的类型、数组的初始化、数组的赋值、数组元素下标的范围、数组元素的正确以及引用数组元素的输入/输出等;重点掌握对象数组的使用。2掌握指针的基本概念和基本用法。包括:变量的地址和变量的值,指针变量的说明、指针变量的初始化、指针的内容与定义格式、指针的基本运算等;重点掌握对象指针的使用。 二实验内容有关数组和指针的程序设计三实验环境PC微机DOS操作系统或 Windows 操作系统Turbo C 程序集成环境四实验步骤1编程实现:设计一个Point类,利用对象数组,进行点的线性拟合。 要求能通过键盘输入对对象数组进行赋值。 #include #include using namespace std;class Pointpublic: Point(float xx=0,float yy=0) X=xx; Y=yy; float GetX() return X; float GetY() return Y; friend float linefit(Point l_point,int n_point); /友元函数private: float X,Y;float linefit(Point l_point,int n_point) /友元函数体 float av_x,av_y; float L_xx,L_yy,L_xy; av_x=0; av_y=0; L_xx=0; L_yy=0; L_xy=0; for(int i=0;in_point;i+) /计算X,Y的平均值 av_x+=l_pointi.X/n_point; av_y+=l_pointi.Y/n_point; for(i=0;in_point;i+) /计算Lxx,Lyy,Lxy L_xx+=(l_pointi.X-av_x)*(l_pointi.X-av_x); L_yy+=(l_pointi.Y-av_y)*(l_pointi.Y-av_y); L_xy+=(l_pointi.X-av_x)*(l_pointi.Y-av_y); coutThis line can be fitted by y=ax+b.endl; couta=L_xy/L_xx; /输出回归系数a cout b=av_y-L_xy*av_x/L_xxendl; /输出回归系数B return float(L_xy/sqrt(L_xx*L_yy); /返回相关系数rint main() int x,y; Point l_p10; /定义一个数组 cout请输入10组观测数据(Xi Yi):endl; for(int i=0;i10;i+) cout请输入第i+1xy; l_pi=Point(x,y); float r=linefit(l_p,10); /进行线性回归计算 coutLine coefficient r=rendl; return 0;2编程实现:利用指针,设计一个程序,对任意的一个浮点数,可以将其整数部分和小数部分分别输出。#include using namespace std;void splitfloat(float x,int*intpart,float*fracpart)*intpart=int(x);*fracpart=x-*intpart;void main()int n;float x,f;coutenter a float point numebers:x;splitfloat(x,&n,&f);coutinteger part=n fraction part=fendl;3 编程实现:设计一个Point类,编程实现通过对象指针的方法访问Point类对象的成员;通过成员函数指针的方法访问成员函数;动态创建和删除对象数组程序如下:#includeusing namespace std;class pointpublic: point(); point(int xx,int yy); point(); int GetX()return X;int GetY()return Y; void Move(int x,int y);private:int X,Y;point:point() X=Y=0;coutdefault constructor called.endl;point:point(int xx,int yy) X=xx;Y=yy;coutconstructor called.endl;point:point() coutdestructor called.endl;void point:Move(int x,int y)int X=x;int Y=y;coutX Yendl;void main()point A(4,5);point *p_A=&A;int (point:*p_GeX)()=&point:GetX; point *ptr=new point3;ptr0.Move(5,10);ptr1.Move(10,20);ptr2.Move(15,25);coutdeleting.endl;delete ptr;coutGetX)()endl;cout(A.*p_GeX)()endl;五思考题小结有关对象数组、数组指针、函数指针、对象指针的使用。34 南昌大学实验报告学生姓名: 李阳 学 号: 6100509053 专业班级: 电商091 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: (以下主要内容由学生完成) 1、 实验项目名称 实验4 继承和派生2、 实验目的 1理解掌握类的继承和派生等基本概念。 2掌握不同继承方式下对基类成员的访问控制,学习利用虚基类解决二义性问题。三、实验内容1、求解矩形的面积。2、用虚基类构造一个销售经理类,使之同时具有销售人员和管理人员的特点。2、用高斯消去法解线性方程组的程序设计。四、实验环境PC微机Windows 操作系统VC 程序集成环境四实验步骤1编程实现:先构造点类,再分别利用公有、私有、保护等继承方式构造一个矩形类,求出其面积。程序如下:#includeusing namespace std;class pointpublic: void initp(float xx=0,float yy=0)X=xx;Y=yy; void move(float xo,float yo)X+=xo;Y+=yo; int GetX()return X;int GetY()return Y; void Move(int x,int y)X=x;Y=y;private:int X,Y;class rectangle_a:public point public: int flag(float x,float y,float w,float h) initp(x,y);W=w;H=h;return W*H; float GetW()return W; float GetH()return H; private: float W,H; ;class rectangle_b:private point public: int flag(float x,float y,float w,float h) initp(x,y);W=w;H=h;return W*H; float GetX()return point:GetX(); float GetY()return point:GetY(); float GetW()return W; float GetH()return H; private: float W,H; ;class rectangle_c:protected point public: int flag(float x,float y,float w,float h) initp(x,y);W=w;H=h;return W*H; float GetX()return point:GetX(); float GetY()return point:GetY(); float GetW()return W; float GetH()return H; private: float W,H; ;void main() rectangle_a a; rectangle_b b; rectangle_c c;couta.flag(2,3,10,10)endl;coutb.flag(2,3,10,10)endl;coutc.flag(2,3,10,10)endl;2编程实现:构造一个销售经理类,使之同时具有销售人员和管理人员的特点,编程演示对其的管理。程序如下:#include#includeusing namespace std;class employeeprotected:char name20;/姓名int individualEmpNo;/个人编号int grade;/级别float accumPay;/月薪总额static int employeeNo;/本公司职员编号目前最大值public:employee();/构造函数employee();/析构函数void pay();/计算月薪函数void promote(int);/升级函数void SetName(char *); /设置姓名函数char * GetName(); /提取姓名函数int GetindividualEmpNo(); /提取编号函数int Getgrade(); /提取级别函数float GetaccumPay(); /提取月薪函数;class salesman:virtual public employee/兼职推销员类protected:float CommRate;/按销售额提取酬金的百分比float sales;/当月销售额public:salesman();/构造函数void Setsales(float sl); /设置销售额void pay();/计算月薪函数;class manager:virtual public employee/经理类protected:float monthlyPay;/固定月薪数public:manager();/构造函数void pay();/计算月薪函数;class salesmanager:public manager,public salesman /销售经理类public:salesmanager();/构造函数void pay();/计算月薪函数;int employee:employeeNo=1000;/员工编号基数为1000employee:employee()individualEmpNo=employeeNo+; /新输入的员工编号为目前最大编号加1grade=1;/级别初值为1accumPay=0.0; /月薪总额初值为0employee:employee()void employee:pay()/计算月薪,空函数void employee:promote(int increment)grade+=increment;/升级,提升的级数由increment指定void employee:SetName(char* names)strcpy(name,names); /设置姓名char* employee:GetName()return name;/获取姓名int employee:GetindividualEmpNo()return individualEmpNo;/获取成员编号int employee:Getgrade()return grade;/获取级别float employee:GetaccumPay()return accumPay;/获取月薪salesman:salesman()CommRate=0.04;/销售提成比例4%void salesman:Setsales(float sl)sales=sl;/设置销售额void salesman:pay()accumPay=sales*CommRate;/月薪=销售提成manager:manager()monthlyPay=8000;/固定月薪8000元void manager:pay()accumPay=monthlyPay;/月薪总额即固定月薪数salesmanager:salesmanager()monthlyPay=5000;CommRate=0.005;void salesmanager:pay()accumPay=monthlyPay+CommRate*sales; /月薪=固定月薪+销售提成void main()manager m1;salesmanager sm1;salesman s1;char namestr20; /输入雇员姓名时首先临时存放在namestr中coutnamestr;m1.SetName(namestr);/设置雇员m1姓名coutnamestr;sm1.SetName(namestr);/设置雇员sm1姓名coutnamestr;s1.SetName(namestr);/设置雇员s1姓名mote(3);/经理m1提升3级m1.pay();/计算m1月薪cout请输入销售经理sm1.GetName()sl; /输入s1所管辖部门本月的销售总额sm1.Setsales(sl);/设置s1所管辖部门本月的销售总额sm1.pay();/计算s1月薪mote(2);/s1提升2级cout请输入推销员s1.GetName()sl; /输入s1本月的销售额s1.Setsales(sl);/设置s1本月的销售额s1.pay();/计算s1月薪/显示m1信息coutm1.GetName()编号m1.GetindividualEmpNo() 级别为m1.Getgrade()级,本月工资m1.GetaccumPay()endl;/显示sm1信息coutsm1.GetName()编号sm1.GetindividualEmpNo() 级别为sm1.Getgrade()级,本月工资sm1.GetaccumPay()endl;/显示s1信息couts1.GetName()编号s1.GetindividualEmpNo() 级别为s1.Getgrade()级,本月工资s1.GetaccumPay()endl;2编程实现:根据以前学过的数学知识,利用类继承的方法实现用高斯消去法解线性方程组。程序代码如下:(书上都有代码)/linequ.h 文件一,类声明#ifndef LINEQU_H#define LINEQU_H#include #include using namespace std;class Matrix/基类Matrix声明public:/外部接口Matrix(int dims=2);/构造函数Matrix();/析构函数void setMatrix(double* rmatr);/矩阵赋初值void printM();/显示矩阵protected:/保护数据成员int index;/矩阵的维数double* MatrixA;/矩阵存放数组首地址;class Linequ: public Matrix/公有派生类Linequ声明public:/外部接口Linequ(int dims=2);/构造函数Linequ();/析构函数void setLinequ(double* a, double *b);/方程赋值void printL();/显示方程int Solve();/全选主元高斯消去法求解方程void showX();/显示方程的解private:/私有数据double *sums;/方程右端项double *solu;/方程的解;#endif/lineequ.cpp 文件二,类实现#ifndef LINEEQU_CPP#define LINEEQU_CPP#include linequ.h/包含类的声明头文件/the function member of Class Matrix/基类成员函数的实现/Public Function member No.1: Set Matrix valuevoid Matrix:setMatrix(double* rmatr)/设置矩阵for(int i=0;iindex*index;i+) *(MatrixA+i)=rmatri;/矩阵成员赋初值/Public Function member No.2 Construction functionMatrix:Matrix(int dims)/矩阵Matrix类的构造函数index=dims;/保护数据赋值MatrixA=new doubleindex*index;/动态内存分配/Public Function member No.3 Destruction functionMatrix:Matrix()/矩阵Matrix类的析构函数delete MatrixA;/内存释放/Public Function member No.4 Show Matrix functionvoid Matrix:printM()/显示矩阵的元素coutThe Matrix is:endl;for(int i=0;iindex;i+) for(int j=0;jindex;j+) cout*(MatrixA+i*index+j) ; coutendl;/the function member of Class Linequ/派生类的成员函数的实现/Public Function member No.1 Construction functionLinequ:Linequ(int dims):Matrix(dims)/派生类Linequ的构造函数/使用参数调用基类构造函数sums=new doubledims;/动态内存分配solu=new doubledims;/Public Function member No.2 Destruction functionLinequ:Linequ()/派生类Linequ的析构函数/调用基类析构函数delete sums;/释放内存delete solu;/Public Function member No.3 Set Line Equation functionvoid Linequ:setLinequ(double *a,double *b)/设置线性方程组setMatrix(a);/调用基类函数for(int i=0;iindex;i+) sumsi=bi;/Public Function member No.4 Show Line Equation functionvoid Linequ:printL()/显示线性方程组coutThe Line eqution is:endl;for(int i=0;iindex;i+) for(int j=0;jindex;j+) cout*(MatrixA+i*index+j) ; cout sumsiendl;/Public Function member No.5 Show solution functionvoid Linequ:showX()/输出方程的解coutThe Result is:endl;for(int i=0;iindex;i+) coutXi=soluiendl;/Public Function member No.6 Construction functionint Linequ:Solve()/全选主元高斯消去法求解方程int *js,l,k,i,j,is,p,q;double d,t;js=new intindex;l=1;for (k=0;k=index-2;k+)/消去过程 d=0.0; for (i=k;i=index-1;i+) for (j=k;jd) d=t; jsk=j; is=i; if (d+1.0=1.0) l=0; else if (jsk!=k) for (i=0;i=index-1;i+) p=i*index+k; q=i*index+jsk; t=MatrixAp; MatrixAp=MatrixAq; MatrixAq=t; if (is!=k) for (j=k;j=index-1;j+) p=k*index+j; q=is*index+j; t=MatrixAp; MatrixAp=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高效吸附材料设计-第1篇-洞察与解读
- 客户流失预警机制-第1篇-洞察与解读
- 智能运维决策支持-第4篇-洞察与解读
- 2025山东临沂市市属国企业招聘674人易考易错模拟试题(共500题)试卷后附参考答案
- 2025安徽电力建设第二工程限公司人才招聘215人易考易错模拟试题(共500题)试卷后附参考答案
- 2025安徽宿州砀山县梨都公共交通发展限公司招聘充电工6人易考易错模拟试题(共500题)试卷后附参考答案
- 2025安徽亳州市政府发展研究中心招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2025宁夏宁东融资担保限公司中层管理岗位竞聘易考易错模拟试题(共500题)试卷后附参考答案
- 2025国家科技基础平台中心事业单位招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2025国家电网公司(第二批)招聘黑龙江省电力公司易考易错模拟试题(共500题)试卷后附参考答案
- 5G通信模块设计项目分析方案
- 汽车维修入股协议合同
- 教育家精神课件
- 2026蒙牛「星动力」校园招聘笔试考试参考试题及答案解析
- 2026湖南省气象部门招聘应届毕业生59人(第2601号)笔试考试参考试题及答案解析
- 垃圾填埋场施工流程方案
- 2025年实验室检验质控知识考试试题及答案解析
- 2025年宿州市纪委市委巡察办所属事业单位选调工作人员8人考试参考试题及答案解析
- 2025贵州毕节市中级人民法院招聘聘用制法官助理30人考试参考题库及答案解析
- 2025及未来5年中国电子记事本市场调查、数据监测研究报告
- 医院地震疏散培训
评论
0/150
提交评论