已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
成绩辽宁工程技术大学上机实验报告课程名称嵌入式程序设计(c+)学院软件学院专业嵌入式软件班级嵌软12-1学号姓名日期2015.01.17-2015.01.181目录实验一 熟悉vc+编程环境1实验二 带有循环语句的c+程序5实验三 熟悉vc+编程环境9实验四 类与对象14实验五 继承与派生19实验六 友元函数与运算符重载22实验七 指针数组26实验八 函数的定义与调用30实验一熟悉vc+编程环境实验目的(1)熟悉vc+编程开发环境。(2)掌握在vc+集成开发环境中编译、调试与运行程序的方法。(3)掌握简单的出入输出程序编写,调试,运行。实验准备(1)准备下载安装一个vc+编程软件。(2)复习书本前三章,回顾c+编程基本原理及程序格式。(3)从书上挑选源程序作为实验程序。(4)准备好新建工程,设置文件保存地址。实验过程1、 程序一1. 实验内容: 新建c+源程序,使之输出一个字符串。2. 程序代码:# include void main() cout *n; cout hello!n; cout *n;3. 调试,运行,分析结果。2、 程序二1. 实验内容: 编写一个c+程序,要求输入一个矩形的长和宽,输出面积和周长。2. 程序代码:# include void main() float a,b ,l,s; cout请输入一个矩形的长与宽:ab; l=(a+b)*2;s=a*b; cout矩形的长与宽: a和bendl;cout矩形的周长: lendl;cout矩形的面积: sendl;3.调试,运行,分析结果。结果及分析日1、 程序结果1. 程序一运行及结果截图:图1-1程序一运行前截图图1-2程序一运行结果截图2. 程序二运行及结果截图:图1-3程序二运行前截图图1-4程序二运行结果截图2、 程序分析1. 程序一结果分析:这是一个简单的纯输出小程序,双引号内的内容是直接原文输出,而没有引号的输出变量的值。”/n“和c语言一样是换行,c+中也可以用endl。因此结果显然就是hello!,上下一排星号为了美观。2. 程序二结果分析: 这是一个简单的算法求面积和周长的程序,有出入有输出。运行时会输出一短文字,让你从键盘输入长和宽,输入4空格再输入5后回车便得到结果,对应长宽,面积和周长。收获及体会(1)初步学会vc+开发环境中,简单程序运行的方法。(2)熟悉了vc+编程环境,会一些简单操作。(3)在编程中遇到一些问题,格式必须规范,不然提示出错,给不到结果。(4)vc+编程环境其实和c语言的差不多,严格的来说c+是更完善的c语言,因此学好c语言便是为c+打下基础,c+的学习便是知识的扩展提高。教师评语实验二带有循环语句的c+程序实验目的(1)学会编写带有简单循环语句的c+程序,能看懂带有复杂循环的c+程序。(2)掌握直到和当型循环。(3)掌握dowhile,for,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) 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. 调试,运行,分析结果。2、 程序二1. 实验内容:设有一个数列,它的前四项为0、0、2、5,以后每项分别是其前四项之和,编程求此数列的前20项。2. 程序代码:# include void main(void) long f1,f2,f3,f4,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. 调试,运行,分析结果。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%100/10; c=i%100%10; if (a=5) | (b=5) | (c=5) coutit; if (j%5=0) coutendl; j+; coutendl;3.调试,运行,分析结果。结果及分析日1、 运行结果1. 程序一运行结果截图:图2-1程序一运行结果截图2. 程序二运行结果截图:图2-2程序二运行结果截图3. 程序三运行结果截图:图2-3程序三运行结果截图2、 程序分析1. 程序一结果分析:这个实验是用while语句统计出一行字符里字母、数字、空格及其他的个数。开始分别初始化为0,当读的字符不是”n“,进入判断语句,根据ascll码判断是字母还是数字,空格则是空字符,否则就是其他。出现运行界面时,光标闪烁,提示输入字符串,回车得到统计结果。2. 程序二结果分析:这个实验用for循环5次,每次按行输出4个数满足后一个数是前4个数的和,从而巧妙的输出前20项。其中用t和endl控制输出格式。整个代码简单明了,结构清晰。3. 程序三结果分析: 这个实验用for循环,并用判断语句if选出符合条件的数字输出。用除和取余判定数是否符合条件。运行时,系统则自动算出符合条件的数并输出。收获及体会(1)掌握了直到和当循环的条件及区别。(2)for循环用得比较多,应为简单明了。(3)当遇到循环语句时特别要注意边界值的等号。(4)学会判断字符串中的字符是数还是字母用ascll码很方便。(5)循环经常和判断语句连用,以选出合适的。教师评语实验三熟悉vc+编程环境实验目的(1)掌握一维数组的定义、初始化赋值、数组元素的引用方法。(2)掌握二维数组的定义、初始化赋值、数组元素的引用方法。(3)学会求数组元素中的最大值、最小值、平均值的方法。实验准备(1)复习c+语言程序设计第六章数组相关知识,回顾数组的定义及初始化方法。(2)寻找相关源程序作为实验代码。实验过程一、程序一1.实验内容: 某班第1组有10个学生,进行了c+考试,编写程序将考试成绩输入一维数组,并求出c+的平均成绩及优(90100)、良(8089)、中(7079)、及格(6069)与不及格(059)学生的人数。 实验数据: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: b4+; cout优: b0n; cout良: b1n; cout中: b2n; cout及格: b3n; cout不及格: b4n;cout平均分: sum/n; coutendl;3. 调试,运行,分析结果。2、 程序二1. 实验内容:输入一个5行5列的二维数组,编程实现:求出其中的最大值和最小值及其对应的行列位置;求出对角线上各元素之和。 实验数据:12345234563456745678567892. 程序代码:#include #include #define n 5void main(void) float ann,max,min,sum; int i,j,r1=0,r2=0,c1=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.调试,运行,分析结果。结果及分析日1、 运行结果1. 程序一运行结果截图:图3-1程序一运行结果截图2. 程序二运行结果截图:图3-2程序二运行结果截图2、 程序分析1. 程序一结果分析:本程序是个简单的成绩统计程序。用case语句给数组bi赋值,分5个等级。由于初始化都为1,每有一个在相应区间的成绩时对应元素加1,这样就知道每个等级有多少人。运行程序时,提示输入10个成绩,输完回车便得到如上图结果。2. 程序二结果分析: 本程序涉及到二维数组求最大值、最小值问题。用双重for循环给数组赋值,再用双重for循环,擂台法求出最大值和最小值,还有对角线元素的值,然后再通过cout将结果输出。运行时会先提示输入二维数组,输入数组时一行间元素空格隔开,行间回车,输完回车,得到上图结果。收获及体会(1)通过这次试验,对数组有了更深的认识,加强了数组初始化的方法的记忆。(2)多维数组其实就是特殊的一维数组,只不过结构上有所不同。(3)学会了数组元素中的最大值、最小值、平均值的方法;(4)数组在编程的作用非常大,应用广,同时有了数组这样的数据群体,使得编程方便许多。教师评语实验四类与对象实验目的(1)学会类与对象的声明及调用。(2)掌握构造函数、拷贝构造函数的定义与使用方法。(3)掌握析构函数的定义与使用方法。(4)掌握类的成员函数的调用和类私有成员的定义。实验准备(1)复习c+语言程序设计第四章类与对象,回顾相关内容。(2)准备上机源程序,作为实验。(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 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. 调试,运行,分析结果。2、 程序二1. 实验内容: 定义一个矩形类rectangle,矩形的左上角(left,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: rectangle(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; cout diagonal= diagonal()show(); delete r1; 3. 调试,运行,分析结果。结果及分析日1、 运行结果1. 程序一运行结果截图:图4-1程序一运行结果截图2. 程序二运行结果截图:图4-2程序二运行结果截图2、 程序分析1. 程序一结果分析:这个程序定义了一个复数类,类里有俩个构造函数,一个默认的,一个带参数的,除此之外还定义了一个拷贝构造函数。类的成员函数display实现了复数的实部和虚部输出。而主函数定义了3个类对象,c1,c2,c3,分别带参数,不带参数和拷贝函数初始化。程序运行时,结果是将3个复数的实部和虚部显示出来。2. 程序二结果分析: 本程序定义了一个矩形类,类里定义了矩形上下左右边的坐标,构造函数和拷贝构造函数。diagonal函数求出矩形对角线的长度,show函数则显示矩形左上和右下点的坐标。程序运行时直接输出坐标和对角线长度。收获及体会(1)更加熟练类和对象的定义,构造函数的方法和析构函数。(2)一个非抽象类一般都有构造函数和析构函数,如果没有程序则调用系统默认的构造函数和析构函数。(3)类里分三种成员,私有,保护和公共,使得类与类间结构清晰,关系明确。教师评语实验五继承与派生实验目的(1)理解继承与派生的概念。(2)学会派生类定义格式与使用方法。(3)掌握派生类构造函数的定义与使用方法。实验准备(1)复习c+语言程序设计第七章,回顾继承和派生的概念。(2)准备上机源程序,作为上机实验。(3)挑出程序中基类和派生类,以示区别。实验过程一、程序一1.实验内容: 定义描述职工档案的类archives,私有数据成员为职工号(no)、姓名(name8)、性别(sex)、年龄(age)。成员函数有:构造函数、显示职工信息的函数show()。再由职工档案类派生出职工工资类laborage,在职工工资类laborage中新增数据成员:应发工资(ssalary)、社保金(security)、实发工资(fsalary),其成员函数有:构造函数,计算实发工资的函数count(),计算公式为:实发工资=应发工资社保金。显示职工档案及工资的函数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=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,zhou,m,52,2000,200); lab.count(); lab.display();3.调试,运行,分析结果。结果及分析日1、 运行结果:1. 程序一运行结果截图:图5-1程序一运行结果截图2、 程序分析1. 程序一结果分析: 本程序基类是职工类,派生出职工工资类。基类私有成员里都是职工信息,成员函数show显示出职工信息。派生类添加自己的工资数据成员,成员函数cout计算工资,最后输出工资。程序运行时,直接显示出职工信息及工资,由于程序里对象已经初始化了,所以不用输入。收获及体会(1)熟悉了派生的类别,以及派生的定义和调用。(2)c+与c的最大区别便是c+里面有类的定义,还有派生和继承,也就是面向对象。(3)继承基类是“:”,二函数定义是“:”,俩者有所区别。(4)c+和java很相似,但是继承定义不一样。教师评语实验六友元函数与运算符重载实验目的(1)理解友元函数与运算符重载函数的概念。(2)掌握友元函数的定义与使用方法。(3)掌握运算符重载函数的定义与使用方法。实验准备(1)复习c+ppt上友元函数和运算符重载的知识,回顾友元函数和运算符的定义及使用方法。(2)准备上机源程序,作为实验内容。实验过程1、 程序一1. 实验内容: 定义一个人民币类money,类中数据成员为元、角、分。用成员函数与友元函数重载“”运算符,实现人民币对象的减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; money 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; /将自加前人民币对象值存入临时对象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. 调试,运行,分析结果。结果及分析日1、 运行结果1. 程序一运行结果截图:图6-1程序一运行结果截图2、 程序分析1. 程序一结果分析: 本程序定义了一个money类,里面有三个变量元角分三个变量。两个重载函数,分别前置自减和后置自减,成员函数show显示元角分的值。然后在下面接着定义重载函数。在主函数里定义三个对象,只有m1赋值了,让后通过运算符重载运算输出m1,m2,m3的值,看其变化。程序运行时直接输出几个对象的值。收获及体会(1)运算符重载和函数重载一样,都体现出c+多态的特点。(2)函数重载里区别不同构造函数的有参数的个数和类型,还有是否为常函数。(3)友元函数是单向的,一个函数个另一个函数的友元函数,但另一个不一定是这个函数的友元。教师评语实验七指针数组实验目的(1)掌握指针数组的定义与使用方法。(2)了解指针数组在内存的分配,及调用。(3)理解返回指针值函数的概念、定义格式,学会用返回指针值函数处理字符串问题。(4)理解函数指针与函数指针变量的概念,学会用函数指针变量处理不同函数数学计算问题。实验准备(1)复习c+语言程序设计的第六章,回顾指针数组的相关内容。(2)准备上机源程序,作为上机实验。实验过程一、程序一1.实验内容: 定义一个二维字符数组s380及指针数组p3,用cin.getline(si,80) 输入3个字符串到二维数组3行中,然后用指针数组p对字符串进行降序排列(要求用擂台法),最后用指针数组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;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 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;3.调试,运行,分析结果。结果及分析日1、 运行结果1.程序一运行结果截图:图7-1程序一运行结果截图2.程序二运行结果截图:图7-2程序二运行结果截图2、 程序分析1. 程序一结果分析:本程序在主函数中定义了一个二维数组,然后定义了一个指针,指针分别指向二维数组行的首地址,cin输入三个字符串,用for循环进行排序,然后输出出来。进入运行界面后,提示出入3个字符串,回车后,将排序结果输出。2. 程序二结果分析: 本程序用指向一维数组的指针变量和二维数组的行数作为函数的参数,定义了函数,函数里求出数组里的平均值,最大值和最小值。在主程序中用for循环输入数组,然后调用函数。在运行界面时,先输入二维数组的值,9个数,空格隔开即可。回车得到运算结果。收获及体会(1)初步学会指针数组的定义与使用方法。(2)数组名和指针都可以调用,其关系紧密且需要细细琢磨。(3)数组问题开始感觉很难接受,搞懂搞透后就清晰多了。教师评语实验八函数的定义与调用实验目的(1)掌握函数的定义及调用方法。(2)理解参数传送过程中,值传送与传地址的过程与区别。(3)了解用递归和嵌套编写程序方法。实验准备(1)复习c+语言程序设计第三章,回顾函数相关知识。(2)准备上机源程序,作为实验程序。(3)标注函数体,注明参
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深度解析(2026)《GBT 33519-2017制动器分类》(2026年)深度解析
- Unit 3 Section A(Grammar Focus) 七年级英语上册(人教版2024)
- 创新创业教育:基于信息技术应用创新与AIGC 教案全套 第1-8章 灵感激发探索信创与AIGC的创新融合 -路演为创业发声
- 医疗数据安全治理:区块链技术的质量保障措施
- 医疗数据安全治理中的区块链隔离策略
- 医疗数据安全技术在智慧医院建设中的应用
- 医疗数据安全应急演练的成效评估指标
- 胸外科ERAS课件教学课件
- 胖国王课件教学课件
- 医疗数据安全共享的区块链质量风险管控
- 2025年深圳市福田区选用机关事业单位特聘岗位工作人员考试笔试试卷【附答案】
- (2025年标准)赡养老人协议分摊协议书
- 交强险基本知识培训
- 2024年中国纪检监察学院招聘真题
- GB/T 20863.3-2025起重机分级第3部分:塔式起重机
- 《二次根式的混合运算》教学设计
- 肾病科出科考试题及答案
- 血管外科第三集讲解
- 客运企业事故管理制度
- 个人优势与劣势分析
- 《临床生物化学检验》考试复习题(附答案)
评论
0/150
提交评论