c上机实验报告.doc

上传人:文库蛋蛋多 文档编号:2384343 上传时间:2023-02-17 格式:DOC 页数:36 大小:249.50KB
返回 下载 相关 举报
c上机实验报告.doc_第1页
第1页 / 共36页
c上机实验报告.doc_第2页
第2页 / 共36页
c上机实验报告.doc_第3页
第3页 / 共36页
c上机实验报告.doc_第4页
第4页 / 共36页
c上机实验报告.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《c上机实验报告.doc》由会员分享,可在线阅读,更多相关《c上机实验报告.doc(36页珍藏版)》请在三一办公上搜索。

1、成绩辽宁工程技术大学上机实验报告课程名称嵌入式程序设计(C+)学院软件学院专业嵌入式软件班级嵌软12-1学号姓名日期2015.01.17-2015.01.18目录实验一 熟悉VC+编程环境1实验二 带有循环语句的C+程序5实验三 熟悉VC+编程环境9实验四 类与对象14实验五 继承与派生19实验六 友元函数与运算符重载22实验七 指针数组26实验八 函数的定义与调用30实验一熟悉VC+编程环境实验目的(1)熟悉VC+编程开发环境。(2)掌握在VC+集成开发环境中编译、调试与运行程序的方法。(3)掌握简单的出入输出程序编写,调试,运行。实验准备(1)准备下载安装一个VC+编程软件。(2)复习书本

2、前三章,回顾C+编程基本原理及程序格式。(3)从书上挑选源程序作为实验程序。(4)准备好新建工程,设置文件保存地址。实验过程一、 程序一1. 实验内容: 新建c+源程序,使之输出一个字符串。2. 程序代码:# include void main() cout *n; cout Hello!n; cout *n;3. 调试,运行,分析结果。二、 程序二1. 实验内容: 编写一个C+程序,要求输入一个矩形的长和宽,输出面积和周长。2. 程序代码:# include void main() float a,b ,L,S; cout请输入一个矩形的长与宽:ab; L=(a+b)*2;S=a*b; co

3、ut矩形的长与宽: a和bendl;cout矩形的周长: Lendl;cout矩形的面积: Sendl;3.调试,运行,分析结果。结果及分析日一、 程序结果1. 程序一运行及结果截图:图1-1程序一运行前截图图1-2程序一运行结果截图2. 程序二运行及结果截图:图1-3程序二运行前截图图1-4程序二运行结果截图二、 程序分析1. 程序一结果分析:这是一个简单的纯输出小程序,双引号内的内容是直接原文输出,而没有引号的输出变量的值。”/n“和c语言一样是换行,c+中也可以用endl。因此结果显然就是Hello!,上下一排星号为了美观。2. 程序二结果分析: 这是一个简单的算法求面积和周长的程序,有

4、出入有输出。运行时会输出一短文字,让你从键盘输入长和宽,输入4空格再输入5后回车便得到结果,对应长宽,面积和周长。收获及体会(1)初步学会VC+开发环境中,简单程序运行的方法。(2)熟悉了VC+编程环境,会一些简单操作。(3)在编程中遇到一些问题,格式必须规范,不然提示出错,给不到结果。(4)vc+编程环境其实和c语言的差不多,严格的来说c+是更完善的c语言,因此学好c语言便是为c+打下基础,c+的学习便是知识的扩展提高。教师评语实验二带有循环语句的C+程序实验目的(1)学会编写带有简单循环语句的c+程序,能看懂带有复杂循环的c+程序。(2)掌握直到和当型循环。(3)掌握dowhile,for

5、,dowhile语句的使用方法。实验准备(1)复习c+语言程序设计的第二章,回顾算法章节的循环结构。(2)准备上机源程序,并预计结果。(3)画出对应的程序流程图。实验过程一、程序一1.实验内容: 输入一行字符,分别统计出其中英文字母、空格、数字字符和其它字符的个数。2. 程序代码:# include void main(void) char c; int i,letter=0,number=0,blank=0,other=0; cout请输入字符串:; cin.get(c); /get(c)函数用于从键盘上提取一个字符 while(c!=n) if (a=c & c=z | A=c & c=Z

