实验6报告
机器人技术基础实验报告6

机器人技术基础实验报告6一、实验目的本次机器人技术基础实验的目的在于深入了解机器人的运动控制、感知与交互能力,并通过实际操作和观察,掌握机器人系统的基本原理和应用方法。
二、实验设备1、机器人本体:采用了一款具有多关节自由度的工业机器人模型。
2、控制器:配备了高性能的运动控制卡和处理器,用于实现对机器人的精确控制。
3、传感器套件:包括视觉传感器、力传感器和距离传感器等,以获取机器人周围环境的信息。
4、编程软件:使用了专业的机器人编程工具,具备图形化编程和代码编辑功能。
三、实验原理1、运动学原理机器人的运动学研究了机器人各个关节的位置、速度和加速度之间的关系。
通过建立数学模型,可以计算出机器人末端执行器在空间中的位置和姿态。
2、动力学原理动力学分析了机器人在运动过程中所受到的力和力矩,以及这些力和力矩对机器人运动的影响。
这对于设计合理的控制策略和驱动系统至关重要。
3、传感器融合技术通过融合多种传感器的数据,如视觉、力和距离等信息,可以使机器人更全面、准确地感知周围环境,从而做出更智能的决策和动作。
四、实验步骤1、机器人系统初始化首先,对机器人进行了机械和电气连接的检查,确保各部件安装牢固且线路连接正常。
然后,通过控制器对机器人进行初始化设置,包括关节零位校准、运动范围设定等。
2、运动控制编程使用编程软件,编写了简单的运动控制程序,实现了机器人的直线运动、圆弧运动和关节空间的运动轨迹规划。
在编程过程中,充分考虑了运动速度、加速度和精度的要求。
3、传感器数据采集与处理启动传感器套件,采集机器人周围环境的信息。
通过编写相应的程序,对传感器数据进行滤波、融合和分析,提取有用的特征和信息。
4、机器人交互实验设计了人机交互场景,通过示教器或上位机软件向机器人发送指令,观察机器人的响应和动作。
同时,机器人也能够根据传感器反馈的信息,主动与环境进行交互,如避障、抓取物体等。
五、实验结果与分析1、运动控制精度通过对机器人运动轨迹的实际测量和与理论轨迹的对比分析,发现机器人在直线运动和圆弧运动中的位置精度能够达到预期要求,但在高速运动时存在一定的误差。
操作系统实验报告6

操作系统实验报告6一、实验目的本次操作系统实验的主要目的是深入了解和掌握操作系统中进程管理、内存管理、文件系统等核心概念和相关技术,通过实际操作和观察,增强对操作系统工作原理的理解,并提高解决实际问题的能力。
二、实验环境本次实验使用的操作系统为 Windows 10,实验工具包括 Visual Studio 2019 等。
三、实验内容(一)进程管理实验1、创建多个进程,并观察它们的运行状态和资源占用情况。
通过编写简单的C++程序,使用Windows API 函数创建多个进程。
在程序中,设置不同的进程优先级和执行时间,观察操作系统如何调度这些进程,以及它们对 CPU 使用率和内存的影响。
2、进程间通信实现了进程间的管道通信和消息传递。
通过创建管道,让两个进程能够相互交换数据。
同时,还使用了 Windows 的消息机制,使进程之间能够发送和接收特定的消息。
(二)内存管理实验1、内存分配与释放使用 C++的动态内存分配函数(如`malloc` 和`free`),在程序运行时动态申请和释放内存。
观察内存使用情况,了解内存碎片的产生和处理。
2、虚拟内存管理研究了 Windows 操作系统的虚拟内存机制,通过查看系统的性能监视器,观察虚拟内存的使用情况,包括页面文件的大小和读写次数。
(三)文件系统实验1、文件操作进行了文件的创建、读取、写入、删除等基本操作。
通过编写程序,对不同类型的文件(如文本文件、二进制文件)进行处理,了解文件系统的工作原理。
2、目录操作实现了目录的创建、删除、遍历等功能。
了解了目录结构在文件系统中的组织方式和管理方法。
四、实验步骤(一)进程管理实验步骤1、打开 Visual Studio 2019,创建一个新的 C++控制台项目。
2、在项目中编写代码,使用`CreateProcess` 函数创建多个进程,并设置它们的优先级和执行时间。
3、编译并运行程序,通过任务管理器观察进程的运行状态和资源占用情况。
分析化学实验报告6

