




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
成绩辽宁工程技术大学上机实验报告课程名称嵌入式程序设计(C+)学院软件学院专业班级学号姓名日期2013.12.21-2013.12.2235 / 37实验一C+开发环境实验目的(1)掌握用VC+集成开发环境编辑源程序的方法。(2)掌握在VC+集成开发环境中编译、调试与运行程序的方法。(3)理解数据类型、变量、运算符、表达式的概念。(4)学会使用cin进行数据输入操作。(5)学会用算术表达式、关系表达式、赋值表达式完成数据处理工作。(6)学会使用cout进行数据输出操作。实验准备(1)编写实验程序;(2)在VC+运行环境中,输入源程序;(3)编译运行源程序;(4)写出运行结果。实验过程实验(1)设计一个C+程序,输出以下信息: * Hello! *实验(1)程序:# include void main() cout *n; cout Hello!n; cout *n;实验(2)设计一个程序,输入一个华氏温度值,要求输出其对应的摄氏温度值。温度转换公式为:c=(f-32)*5/9。实验(2)程序:# include void main() float c,f; coutf; c=(f-32)*5/9; cout摄氏温度是: cn;实验(3)设计一个C+程序,输入三个职工的工资,求工资总额。实验(3)程序:# include void main() int sa1,sa2,sa3,sum; coutsa1sa2sa3; sum=sa1+sa2+sa3; coutn工资总额是:sumn;结果及分析日实验(1)结果:实验(1)分析:编写程序,输入需要显示的字符,运行程序,得到运行结果。实验(2)结果:实验(2)分析:编写程序,检查无误后运行程序,输入需要转换的华氏温度,得到转换后的摄氏温度。实验(3)结果:实验(3)分析:编写程序,运行程序,输入三个职工的工资分别为3000、2500、3500,得到三个职工的工资总额是9000。收获及体会通过本次上机,我认识到了自身的不足。在上机之前,觉得自己掌握的部分实际上并没有掌握,在编写程序的过程中,把我的问题不断的暴露出来。比如丢三落四,偶尔少打一个分号、单词拼写错误、中英文的格式不同等。好在经过同学的帮助下,将程序顺利的改正过来。在今后的学习过程中,我一定要注意细节的部分,争取做的更好。教师评语实验二函数定义与调用实验目的(1)初步掌握函数的定义方法,及函数的三种调用方法;(2)理解参数传送过程中,值传送与传地址的过程与区别;(3)初步学会用递归编写程序方法;(4)学会用数组作为函数参数的编程方法。实验准备(1)编写实验程序(2)在VC+运行环境中,输入源程序;(3)编译运行源程序;(4)输入测试数据进行程序测试;(5)写出运行结果。实验过程实验(1)编写一个函数px(float x,int n)用递归的方法求下列级数前n项的和s。 实验(1)程序:# include # include void main(void) float x; int n; float px(float,int); coutxn; coutpx=px(x,n)endl;float px(float x,int n) float p;if (n=1) p=x; else p=px(x,n-1)-pow(-1,n)*pow(x,n); return p;实验(2)编写一个计算sin(x)的函数,在主函数中输入x,调用sin(x)函数计算并输出y值。 y=实验(2)程序:#include #include #include #define N 11float zsin(float y) /定义计算K阶乘的函数fac() int i; float s=0,p=1.0,t;p=y;for(t=1,i=1;fabs(1.0/t)=0.00001; i+=2)s=s+p/t; p=p*y*y; t= -t*(i+1)*(i+2); return(s);void main(void) float x,sn; coutx; sn=zsin(x); coutendlsin(x)=snendl; 实验(3)编写计算组合数的函数cmn(int n,int m),实现杨辉三角形的输出。实验(3)程序:#include #include #define N 11float fac(int k) /定义计算K阶乘的函数fac() int i; float t=1.0; for (i=1;i=k;i+) t=t*i; return(t);float cmn(int m1,int n1)/定义计算组合数 的函数cmn() float p; p=fac(m1)/(fac(n1)*fac(m1-n1);/调用求阶乘函数fac() return(p);void main(void) int cNN,m,n; for(n=0; nN;n+) for(m=0; m=n;m+) cnm= cmn(n,m); for(n=0;nN;n+) for(m=0; m=n;m+) coutsetw(6)cnm; coutendl; 结果及分析日实验(1)结果:实验(1)分析:在主函数中定义变量x与n,用键盘输入x与n的值,调用px()函数计算并返回级数前n项和S。最后输出S的值。实验(2)结果:实验(2)分析:编写程序,实现在sin(x)函数内,将级数中各项值累加到和变量S中去,直到最后一项绝对值小于0.00001为止,并且将数值显示到显示器上。实验(3)结果:实验(3)分析:编写程序,定义N=11,运行程序,得到一个底为11,高为11的杨辉三角形。收获及体会对于刚刚接触C+的人,觉得程序的编写是一件很困难的事情,完全没有头绪,根本不知道从哪里下手。通过书上的例子,及同学的帮助,我现将一个程序分成多个部分来编写,每个部分完成各自的功能,然后再把它们都拼接到一起,最后得到一个完整的可运行的正确的程序。编写程序不能急躁,需要一点一点的写,才能不出现错误,尽快的完成。教师评语实验三类和对象实验目的(1)掌握类与对象的定义与使用方法;(2)初步掌握构造函数、拷贝构造函数的定义与使用方法;(3)初步掌握析构函数的定义与使用方法;(4)理解构造函数与析构函数的调用过程。实验准备(1)编写实验程序;(2)在VC+运行环境中,输入源程序;(3)编译运行源程序;(4)输入实验测试数据,写出运行结果。实验过程实验(1)定义一个学生成绩类Score,描述学生成绩的私有数据成员为学号(No)、姓名(Name8)、数学(Math)、物理(Phi)、数据结构(Data)、平均分(ave)。定义能输入学生成绩的公有成员函数Write(),能计算学生平均分的公有成员函数Average(),能显示学生成绩的公有成员函数Display()。在主函数中用Score类定义学生成绩对象数组s3。用Write()输入学生成绩,用Average()计算每个学生的平均分,最后用Display()显示每个学生的成绩。实验(1)程序:# include # include class Score private: int No; char Name8; float Math,Phi,Data,Ave; public: void Write(int no,char name,float math,float phi,float data) No=no; strcpy(Name,name); Math=math; Phi=phi; Data=data; void Average(void) Ave=(Math+Phi+Data)/3; void Display() coutNotNametMatht; coutPhitDatatAven; ;void main(void) int i,no; char name8; float math,phi,data; Score s3;coutInput 3 student datan; for (i=0;inonamemathphidata; si.Write(no,name,math,phi,data); si.Average(); cout学号 姓名 数学 物理 数据结构 平均分n;for (i=0;i3;i+) si.Display(); 实验(2)定义一个复数类Complex,复数的实部Real与虚部Image定义为私有数据成员。用复数类定义复数对象c1、c2、c3,用默认构造函数将c1初始化为c1=12+10i ,将c2初始化为c2=0+0i,用拷贝构造函数将c3初始化为c3=12+10i。用公有成员函数Dispaly()显示复数c1、c2与c3 的内容。实验(2)程序:# include class Complex private: float Real,Image; public: Complex(float r,float i) /定义有参构造函数 Real=r; Image=i; Complex(Complex &c) /定义拷贝构造函数 Real=c.Real; Image=c.Image; Complex() /定义无参构造函数 Real=0; Image=0; void Display() coutReal+Imagein; ;void main(void) Complex c1(12,10),c2,c3(c1); c1.Display(); c2.Display(); c3.Display(); 结果及分析日实验(1)结果:实验(1)分析:编写程序,运行程序,输入三个学生的学号、姓名、数学成绩、物理成绩、数据结构成绩,输出三个学生的学号、姓名、数学成绩、物理成绩、数据结构成绩以及每个人的平均分。实验(2)结果:实验(2)分析:编写程序,运行程序,默认构造函数将c1初始化为c1=12+10i,将c2初始化为c2=0+0i,用拷贝构造函数将c3初始化为c3=12+10i,并且讲c1、c2、c3显示出来。收获及体会通过对这两个实验编写,我更加熟练的掌握类与对象的定义与使用方法,能够使用构造函数、拷贝构造函数进行程序的编写,掌握析构函数的定义与使用方法,理解构造函数与析构函数的调用过程。教师评语实验四数组与指针实验目的(1)初步学会指针数组的定义与使用方法。(2)了解指向一维数组的指针变量的概念,能用指向一维数组的指针变量按行处理二维数组的问题。(3)理解返回指针值函数的概念、定义格式,学会用返回指针值函数处理字符串问题。(4)理解函数指针与函数指针变量的概念,学会用函数指针变量处理不同函数数学计算问题。实验准备(1)编写实验程序(2)在VC+运行环境中,输入源程序;(3)编译运行源程序;(4)输入测试数据进行程序测试;(5)写出实验输入数据与运行结果。实验过程实验(1)定义一个二维字符数组s380及指针数组p3,用cin.getline(si,80) 输入3个字符串到二维数组3行中,然后用指针数组p对字符串进行降序排列(要求用擂台法),最后用指针数组p输出排序后的结果,用字符数组s输出排序前的三个字符串。实验(1)程序:#include # include void main(void) char s380; char *p3=s0,s1,s2; char *pc; int i,j,k; coutInput 3 String:endl; for (i=0;ipi; for (i=0;i2;i+) k=i;for (j=i+1;j3;j+) if (strcmp (pi,pj)0) k=j; if (k!=i) pc=pi;pi=pk;pk=pc; for ( i=0;i3;i+) coutpiendl;for ( i=0;i3;i+) coutsiendl;实验(2)输入一个二维数组a33,设计一个函数,用指向一维数组的指针变量和二维数组的行数作为函数的参数,求出平均值、最大值和最小值,并输出。实验(2)程序:#include float ave(float (*p)3,float *max,float *min) float sum=0; int i,j; for(i=0;i3;i+) for(j=0;j3;j+)sum+=(*p)j;if (*max(*p)j) *min=(*p)j;p+; return sum/9;void main(void) float a33,max,min,average; int i,j; coutInput Data:; for (i=0;i3;i+) for (j=0;jaij; max=min=a00; average=ave(a+0,&max,&min); coutave=averagen; coutmax=maxn; coutmin=minn;结果及分析日实验(1)结果:实验(1)分析:编写并运行程序,输入三个字符串“C+”、“string”、“basic”,对字符串进行降序排列,用指针数组p输出排序后的结果,用字符数组s输出排序前的三个字符串。实验(2)结果:实验(2)分析:编写并运行程序,输入9个数字“40、20、30、15、2、45、60、4、36”,计算出9个数字的平均值、最大值、最小值。收获及体会通过对指针数组的学习,初步学会指针数组的定义与使用方法,了解指向一维数组的指针变量的概念,能用指向一维数组的指针变量按行处理二维数组的问题,理解返回指针值函数的概念、定义格式,学会用返回指针值函数处理字符串问题,理解函数指针与函数指针变量的概念,学会用函数指针变量处理不同函数数学计算问题。教师评语实验五继承与派生类实验目的(1)理解继承与派生的概念;(2)掌握派生类定义格式与使用方法;(3)初步掌握派生类构造函数的定义与使用方法,理解构造函数的调用过程,及基类成员的初始化过程;(4)理解冲突、支配规则与赋值兼容性原则的概念。实验准备(1)编写实验程序;(2)在VC+运行环境中,输入源程序;(3)编译运行源程序;(4)输入测试数据进行程序测试;(5)写出运行结果。实验过程实验(1)定义个人信息类Person,其数据成员有姓名、性别、出生年月。并以Person为基类定义一个学生的派生类Student,增加描述学生的信息:班级、学号、专业、英语成绩和数学成绩。再由基类Person定义一个职工的派生类Employee,增加描述职工的信息:部门、职务、工资。编写程序实现学生与职工信息的输入与输出。实验(1)程序:# include # include class Person private: char Name8; char Sex; char Birth10; public: Person() Person(char name,char sex,char birth) strcpy(Name,name); Sex=sex; strcpy(Birth,birth); void Show() coutNametSext; coutBirtht; ;class Student:public Person private: char Sclass10; int No; char Major10; float Eng,Math; public:Student():Person() Student(char name,char sex,char birth,char sclass,int no,char major,float eng,float math):Person(name,sex,birth) strcpy(Sclass,sclass); No=no; strcpy(Major,major); Eng=eng; Math=math; void Print() Person:Show(); coutSclasstNot; coutMajortEngtMathendl; ;class Employee :public Person private: char Department10; char Title10; float Salary; public: Employee():Person() Employee(char name,char sex,char birth,char department10,char title10, float salary) : Person(name,sex,birth) strcpy(Department,department); strcpy(Title,title); Salary=salary; void Print() Person:Show(); coutDepartmentt; coutTitletSalaryendl; ;void main(void) int no; char name8,sex,birth10,major10,class110,depa10,title10; float eng,math,salary; Student *s; Employee *e;coutInput a student datanamesexbirthclass1nomajorengmath; s=new Student(name,sex,birth,class1,no,major,eng,math); coutPrint(); coutInput an employee datanamesexbirthdepatitlesalary; e=new Employee(name,sex,birth,depa,title,salary); coutPrint();实验(2)定义描述职工档案的类Archives,私有数据成员为职工号(No)、姓名(Name8)、性别(Sex)、年龄(Age)。成员函数有:构造函数、显示职工信息的函数Show()。再由职工档案类派生出职工工资类Laborage,在职工工资类Laborage中新增数据成员:应发工资(SSalary)、社保金(Security)、实发工资(Fsalary),其成员函数有:构造函数,计算实发工资的函数Count(),计算公式为:实发工资=应发工资社保金。显示职工档案及工资的函数Display()。实验(2)程序:# include # include class Archives private: int No; char Name8; char Sex; int Age; public: Archives(int n,char name,char s ,int a) No=n; strcpy(Name,name); Sex=s; Age=a; void Show(void) coutNo=NotName=Namet Sex=SextAge=Agen; ;class Laborage:public Archives private: float SSalary,Security,Fsalary; public: Laborage(int n,char name,char s,int a,float ss,float se):Archives(n,name,s,a) SSalary=ss; Security=se;void Count() Fsalary=SSalary-Security;void Display(void) Show(); coutSSalary=SSalarytSecurity=Security tFsalary=Fsalaryn;void main(void) Laborage lab(1001,Yang,M,27,4000,200); lab.Count(); lab.Display();结果及分析日实验(1)结果:实验(1)分析:编写并运行程序,分别输入学生姓名、性别、出生日期、班级、学号、专业、数学成绩、英语成绩;职工的姓名、性别、出生日期、部门、职务、工资,实现学生与职工信息的输出。实验(2)结果:实验(2)分析:在主函数中用Laborage类定义职工对象lab,并赋初始值(1001,”Yang”,M,27,4000,200),然后显示职工档案与工资。收获及体会通过本次实验,我了解了继承与派生的概念,掌握派生类定义格式与使用方法,初步掌握派生类构造函数的定义与使用方法,理解构造函数的调用过程,及基类成员的初始化过程,并能利用继承与派生类去编写程序,但在编写的过程中仍然出现不知道怎么下手的情况,但经过同学的帮助,成功的编写了出来,相信经过一段时间的练习,自己的水平会得到提高。教师评语实验六继承与派生的案例分析实验目的(1)通过案例分析熟悉派生类的构造和析构函数的使用方法,掌握派生类成员的标识与访问。(2)初步掌握派生类构造函数的定义与使用方法,理解构造函数的调用过程,及基类成员的初始化过程;(3)理解冲突、支配规则与赋值兼容性原则的概念。实验准备(1)编写实验程序;(2)在VC+运行环境中,输入源程序;(3)编译运行源程序;(4)输入测试数据进行程序测试;(5)写出运行结果。实验过程实验(1)定义描述矩形的类Rectangle,其数据成员为矩形的中心坐标(X,Y)、长(Length)与宽(Width)。成员函数为计算矩形面积的函数Area()与构造函数。再定义描述圆的类Circle,其数据成员为圆的中心坐标(X,Y)与半径R,其成员函数为构造函数。再由矩形类与圆类多重派生出长方体类Cuboid,其数据成员为长方体的高(High)与体积(Volume)。成员函数为:构造函数,计算体积的函数Vol(),显示矩形坐标(X,Y)、长方体的长、宽、高与体积的函数Show()。主函数中用长方体类定义长方体对象cub,并赋初始值(35,35,35,45,55,55,35,35),最后显示长方体的矩形坐标(X,Y)与长方体的长、宽、高与体积。实验(1)程序:# include # define PI 3.14159class Rectangle /定义一个长方体类 protected: float Length,Width;float Centerx,Centery; public: Rectangle(float l,float w,float x,float y) Length=l; Width=w; Centerx=x; Centery=y;float Area(void) return Length*Width;class Circle /定义一个圆形类 protected: float radius;float Centerx,Centery; public: Circle(float r,float x,float y) radius=r; Centerx=x; Centery=y;double Area(void) return radius*radius*PI;class Cuboid:public Rectangle,public Circle /由基类Rectangle、Circle派生出类Cuboid private: float High; double Volume; public: Cuboid(float l,float w,float x1,float y1,float r,float x2,float y2,float h):Rectangle(l,w,x1,y1),Circle(r,x2,y2) High=h; void Vol(void) /分别计算长方体和圆柱体的体积 / RVolume=Rectangle:Area()*High; Volume=Circle:Area()*High; void Show(void) /分别显示长方体和圆柱体的信息 coutLength=LengthtWidth=Widtht High=Highn; coutRectangle Center coordinate = Rectangle:Centerx, Rectangle:Centeryn; Vol(); coutCuboid Volume=RVolumen; coutRadius=radiustHigh=Highn; coutCircle Center coordinate = Circle:Centerx, Circle:Centeryn; coutCylinder Volume=CVolumen; ;void main (void) Cuboid cub(35,35,35,45,55,55,35,35); cub.Show();结果及分析日实验(1)结果:实验(1)分析:编写并运行程序,主函数中用长方体类定义长方体对象cub,并赋初始值(35,35,35,45,55,55,35,35),最后显示长方体的矩形坐标(X,Y)与长方体的长、宽、高与体积。收获及体会通过本次实验,我熟悉了派生类的构造和析构函数的使用方法,掌握派生类成员的标识与访问。掌握了派生类构造函数的定义与使用方法,理解构造函数的调用过程,及基类成员的初始化过程。我觉得自己在几次实验后,编程水平得到了提高。教师评语实验七多态性案例分析实验目的(1)通过案例分析熟悉多态性的使用方法,掌握派生类成员的标识与访问。(2)初步掌握构造函数的定义与使用方法,理解构造函数的调用过程,及基类成员的初始化过程;(3)通过案例分析掌握虚构函数、抽象类的使用方法,熟悉C+语言的算法设计。实验准备(1)编写实验程序;(2)在VC+运行环境中,输入源程序;(3)编译运行源程序;(4)输入测试数据进行程序测试;(5)写出运行结果。实验过程实验(1)将“+”、“-”运算重载为复数类的成员函数。 实部和虚部分别相加减。两个操作数都是复数类的对象。实验(1)程序:#includeusing namespace std;class complex/复数类声明public:/外部接口complex(double r=0.0,double i=0.0)real=r;imag=i;/构造函数complex operator + (complex c2); /+重载为成员函数complex operator - (complex c2); /-重载为成员函数void display();/输出复数private:/私有数据成员double real;/复数实部double imag;/复数虚部;complex complex:operator +(complex c2) /重载函数实现complex c;c.real=c2.real+real;c.imag=c2.imag+imag;return complex(c.real,c.imag);complex complex:operator -(complex c2) /重载函数实现complex c;c.real=real-c2.real;c.imag=imag-c2.imag;return complex(c.real,c.imag);void complex:display() cout(real,imag)endl; int main() /主函数complex c1(5,4),c2(2,10),c3; /声明复数类的对象coutc1=; c1.display();coutc2=; c2.display();c3=c1-c2;/使用重载运算符完成复数减法coutc3=c1-c2=;c3.display();c3=c1+c2;/使用重载运算符完成复数加法coutc3=c1+c2=;c3.display();结果及分析日实验(1)结果:实验(1)分析:编写并运行程序,设置c1,c2分别为(5,4)、(2,10),计算出c1-c2、c1+c2,并输出结果。收获及体会通过案例分析熟悉多态性的使用方法,掌握派生类成员的标识与访问,初步掌握构造函数的定义与使用方法,理解构造函数的调用过程,及基类成员的初始化过程,通过案例分析掌握虚构函数、抽象类的使用方法,熟悉C+语言的算法设计。教师评语实验八群体类和群体数据组织、泛型程序设计、流类库与输入/输出实验目的(1)理解流、流类、流类体系的概念;(2)学会用预定义格式控制函数设置输出格式(数制、宽度、小数点等);(3)掌握文本文件的使用方法;(4)初步掌握二进制文件的使用方法实验准备(1)编写实验程序;(2)在VC+运行环境中,输入源程序;(3)编译运行源程序;(4)输入实验数据,写出运行结果。实验过程实验(1)定义描述职工工资的类Laborage,数据成员为职工号(No)、姓名(Name8)、应发工资(Ssalary)、社保金(Security)、实发工资(Fsalary)。 定义公有成员函数Input(),在Input()函数内输入职工号、姓名(用getline函数)、应发工资、社保金,实发工资由公式:Fsalary=Ssalary-Security计算。定义输出职工工资的成员函数Show()。在显示函数Show()中,职工号、姓名的输出域宽为8、左对齐,其余数据的输出域宽为10、右对齐、保留小数点后两位,输出格式均用预定义格式控制函数设置。实验(1)程序:# include # include class Laborage private: int No; char Name8; float Ssalary,Security,Fsalary; public: void Input
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西安二建报考试题及答案
- 秋水考试题及答案
- 乒乓球规则考试题及答案
- 民法考试题库及答案
- 焦虑考试题及答案
- 监理初级考试题库及答案
- 正阳医疗招聘考试试题及答案
- α-Glucosidase-IN-87-生命科学试剂-MCE
- 体系试题及答案
- 2025年农村产业融合与农村金融风险防控体系构建研究
- 2025年河北省中考麒麟卷地理(三)及答案
- 河南天一大联考2025年高二下学期期末学业质量监测英语试题
- 财税法考试试题及答案
- 2025入党考试试题及答案
- DB32/T 4593-2023研究型医院建设规范
- 基于轻量型CNN的无人机低空目标检测研究
- DB3415-T 82-2024 急流救援技术培训规范
- 智能制造系统-智能制造技术与未来
- 2025山东产权交易集团有限公司招聘(校招社招)29人笔试参考题库附带答案详解
- 2025年北京市水务局所属事业单位招聘工作人员101人笔试高频重点提升(共500题)附带答案详解
- 【MOOC】新媒体文化十二讲-暨南大学 中国大学慕课MOOC答案
评论
0/150
提交评论