6、) letter+; else if (0=c & c=9) number+; else if (c= ) blank+; else other+; cin.get(c); coutletter=letterendl; coutnumber=numberendl; coutblank=blankendl; coutother=otherendl;3. 调试,运行,分析结果。二、 程序二1. 实验内容:设有一个数列,它的前四项为0、0、2、5,以后每项分别是其前四项之和,编程求此数列的前20项。2. 程序代码:# include void main(void) long f1,f2,f3,f4,

7、i; f1=0; f2=0; f3=2; f4=5; for (i=1;i=5;i+) coutf1tf2tf3tf4tendl; f1=f1+f2+f3+f4; f2=f2+f3+f4+f1; f3=f3+f4+f1+f2; f4=f4+f1+f2+f3; 3. 调试,运行,分析结果。三、 程序三1. 实验内容: 求出1599中能被3整除,且至少有一位数字为5的所有整数。如15、51、513均是满足条件的整数。2. 程序代码:# include void main() int i,a,b,c,j=1; for (i=1;i=599;i+) if (i%3=0) a=i/100; b=i%10

8、0/10; c=i%100%10; if (a=5) | (b=5) | (c=5) coutit; if (j%5=0) coutendl; j+; coutendl;3.调试,运行,分析结果。结果及分析日一、 运行结果1. 程序一运行结果截图:图2-1程序一运行结果截图2. 程序二运行结果截图:图2-2程序二运行结果截图3. 程序三运行结果截图:图2-3程序三运行结果截图二、 程序分析1. 程序一结果分析:这个实验是用while语句统计出一行字符里字母、数字、空格及其他的个数。开始分别初始化为0,当读的字符不是”n“,进入判断语句,根据ASCLL码判断是字母还是数字,空格则是空字符,否则就

9、是其他。出现运行界面时,光标闪烁,提示输入字符串,回车得到统计结果。2. 程序二结果分析:这个实验用for循环5次,每次按行输出4个数满足后一个数是前4个数的和,从而巧妙的输出前20项。其中用t和endl控制输出格式。整个代码简单明了,结构清晰。3. 程序三结果分析: 这个实验用for循环,并用判断语句if选出符合条件的数字输出。用除和取余判定数是否符合条件。运行时,系统则自动算出符合条件的数并输出。收获及体会(1)掌握了直到和当循环的条件及区别。(2)for循环用得比较多,应为简单明了。(3)当遇到循环语句时特别要注意边界值的等号。(4)学会判断字符串中的字符是数还是字母用ASCLL码很方便

10、。(5)循环经常和判断语句连用,以选出合适的。教师评语实验三熟悉VC+编程环境实验目的(1)掌握一维数组的定义、初始化赋值、数组元素的引用方法。(2)掌握二维数组的定义、初始化赋值、数组元素的引用方法。(3)学会求数组元素中的最大值、最小值、平均值的方法。实验准备(1)复习c+语言程序设计第六章数组相关知识,回顾数组的定义及初始化方法。(2)寻找相关源程序作为实验代码。实验过程一、程序一1.实验内容: 某班第1组有10个学生,进行了C+考试,编写程序将考试成绩输入一维数组,并求出C+的平均成绩及优(90100)、良(8089)、中(7079)、及格(6069)与不及格(059)学生的人数。 实

11、验数据:90、85、80、75、70、65、60、55、50、452. 程序代码:#include #include #define N 10void main(void) float sum=0.0; int i,b=0,0,0,0,0,aN; coutInput 10 score:n; for (i=0;iai; for (i=0;i=N-1;i+) sum=sum+ai; switch (ai/10) case 10: case 9: b0+;break; case 8: b1+;break; case 7: b2+;break;case 6: b3+;break; default: b

12、4+; cout优: b0n; cout良: b1n; cout中: b2n; cout及格: b3n; cout不及格: b4n;cout平均分: sum/N; coutendl;3. 调试,运行,分析结果。二、 程序二1. 实验内容:输入一个5行5列的二维数组,编程实现:求出其中的最大值和最小值及其对应的行列位置;求出对角线上各元素之和。 实验数据:12345234563456745678567892. 程序代码:#include #include #define N 5void main(void) float aNN,max,min,sum; int i,j,r1=0,r2=0,c1=