答:放置一会儿粉色褪去,因为空气中二氧化碳溶 于水,使水溶液中酸性增加。
2. 如何计算白醋总酸的百分含量?
答:用消耗氢氧化钠的体积
m% CV 4 M 100% 0.01
乘以氢氧化钠的浓度,得到 醋酸的摩尔数,再乘以4就是
10.00mL醋酸的摩尔数,再乘
以醋酸的分子量,除以0.01,
3.反滴定法适合测定什么物质?对反应有什么要求?
6. 为什么蛋壳需要研碎,且与盐酸的反应要放置30分钟,此反应 过程能否加热?
答:为了反应完全,不能加热,否则CO2会逸出。
实验五、过氧化氢含量H
2
2Mn 5O2 8H 2O
2
2MnO4 5H 2C2O4 6H 2Mn 10CO2 8H 2O
2.蛋壳中碳酸钙含量的测定
(1) 称取0.2~0.25g已经研碎的蛋壳3份, 分别置于锥形瓶中,用滴定管逐滴加入HCl溶 液约30mL,放置30分钟,
(2加入甲基橙指示剂,用氢氧化钠标准 溶液滴定溶液由( )色变为( )色。
(3) 计算碳酸钙的含量。
配置高锰酸钾溶液,为下一次实验准备。
思考题:
1.以酚酞为指示剂时,用碱滴定酸至溶液呈浅粉色为 止,若放置一会儿出现什么现象?为什么?
5、用甲基橙、酚酞两个不同指示剂进行比较滴定时,为什么酸碱体积比VHCl/ VNaOH往 往不等? 答:两指示剂变色范围不同,滴定终点不同。
6、如何检验滴定管是否洗净? 答:透明并无肉眼可见的污物,内外壁能被水均匀地润湿且不挂水珠。
实验二、分析天平的称量练习及自来水硬度的测定
一、实验原理: 1 . 总硬度的测定: 在滴定开始时
一、实验室安全(电,火,玻璃)
二、实验要求 (1)纪律:迟到、安静 (2)卫生:个人要求(从来没有来过) 值日生 (3)预习报告 (4)实验记录 (5)实验报告
物化实验报告6-最大气泡压力法测定溶液的表面张力

一、实验目的:1)掌握最大气泡压力法测定表面张力的原理和技术。
2)通过对不同浓度乙醇溶液表面张力的测定,加深对表面张力、表面自由能、表面张力和吸附量关系的理解。
二、实验原理:1.吉布斯吸附等温式:Γ = -(c/RT)/(dγ/dc)(1)式中,Г为溶液在表层的吸附量;γ为表面张力;c为吸附达到平衡时溶液在介质中的浓度。
朗格谬尔(Langmuir)公式:Γ =Γ∞Kc/(1+Kc)(2)Γ∞为饱和吸附量,即表面被吸附物铺满一层分子时的Г。
c/Γ =(1+Kc)/Γ∞K = c/Γ∞+1/Γ∞K (3)以c/Г对c作图,则图中该直线斜率为1/Г∞。
由所得的Г∞代入A m=1/Г∞L可求被吸附分子的截面积(L为阿伏伽德罗常数)。
2.本实验用气泡最大压力法测定溶液的表面张力,其仪器装置如图:1)恒温套管;2)毛细管(r在0.15~0.2mm);3)U型压力计(内装水);4)分液漏斗;5)吸滤瓶;6)连接橡皮管。
2)将待测表面张力的液体装于表面张力仪中,使毛细管的端面与液面相切,液面即沿毛细管上升,打开抽气瓶的活塞缓缓抽气,毛细管内的液面上受到一个比A瓶中液面上大的压力,当此压力差——附加压力(△p=p大气-p系统)在毛细管端面上产生的作用力稍大于毛细管液体的表面张力时,气泡就从毛细管口脱出,此附加压力与表面张力成正比,与气泡的曲率半径成反比,其关系式为:Δp=2γ/R (4)式中,Δp为附加压力;γ为表面张力;R为气泡的曲率半径。
如果毛细管半径很小,则形成的气泡基本上是球形的。
当气泡开始形成时,表面几乎是平的,这时曲率半径最大;随着气泡的形成,曲率半径逐渐变小,直到形成半球形,这时的曲率半径R和毛细管的半径r相等,曲率半径最小值,根据上式这时附加压力达最大值。
气泡进一步长大,R变大,附加压力则变小,直到气泡逸出。
根据上‘式,R=r 时的最大附加压力为:Δp 最大 = 2γ/r (5)实际测量时,使毛细管端刚与液面接触,则可忽略气泡鼓起所需克服的静压力,这样就可以直接用上式进行计算。
最新实验六(实验报告)

最新实验六(实验报告)实验目的:本次实验旨在探究特定物质在不同条件下的反应特性,以及通过实验数据分析物质的性质和变化规律。
通过对实验过程的观察和结果的记录,加深对理论知识的理解,并提高实验操作技能。
实验材料:1. 试样:待测物质样品2. 试剂:所需的化学反应试剂3. 仪器:天平、烧杯、量筒、滴定管、温度计、pH计、光谱仪等实验步骤:1. 准备阶段:根据实验要求,准确称取适量的试样和试剂,准备好所有实验仪器。
2. 实验操作:按照实验指导书的步骤,进行化学反应操作,记录下每个步骤的具体条件,如温度、pH值、反应时间等。
3. 数据收集:对反应过程中产生的数据进行收集,包括但不限于颜色变化、沉淀形成、气泡产生等。
4. 结果分析:根据收集到的数据,分析反应过程中物质的变化,以及反应的动力学特征。
5. 结论撰写:根据实验结果,撰写实验结论,总结物质的性质和反应特点。
实验结果:1. 反应速率:通过观察和记录,发现在特定条件下,反应速率与预期相符,具体数据见附录。
2. 产物分析:实验中产生的主要产物为X和Y,通过光谱分析确认了其结构。
3. 副反应:在实验过程中,未观察到明显的副反应现象。
4. 影响因素:实验中发现温度和pH值对反应速率有显著影响。
实验讨论:本次实验中,反应的速率和产物与理论预测基本一致,但在实际操作中存在一定的误差,可能的原因包括实验操作的不精确、环境条件的波动等。
未来可以通过改进实验方法和控制实验条件来减少误差。
结论:通过本次实验,我们成功地研究了特定物质在不同条件下的反应特性,并通过数据分析得到了物质的性质和反应规律。
实验结果对理解相关化学反应机制具有重要意义,并为进一步的实验研究提供了基础。
实验报告6功率因数及相序的测量

实验报告6功率因数及相序的测量一、实验目的1.学习使用电能表测量谐波内容;2.学习使用电容器改善功率因数。
二、实验器材1.电能表2.电阻箱3.电感4.电容5.交流电源6.相序表三、实验原理1.功率因数功率因数是指交流电的实功功率与视在功率之比,代表了电能的有效利用情况。
功率因数越高,电能的利用效率越高。
功率因数的计算公式为:功率因数=实功功率/视在功率2.相序在三相交流电系统中,相序是指三相电流或电压的变化先后顺序。
正常情况下,A相、B相和C相的电流或电压按照一定的顺序进行变化。
如果相序发生了颠倒,会引起系统异常,因此需要进行相序检测。
四、实验步骤1.将电阻箱和电感依次串联到交流电源上,并将末端接入电能表的电压端和电流端;2.依次改变电阻箱的阻值,测量不同负载下的视在功率、实功功率和功率因数;3.使用相序表分别测量正序和反序情况下的相序。
五、实验数据记录与分析1.功率因数的测量结果:负载阻值(Ω)视在功率(VA)实功功率(W)功率因数1010008000.82010007000.73010006000.64010005000.52.相序的测量结果:正序:A相→B相→C相反序:A相→C相→B相根据测量结果可知,当负载阻值增加时,视在功率不变,实功功率减小,功率因数也随之减小。
这是因为负载阻值增加导致了电流和电压的相位差增大,从而减小了有用功的输出。
在电能利用的角度,功率因数越接近于1,电能利用效率越高。
六、实验结论1.功率因数是实功功率与视在功率之比,代表了电能的有效利用情况。
功率因数越高,电能利用效率越高;2.对于给定的负载,当负载阻值增加时,功率因数减小;3.相序检测可以判断三相电流或电压的变化先后顺序,保证系统的正常运行。
七、实验心得通过本次实验,我学习到了功率因数和相序的概念,并掌握了测量功率因数和相序的方法。
通过具体实验操作,加深了对功率因数和相序的理解。
在实验过程中,我也遇到了一些问题,例如,电能表的使用和测量误差的处理。
编译原理实验报告6-逆波兰式的翻译和计算