13、0,c2=0; coutInput a55:endl; for(i=0; iN;i+) for(j=0; jaij; max=min=a00;sum=0; for(i=0; iN;i+) for(j=0; jmax)max= aij;r1=i;c1=j;else if (aijmin)min= aij;r2=i;c2=j; if (i=j | i+j=N-1) sum+=aij; coutmax=maxtrow1=r1tcol1=c1endl; coutmin=mintrow2=r2tcol2=c2endl; coutsum=sumendl;3.调试,运行,分析结果。结果及分析日一、 运行结果

14、1. 程序一运行结果截图:图3-1程序一运行结果截图2. 程序二运行结果截图:图3-2程序二运行结果截图二、 程序分析1. 程序一结果分析:本程序是个简单的成绩统计程序。用case语句给数组bi赋值,分5个等级。由于初始化都为1,每有一个在相应区间的成绩时对应元素加1,这样就知道每个等级有多少人。运行程序时,提示输入10个成绩,输完回车便得到如上图结果。2. 程序二结果分析: 本程序涉及到二维数组求最大值、最小值问题。用双重for循环给数组赋值,再用双重for循环,擂台法求出最大值和最小值,还有对角线元素的值,然后再通过cout将结果输出。运行时会先提示输入二维数组,输入数组时一行间元素空格隔

15、开,行间回车,输完回车,得到上图结果。收获及体会(1)通过这次试验,对数组有了更深的认识,加强了数组初始化的方法的记忆。(2)多维数组其实就是特殊的一维数组,只不过结构上有所不同。(3)学会了数组元素中的最大值、最小值、平均值的方法;(4)数组在编程的作用非常大,应用广,同时有了数组这样的数据群体,使得编程方便许多。教师评语实验四类与对象实验目的(1)学会类与对象的声明及调用。(2)掌握构造函数、拷贝构造函数的定义与使用方法。(3)掌握析构函数的定义与使用方法。(4)掌握类的成员函数的调用和类私有成员的定义。实验准备(1)复习c+语言程序设计第四章类与对象,回顾相关内容。(2)准备上机源程序,

16、作为实验。(3)找出程序用构造函数析构函数和拷贝构造函数部分,重点标记。实验过程一、程序一1.实验内容: 定义一个复数类Complex,复数的实部Real与虚部Image定义为私有数据成员。用复数类定义复数对象c1、c2、c3,用默认构造函数将c1初始化为c1=20+40i ,将c2初始化为c2=0+0i,用拷贝构造函数将c3初始化为c3=20+40i。用公有成员函数Dispaly()显示复数c1、c2与c3 的内容。2. 程序代码:# include class Complex private: float Real,Image; public: Complex(float r,float

17、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(10,20),c2,c3(c1); c1.Display(); c2.Display(); c3.Display(); 3. 调试,运行,分析结果。二、 程序二1. 实验内容: 定义一个矩形类Rectangle,矩形的左上角(L

18、eft,Top)与右下角坐标(Right,Bottom)定义为保护数据成员。用公有成员函数Diagonal()计算出矩形对角线的长度,公有成员函数Show()显示矩形左上角与右下角坐标及对角线长度。在主函数中用new运算符动态建立矩形对象r1,初值为(10,10,20,20)。然后调用Show()显示矩形左上角与右下角坐标及对角线长度。最后用delete运算符回收为矩形动态分配的存储空间。2. 程序代码:# include # include class Rectangle protected: float Left,Top; float Right,Bottom; public: Recta

19、ngle(float l,float t, float r,float b) Left=l;Top=t; Right=r;Bottom=b; Rectangle(Rectangle & R) Left=0;Top=0; Right=R.Right;Bottom=R.Bottom; double Diagonal() return sqrt(Left-Right)* (Left-Right)+(Top-Bottom)*(Top-Bottom); void Show() cout(Left,Top)=(Left,Top)n; cout(Right,Bottom)=(Right,Bottom)n;

20、cout Diagonal= Diagonal()Show(); delete r1; 3. 调试,运行,分析结果。结果及分析日一、 运行结果1. 程序一运行结果截图:图4-1程序一运行结果截图2. 程序二运行结果截图:图4-2程序二运行结果截图二、 程序分析1. 程序一结果分析:这个程序定义了一个复数类,类里有俩个构造函数,一个默认的,一个带参数的,除此之外还定义了一个拷贝构造函数。类的成员函数display实现了复数的实部和虚部输出。而主函数定义了3个类对象,c1,c2,c3,分别带参数,不带参数和拷贝函数初始化。程序运行时,结果是将3个复数的实部和虚部显示出来。2. 程序二结果分析: 本

21、程序定义了一个矩形类,类里定义了矩形上下左右边的坐标,构造函数和拷贝构造函数。Diagonal函数求出矩形对角线的长度,show函数则显示矩形左上和右下点的坐标。程序运行时直接输出坐标和对角线长度。收获及体会(1)更加熟练类和对象的定义,构造函数的方法和析构函数。(2)一个非抽象类一般都有构造函数和析构函数,如果没有程序则调用系统默认的构造函数和析构函数。(3)类里分三种成员,私有,保护和公共,使得类与类间结构清晰,关系明确。教师评语实验五继承与派生实验目的(1)理解继承与派生的概念。(2)学会派生类定义格式与使用方法。(3)掌握派生类构造函数的定义与使用方法。实验准备(1)复习c+语言程序设

22、计第七章,回顾继承和派生的概念。(2)准备上机源程序,作为上机实验。(3)挑出程序中基类和派生类,以示区别。实验过程一、程序一1.实验内容: 定义描述职工档案的类Archives,私有数据成员为职工号(No)、姓名(Name8)、性别(Sex)、年龄(Age)。成员函数有:构造函数、显示职工信息的函数Show()。再由职工档案类派生出职工工资类Laborage,在职工工资类Laborage中新增数据成员:应发工资(SSalary)、社保金(Security)、实发工资(Fsalary),其成员函数有:构造函数,计算实发工资的函数Count(),计算公式为:实发工资=应发工资社保金。显示职工档案

23、及工资的函数Display()。在主函数中用Laborage类定义职工对象lab,并赋初始值(1001,”Cheng”,M,21,2000,100),然后显示职工档案与工资。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=Name

24、t 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=Sec

25、urity tFsalary=Fsalaryn;void main(void) Laborage lab(1001,Zhou,M,52,2000,200); lab.Count(); lab.Display();3.调试,运行,分析结果。结果及分析日一、 运行结果:1. 程序一运行结果截图:图5-1程序一运行结果截图二、 程序分析1. 程序一结果分析: 本程序基类是职工类,派生出职工工资类。基类私有成员里都是职工信息,成员函数show显示出职工信息。派生类添加自己的工资数据成员,成员函数cout计算工资,最后输出工资。程序运行时,直接显示出职工信息及工资,由于程序里对象已经初始化了,所以不用输

26、入。收获及体会(1)熟悉了派生的类别,以及派生的定义和调用。(2)c+与c的最大区别便是c+里面有类的定义,还有派生和继承,也就是面向对象。(3)继承基类是“:”,二函数定义是“:”,俩者有所区别。(4)c+和java很相似,但是继承定义不一样。教师评语实验六友元函数与运算符重载实验目的(1)理解友元函数与运算符重载函数的概念。(2)掌握友元函数的定义与使用方法。(3)掌握运算符重载函数的定义与使用方法。实验准备(1)复习c+ppt上友元函数和运算符重载的知识,回顾友元函数和运算符的定义及使用方法。(2)准备上机源程序,作为实验内容。实验过程一、 程序一1. 实验内容: 定义一个人民币类Mon

27、ey,类中数据成员为元、角、分。用成员函数与友元函数重载“”运算符,实现人民币对象的减1运算。在主函数中定义人民币对象m1=10元8角5分及对象m2、m3。对m1作前置“”并赋给m2。对m1作后置“”并赋给m3。显示m1、m2、m3的结果。2. 程序代码:# include # include class Money private: float Yuans,Jiaos,Fens; public: Money() /定义默认的构造函数 Yuans=Jiaos=Fens=0; Money(float y,float j,float f) Yuans=y; Jiaos=j; Fens=f; Mon

28、ey operator -( ); Money operator -( int ); void Show(void) coutYuans元Jiaos角Fens分endl; ;Money Money:operator - () if (Fens=0) if (Jiaos=0) if (Yuans=0) coutcan not -n ; else Yuans-; Jiaos=9; else Jiaos-; Fens=9; else Fens-; return *this; /返回自加后的人民币对象值Money Money:operator- (int ) Money temp=*this; /将自

29、加前人民币对象值存入临时对象temp if (Fens=0) if (Jiaos=0) if (Yuans=0) coutcan not -n ; else Yuans-; Jiaos=9; else Jiaos-; Fens=9; else Fens-; return temp;void main( void) Money m1(10,8,5),m2,m3; coutm1= ; m1.Show(); m2= -m1; m3= m1-; coutm2= ; m2.Show(); coutm3= ; m3.Show(); coutm1= ; m1.Show(); 3. 调试,运行,分析结果。结果

30、及分析日一、 运行结果1. 程序一运行结果截图:图6-1程序一运行结果截图二、 程序分析1. 程序一结果分析: 本程序定义了一个Money类,里面有三个变量元角分三个变量。两个重载函数,分别前置自减和后置自减,成员函数show显示元角分的值。然后在下面接着定义重载函数。在主函数里定义三个对象,只有m1赋值了,让后通过运算符重载运算输出m1,m2,m3的值,看其变化。程序运行时直接输出几个对象的值。收获及体会(1)运算符重载和函数重载一样,都体现出c+多态的特点。(2)函数重载里区别不同构造函数的有参数的个数和类型,还有是否为常函数。(3)友元函数是单向的,一个函数个另一个函数的友元函数,但另一

31、个不一定是这个函数的友元。教师评语实验七指针数组实验目的(1)掌握指针数组的定义与使用方法。(2)了解指针数组在内存的分配,及调用。(3)理解返回指针值函数的概念、定义格式,学会用返回指针值函数处理字符串问题。(4)理解函数指针与函数指针变量的概念,学会用函数指针变量处理不同函数数学计算问题。实验准备(1)复习c+语言程序设计的第六章,回顾指针数组的相关内容。(2)准备上机源程序,作为上机实验。实验过程一、程序一1.实验内容: 定义一个二维字符数组s380及指针数组p3,用cin.getline(si,80) 输入3个字符串到二维数组3行中,然后用指针数组p对字符串进行降序排列(要求用擂台法)

32、,最后用指针数组p输出排序后的结果,用字符数组s输出排序前的三个字符串。2. 程序代码:#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;

33、i3;i+) coutsiendl;3.调试,运行,分析结果。二、程序二1.实验内容: 输入一个二维数组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 a3