编译原理实验报告6-逆波兰式的翻译和计算实验6 逆波兰式的翻译和计算一、实验目的通过实验加深对语法指导翻译原理的理解,掌握算符优先分析的方法,将语法分析所识别的表达式变换成中间代码的翻译方法。
二、实验内容设计一个表示能把普通表达式(中缀式)翻译成后缀式,并计算出结果的程序。
三、实验要求1、给出文法如下:G[E]E->T|E+T;T->F|T*F;F->i(E);对应的转化为逆波兰式的语义动作如下:E-> E(1)op E(2) {E.CODE:=E(1).CODE||E(2).CODE||op}E->(E(1)) { E.CODE := E(1).CODE}E->id { E.CODE := id} 2、利用实验5中的算符优先分析算法,结合上面给出的语义动作实现逆波兰式的构造;3、利用栈,计算生成的逆波兰式,步骤如下:1)中缀表达式,从文本文件读入,每一行存放一个表达式,为了降低难度,表达式采用常数表达式;2)利用结合语法制导翻译的算符优先分析,构造逆波兰式;3)利用栈计算出后缀式的结果,并输出;四、实验环境PC微机DOS操作系统或Windows 操作系统Turbo C 程序集成环境或Visual C++ 程序集成环境#include<math.h>using namespace std;#define max 100char ex[max];int n;char GetBC(FILE* fp) {//读取文件的字符直至ch不是空白c har ch;d o {ch = fgetc(fp);} while (ch == ' ' || ch == '\t' || ch == '\n');r eturn ch;}void acquire(FILE* fp){c har str[max];c har stack[max];c har ch;i nt sum, i, j, t, top = 0;i = 0;/*读取一行表达式*/G etBC(fp);i f (feof(fp))return;e lse {fseek(fp, -1L, 1);printf("\n(%d)", n);n++;}d o{i++;str[i] = GetBC(fp);} while (str[i] != ';' && i != max); s um = i;t = 1;i = 1;c h = str[i];i++;w hile (ch != ';'){switch (ch){case '(':top++; stack[top] = ch;break;case ')':while (stack[top] != '(') {ex[t] = stack[top];top--;t++;}top--;break;case '+':case '-':while (top != 0 && stack[top] != '(') {ex[t] = stack[top];top--;t++;}top++;stack[top] = ch;break;case '*':case '/':while (stack[top] == '*' || stack[top] == '/'){ex[t] = stack[top];top--;t++;}top++;stack[top] = ch;break;case ' ':break;default:while (ch >= '0'&&ch <= '9'){ ex[t] = ch;t++;/*ex[ ]中存放逆波兰式 */ch = str[i];i++;/*str[ ]中存放中缀表达式*/ }i--;ex[t] = ',';t++;break;}ch = str[i];i++;}/*当中缀表达式扫描完毕,检查ω栈是否为空,若不空则一一退栈*/w hile (top != 0) {ex[t] = stack[top];t++;top--;}e x[t] = ';';f or (j = 1; j < sum; j++)printf("%c", str[j]);p rintf("\n输出:");f or (j = 1; j < t; j++)printf("%c", ex[j]);}void getValue() {f loat stack[max], d;c har ch;i nt t = 1, top = 0;c h = ex[t];t++;w hile (ch != ';'){switch (ch){case '+':stack[top - 1] = stack[top - 1] + stack[top];top--;break;case '-':stack[top - 1] = stack[top - 1] - stack[top];top--;break;case '*':stack[top - 1] = stack[top - 1] * stack[top];top--;break;case '/':if (stack[top] != 0)stack[top - 1] = stack[top - 1] / stack[top];else{printf("除零错误\n");break;/*异常退出*/}top--;break;/*将数字字符转化为对应的数值*/ default:d = 0;while (ch >= '0'&&ch <= '9') {d = 10 * d + ch - '0';ch = ex[t];t++;}top++;stack[top] = d;}ch = ex[t];t++;}p rintf("\t%g\n", stack[top]);}void main() {F ILE* fp;e rrno_t err;i f ((err = fopen_s(&fp,"C:\\Users\\Administrator\\Desktop\\e xpression.txt", "r")) != NULL){ //以只读方式打开文件,失败则退出程序printf("file can not open!");exit(0);}n = 1;p rintf("逆波兰式的翻译和计算结果如下:\n");w hile (1) {acquire(fp);if (feof(fp)) break;getValue(); }f close(fp);f p = NULL;}实验结果:问题:这次实验较之之前不同,在设计算法与数据结构上花的时间较少,因为之前在数据结构课程里做过使用堆栈完成表达式的计算,也学过中缀式和后缀式,所以代码编得较快,但是其中的算法其实是较复杂的,调试时显得更复杂而编程时我用的是VS,在调试开始时,断点是不能增加的,这样影响了调试的进度,其实之前做实验就注意到了,只是没有特别在意,但这个实验的算法较复杂,断点设得较多,这让我想到使用JAVA,也许使用java开发会更容易,调试的问题也可以解决,主要是使用现在对于C++的熟练程度远不如Java,如果能充分使用类和对象的特点,各种算法的实现将更加有条理,更易读易修改。
实验6 孚尔根反应