34、3,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;3.调试,运行,分析结果。结果及分析日一、 运行结果1.程序一运行结果截图:图7-1程序一运行结果截图2.程序二运行结果截图:图7-2程序二运行结果截图二、 程序分析1. 程序一结果分析:本程序在主函数中定义了一个二维数组,然后定义了一个指针,指针分别指向二维数组行的首地址,

35、cin输入三个字符串,用for循环进行排序,然后输出出来。进入运行界面后,提示出入3个字符串,回车后,将排序结果输出。2. 程序二结果分析: 本程序用指向一维数组的指针变量和二维数组的行数作为函数的参数,定义了函数,函数里求出数组里的平均值,最大值和最小值。在主程序中用for循环输入数组,然后调用函数。在运行界面时,先输入二维数组的值,9个数,空格隔开即可。回车得到运算结果。收获及体会(1)初步学会指针数组的定义与使用方法。(2)数组名和指针都可以调用,其关系紧密且需要细细琢磨。(3)数组问题开始感觉很难接受,搞懂搞透后就清晰多了。教师评语实验八函数的定义与调用实验目的(1)掌握函数的定义及调用方法。(2)理解参数传送过程中,值传送与传地址的过程与区别。(3)了解用递归和嵌套编写程序方法。实验准备(1)复习c+语言程序设计第三章,回顾函数相关知识。(2)准备上机源程序,作为实验程序。(3)标注函数体,注明参数部分。实验过程一、 程序一1. 实验内容: 分别用冒泡法(升序)、选择法(降序)、擂台法(

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号