中国海洋大学实验报告姓名:常天易系年级:海洋生命学院2012级专业:生物科学科目:分子细胞生物学实验学号:12050011006孚尔根反应一、实验目的1.熟悉并掌握孚尔根反应的原理及其实验操作方法2.对细胞的组织化学研究方法有一初步的认识二、实验原理DNA的嘌呤碱基经稀HCl水解后产生的醛基,具有还原作用。
Schiff试剂(脱色碱性品红试剂)中的无色品红可与醛基反应,形成含有醌基的化合物分子,显现出紫红色,进而显示出DNA的分布情况,而且可以通过DNA被染色的颜色的深度显示其含量的多少。
细胞质会亮绿染液被染成绿色,已显示出富含DNA的细胞核的位置。
三、实验材料①实验试剂1、Schiff 试剂2、1mol/L 盐酸3、1%亮绿染液4、二甲苯Ⅰ、二甲苯Ⅱ5、30%、50%、70%、85%、95%、100%的乙醇水溶液6、亚硫酸水(现配现用)②实验材料用carnoy 固定液固定的鱼肝脏切片;③实验设备显微镜、立式染色缸、恒温水浴锅、镊子、擦镜纸,盖玻片;四、实验步骤1、 取3个已制备的鱼肝脏切片,经二甲苯Ⅰ浸泡20分钟 ,二甲 1、 取3个已制备的鱼肝脏切片,经二甲苯Ⅰ浸泡20分钟 ,二甲苯Ⅱ浸泡10分钟。
2、 依次经100%(Ⅰ)、95%、85%、70%、50%、30%的乙醇溶液浸泡5分钟。
3、将标本放入蒸馏水浸泡5分钟。
4、将标本放入1mol/L盐酸的染缸5~10秒。
5、将标本放入60℃的1mol/L 盐酸水解8分钟。
6、将标本放入1mol/L 盐酸的染缸5~10秒。
7、将标本用蒸馏水浸泡,3次。
8、将标本放入Schiff 试剂中染色1小时。
9、将标本用亚硫酸水洗3次,每次2分钟。
10、将标本用蒸馏水洗3次,每次3分钟。
11、将标本用亮绿染色,各个标本分别染色20秒、30秒、40秒。
12、将标本用蒸馏水洗2次,每次浸泡3分钟。
13、将标本依次用30%、50%、70%、85%、95%、100%(Ⅰ)、100%(Ⅱ) 的乙醇溶液浸泡3分钟。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
高等程序设计实验报告实验名称实验6 类和对象(二) 系别姓名学号班级实验时间实验地点实验成绩一、实验目的及要求1.掌握对象数组、对象指针的使用方法;2.掌握对象数组、对象指针和对象引用作为函数参数的使用方法;3.掌握类对象作为成员的使用方法;4.掌握友元的概念和使用方法;5.掌握静态数据成员和静态成员函数的使用方法;6.进一步了解C++面向对象程序设计的基本思想、基本方法和基本步骤;二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等)硬件设备:联网的个人计算机操作系统:Windows xp编译系统:Visual C++ 6.0三、实验内容及步骤(包含简要的实验步骤流程)1.Time类的框架定义如下:class Time //声明Time类{public:Time( int = 0, int = 0, int = 0 ); // 带默认参数的构造函数// set functionsvoid setTime( int, int, int ); // 设置hour, minute, secondvoid setHour( int ); // 设置hour (确保数据在合理范围)void setMinute( int ); // 设置minute (确保数据在合理范围)void setSecond( int ); // 设置second (确保数据在合理范围)// get functionsint getHour(); // 返回hourint getMinute(); // 返回minuteint getSecond(); // 返回secondvoid printUniversal(); // 按24小时格式输出时间:23:56:12void printStandard(); // 按12小时格式输出时间:11:56:12 (PM) 或9:23:55(AM) private:int hour; // 0 - 23 (24小时格式)int minute; // 0 - 59int second; // 0 - 59}; // Timel类定义结束(1)按照注释的要求完成所有成员函数的定义;(2)在主程序中定义Time类对象,通过对象指针或引用调用上述成员函数以测试其正确性。
2.设计一个用来表示直角坐标系的Location类,在主程序中创建类Location的两个对象A和B,要求A的坐标在第3象限,B的坐标点在第2象限,分别采用成员函数和友元函数计算给定两个坐标点之间的距离,要求按如下格式输出结果:A(x1, y1), B(x2, y2)Distance1=d1Distance2=d2其中:x1, x2, y1, y2为指定的坐标值,d1和d2为两个坐标点之间的距离。
Location类框架可参考如下:class Location //声明类Location{public:Location(double,double); //构造函数double Getx(); //成员函数,取x坐标的值double Gety(); //成员函数,取y坐标的值double distance1(Location&);//成员函数,求两坐标点之间的距离friend double distance2(Location&, Location&);//友元函数,求两坐标点之间的距离private:double x,y;};3.使用C++的string 类,将5个字符串按逆转后的顺序显示出来。
例如,逆转前的5个字符串是: Germany Japan America Britain France逆转后的顺序输出字符串是:France Britain America Japan Germany4.设计一个模仿类magic 来实现5*5的魔方阵。
类的框架如下:class magic//声明魔方阵类magic {public:void getdata(); //输入初值成员函数void setfirstmagic(); //设置初始魔方成员函数int generate(); //生成最终魔方成员函数 int printmagic();//显示魔方成员函数 private:int m[5][5];int step;int first;int sumj;};所谓5*5的魔方阵,是指该矩阵的各行值的和等于各列值的和,并等于两对角线值的和。
以4*4为例,如:3135259211915 17131123727291⎛⎫ ⎪ ⎪ ⎪ ⎪⎝⎭,其各行、各列以及对角线值的和都是64。
求4*4的魔方阵的一般步骤提示如下:(1) 设置初始魔方的起始值和相邻元素之间的差值。
例如上述魔方阵的初始魔方的起始值和相邻元素之间的差值分别为:first=1, step=2(2) 设置初始魔方元素的值。
例如上述魔方的初始魔方阵为:13579111315 1719212325272931⎛⎫ ⎪ ⎪ ⎪ ⎪⎝⎭ (3) 生成最终魔方阵。
方法如下:○1求最大元素和最小元素的和sum ,本例为1+31=32。
○2用32减去初始魔方阵所有对角线上元素的值,然后将结果放在原来的位置,即可求得最终的魔方阵。
本例最终魔方阵为:3135259211915 17131123727291⎛⎫ ⎪ ⎪ ⎪ ⎪⎝⎭ (4)编写主程序,通过对象指针或引用调用上述成员函数以测试所设计的魔方类的正确性.5.声明一个Employee 类,数据成员包括:一个long 型的id ,两个字符指针成员,代表职员的姓名和家庭住址,一个double 数据,代表月薪。
成员函数有:构造函数、析构函数、set_salary()和get_salary()代表修改和获取薪资、set_name()和get_name()代表修改和获取姓名、set_address()和get_address()代表修改和获取家庭住址,set_id()和get_id()用来修改获取当前职员的id 号。
在主程序中,创建对象数组调用上述函数以测试Employee 类设计的正确性。
Employee 类的框架可参考:class Employee//声明Employee 类 {public:Employee(long, char*, char*, double ); // 构造函数~Employee(); // 析构函数// set functionsvoid set_id(long); // 设置id void set_salary(double);// 设置salary void set_name(char * ); // 设置namevoid set_address(char* ); // 设置adress// get functionslong get_id(); // 返回iddouble get_salary(); // 返回 salarychar* get_name(); // 返回 namechar* get_addressSecond(); // 返回 addressvoid print(); // 打印输出Employee的相关信息private:long id; // 工号char *name; // 姓名char *address; // 家庭住址double salary; // 月薪}; // Employee类声明结束6.声明一个Student类,在该类中包括一个数据成员:score(代表课程成绩)、两个静态数据成员:total_score(代表总分),count(代表学生总人数)。
成员函数有:构造函数、析构函数、account(int)用于设置分数、静态成员函数sum()返回所有学生的总成绩、静态成员函数average()返回所有学生的平均成绩、print()用于打印当前学生对象的成绩等。
在主程序中,输入某班同学的成绩,并调用上述函数打印全班同学的成绩、求出全班学生的成绩之和与平均分等。
Student类的框架可参考:class Student //声明Student类{public:Student(int ); // 构造函数~Student(); // 析构函数void account(int); // 设置分数static int sum(); // 返回总成绩static double average(); // 返回平均成绩void print(); // 打印输出Student的相关信息private:int score; // 分数static int total_score; // 总分static int count; // 总人数}; // Student类声明结束注意:静态成员和非静态成员的初始化方式的区别。
四、实验结果(包括程序或图表、结论陈述、数据记录及分析等,可附页)1.代码及注释;#include<iostream>using namespace std;class Time //声明Time类{public:Time(int a=0,int b=0,int c=0) // 带默认参数的构造函数{hour=a;minute=b;second=c;}// set functionsvoid setTime(int h,int m,int s) // 设置hour, minute, second{hour=h;minute=m;second=s;}void setHour(int a) // 设置hour (确保数据在合理范围){if(a<24&&a>=0)hour=a;void setMinute(int b) // 设置minute (确保数据在合理范围){if(b<60&&b>=0)minute=b;}void setSecond(int c) // 设置second (确保数据在合理范围){if(c<60&&c>=0)second=c;}int getHour() // 返回hour{return hour;}int getMinute() // 返回minute{return minute;}int getSecond() // 返回second{return second;}void printUniversal() // 按24小时格式输出时间:23:56:12{cout<<"24小时格式的时间为:"<<getHour()<<":"<<getMinute()<<":"<<getSecond()<<endl;}void printStandard() // 按12小时格式输出时间:11:56:12 (PM) 或9:23:55(AM){if(hour>12)cout<<"12小时格式的时间为:"<<getHour()-12<<":"<<getMinute()<<":"<<getSecond()<<"(pm)"<<endl;elsecout<<"12小时格式的时间为:"<<getHour()<<":"<<getMinute()<<":"<<getSecond()<<"(am)"<<endl;private:int hour; // 0 - 23 (24小时格式)int minute; // 0 - 59int second; // 0 - 59}; // Timel类定义结束int main(){int h1,m1,s1;int h2,m2,s2;int a;Time t1,t2;cout<<"请输入一个24小时格式的时间:"<<endl;cin>>h1>>m1>>s1;t1.setTime(h1,m1,s1);t1.printStandard();cout<<"请输入一个12小时格式的时间:(上午在最后用1表示,下午用2表示)"<<endl;cin>>h2>>m2>>s2>>a;t2.setMinute(m2);t2.setSecond(s2);if(a==1)t2.setHour(h2);elset2.setHour(h2+12);t2.printUniversal();return 0;}结果截图2.代码及注释#include<iostream>#include<cmath>using namespace std;class Location //声明类Location{public:Location(double a,double b) //构造函数{x=a;y=b;}double Getx() //成员函数,取x坐标的值{return x;}double Gety() //成员函数,取y坐标的值{return y;}double distance1(Location&a)//成员函数,求两坐标点之间的距离{double x1,y1;x1=a.Getx();y1=a.Gety();return sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y));}friend double distance2(Location&, Location&);//友元函数,求两坐标点之间的距离private:double x,y;};double distance2(Location&a, Location&b){return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}int main(){Location A(-3.4,-6.8);Location B(-5.5,8);double d1,d2;cout<<"A("<<A.Getx()<<","<<A.Gety()<<")"<<endl;cout<<"B("<<B.Getx()<<","<<B.Gety()<<")"<<endl;cout<<"用成员函数计算"<<endl;d1=A.distance1(B);cout<<"Distance1="<<d1<<endl;cout<<"用友员函数计算"<<endl;d2=distance2(A,B);cout<<"Distance2="<<d2<<endl;return 0;}结果截图3. #include<iostream>#include<string>using namespace std;int main(){string s[20];int y=1,n=0,i=0;while(y){cout<<"请输入一个字符串(最多"<<20-n<<"个)"<<endl;cin>>s[i];cout<<"继续输入请输入1,否则输入0"<<endl;cin>>y;n++;i++;}for (;n>=0;n--)cout<<s[n]<<" ";}4.设计一个模仿类magic来实现5*5的魔方阵。