




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验实训大纲一、实验实训的目的和基本要求 通过第一阶段的课程的学习,可以使学生对嵌入式linux 程序设计的基本编程规则与开发有一个比较全面的了解和认识,并最终能熟练掌握程序设计的理论知识和实际操作,也为以后学习更高一层的程序设计打下很牢固的理论知识基础和实践基础,尤其是有过硬的操作技术,较强的动手能力。 实验实训的基本要求是: 1、严格按要求使用计算机等相关实验设备; 2、通过实验实训提高动手操作能力; 3、通过实验实训学会用专业知识分析问题、解决问题的基本方法和步骤; 4、能够用理论指导实践; 5、通过实验实训加深对理论知识的理解; 6、能够掌握一定软件开发技术,具备一定的软件开发能力。 二、实验实训的内容及要求 实验实训内容: 1 .熟练掌握linux的基本命令和vi编辑器和gdb调试器的使用。2、熟识c语言的运行环境,尤其是vi编辑器和gdb调试器的使用。 3、熟练掌握数据结构的使用.4熟练掌握 shell,Makefile的编写实验实训要求: 1、掌握c语言,数据结构,shell,Makefile有关专业知识分析问题、解决问题的基本方法和步骤; 2、能够所学知识的学习来理解程序设计的基本理论知识; 4、能够熟练地使用第一阶段所学知识,为以后打下基础。5、能够掌握一定软件开发技术,具备一定的软件开发能力。三、考核形式及要求 (一)日常实验考核 1、实验过程占70%,实验结果占30%。 2、每单元实验结束为每个同学打出成绩,整个学期的平均成绩作为该同学的技能考核成绩; 3、要求在规定时间内独立完成; 四实验实训教材及教学参考书目 (一)推荐教材 C程序设计谭浩强 著C程序设计题解与上机指导(第二版) 谭浩强 著 GNU Makefile 编程实验实训指导实验一Linux常用命令和vi,gdb的使用【实验内容】本课程要求学员对Linux基本操作命令有一定了解和掌握。下面列出的一些常用命令作为参考。最好针对每一个都能亲自练习、掌握。【实验平台】PC机【实验步骤】1ls 命令-ls 以默认方式显示当前目录文件列表ls a 显示所有文件包括隐藏文件ls l 显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行-2.cd 命令cd dir 切换到当前目录下的dir目录cd . 切换到到上一级目录cd 切换到用户目录,比如是root用户,则切换到/root下- 3rm 命令rm file 删除某一个文件rm -rf dir删除当前目录下叫dir的整个目录- 4.cp 命令cp source target 将文件source 复制为 targetcp av soure_dir target_dir 将整个目录复制,两目录完全一样cp fr source_dir target_dir 将整个目录复制,并且是以非链接方式复制,当source目录带有符号链接时,两个目录不相同- 5.mv命令mv source target 将文件或者目录source更名为target- 6.diff命令diff dir1 dir2 比较目录1与目录2的文件列表是否相同,但不比较文件的实际内容,不同则列出diff file1 file2 比较文件1与文件2的内容是否相同,如果是文本格式的文件,则将不相同的内容显示,如果是二进制代码则只表示两个文件是不同的- 7.echo 命令echo message显示一串字符8。cat 命令cat file 显示文件的内容,和DOS的type相同cat file | more 显示文件的内容并传输到more程序实现分页显示,使用命令less file可实现相同的功能more 分页命令,一般通过管道将内容传给它,如ls | more- 9du命令du 计算当前目录的容量du -sm /root 计算/root目录的容量并以M为单位10.find命令find -name /path file 在/path目录下查找看是否有文件file-11grep命令grep -ir “chars” 在当前目录的所有文件查找字串chars,并忽略大小写,-i为大小写,-r为下一级目录-12.vi的使用- vi file 编辑文件filevi原基本使用及命令: vi分为编辑状态和命令状态。输入命令要先按ESC,退出编辑状态, 然后输入命令。常用命令有::x(退出):x!(退出不保存):w(保存文件):w!(不询问方式写入文件):r file(读文件file) :%s/oldchars/newchars/g(将所有字串oldchars换成newchars) i进入编辑插入状态ESC退出编辑状态13man 命令- man ls 读取关于ls命令的帮助- 14.启动关闭计算机命令reboot 重新启动计算机halt 关闭计算机init 0 关闭所有应用程序和服务,进入纯净的操作环境init 1 重新启动应用及服务init 6 重新启动计算机- 15.tar 命令tar xfzv file.tgz 将文件file.tgz解压tar -zcvf file.tgz 将文件或目录压缩为file.tgzgzip directory.tar 将覆盖原文件生成压缩的 directory.tar.gzgunzip directory.tar.gz 覆盖原文件解压生成不压缩的 directory.tar。- 16dmesg,uname 命令dmesg 显示kernle启动及驱动装载信息uname -a显示操作系统的类型- 17.string命令strings file 显示file文件中的ASCII字符内容- 18rpm命令rpm -ihv program.rpm 安装程序program并显示安装进程- 19.文件目录管理命令su root 切换到超级用户chmod a+x file 将file文件设置为可执行,脚本类文件一定要这样设置一个,否则得用bash file才能执行chmod 666 file 将文件file设置为可读写chown user /dir 将/dir目录设置为user所有- 20mknod 命令mknod /dev/hda1 b 3 1 创建块设备hda1,主设备号为3,从设备号为1,即master硬盘的的第一个分区mknod /dev/tty1 c 4 1 创建字符设备tty1,主设备号为4,众设备号为1,即第一个tty终端- touch /tmp/running 在/tmp下创建一个临时文件running,重新启动后消失- 21.磁盘管理的命令fdisk /dev/hda 就像执行了dos的fdisk一样mount -t ext2 /dev/hda1 /mnt 把/dev/hda1装载到 /mnt目录df 显示文件系统装载的相关信息 mount -t nfs :/sharedir /mnt 将nfs服务的共享目录sharedir加载到/mnt/nfs目录umount /mnt 将/mnt目录卸载,/mnt目录必须处于空闲状态sync 刷新缓冲区,使内容与磁盘同步,mkfs /dev/hda1 格式化/dev/hda1为ext2格式dd if=/dev/zero of=root.ram bs=1024,count=1024 生成一个大小为1M的块设备,可以把它当作硬盘的一个分区来用- 22程序开发有关命令gcc hello.c -o hello 将hello.c编译成名为hello的二进制执行文件ldd program 显示程序所使用了哪些库- 23系统有关命令ps 显示当前系统进程信息ps ef 显示系统所有进程信息kill -9 500 将进程编号为500的程序杀死top 显示系统进程的活动情况,按占CPU资源百分比来分free 显示系统内存及swap使用情况time program 在program程序结束后,将计算出program运行所使用的时间网络命令ifconfig eth0 捆绑网卡1的IP地址为- telnet 登陆IP为的telnet服务器ftp 登陆到ftp服务器24使用vi编辑器,编写helloworld.c程序代码如下:#include int main (int argc,char *argv)printf(“hello,world!n”);return 0;(2)用gcc编译$gcc o hello helloworld.c(3)执行hello程序$./hello25用Gdb调试有问题的程序实验目的:通过调试一个有问题的程序,使读者进一步熟练使用vi操作,熟练使用gcc编译命令及gdb的调是命令,通过对有问题程序的跟踪调试,进一步提高发现问题和解决问题的能力。这是一个很小的程序,只有35行,希望读者认真调试。实验内容:(1)使用vi编辑器,将以下代码输入到名为greet.c的文件中。此代码的原意为输出倒序输出main函数中定义的字符串,但结果显示没有输出。#include #include #include int display1(char *string);int display2(char *string);int main (int argc,char *argv)char string = Embedded Linux;display1 (string);display2 (string);int display1 (char *string)printf (The original string is %s n, string);int display2 (char *string1)char *string2;int size,i;size = strlen (string1);string2 = (char *) malloc (size+1);for (i = 0; i size; i+)string2size - i = string1i;string2size+1 = ;printf(The string afterward is %sn,string2);free(string2);(2)使用gcc编译这段代码,注意要加上-g选项以方便之后的调试。(3)运行生成的可执行文件,观察运行结果。(4)使用gdb调试程序,通过设置断点、单步跟踪,一步步找出错误所在。(5)纠正错误,更改源程序并得到正确的结果。实验步骤:(1)在工作目录上新建文件greet.c,并用vi启动:vi greet.c(2)在vi中输入以上代码。(3)在vi中保存并退出:wq(4)用gcc编译:gcc g greet.c o greet(5)运行greet:./greet,输出为:The original string is Embedded LinuxThe string afterward is可见,该程序没有能够倒序输出。(6)启动gdb调试:gdb greet(7)查看源代码,使用命令l。(8)在30行(for循环处)设置断点,使用命令b 30(9)在33行(printf函数处)设置断点,使用命令b 33(10)查看断点设置情况,使用命令info b(11)运行代码,使用命令r(12)单步运行代码,使用命令n(13)查看暂停点变量值,使用命令p string2size - i(14)继续单步运行代码数次,并使用命令查看,发现string2size-1的值正确。(15)继续程序的运行,使用命令c(16)程序在printf前停止运行,此时依次查看string20、string21,发现string0没有被正确赋值,而后面的复制都是正确的,这时,定位程序第31行,发现程序运行结果错误的原因在于size-i。由于i只能增到size-i,这样string20就永远不能被赋值而保持NULL,故输不出任何结果。(17)退出gdb,使用命令q(18)重新编辑greet.c,把其中的“string2size - i = string1i”改为“string2size i - 1 = string1i;”即可(19)使用gcc重新编译:gcc g greet.c o greet(20)查看运行结果:./greetThe original string is Embedded LinuxThe string afterward is xuniL deddedbmE这时,输入结果正确实验结果:将原来有错的程序经过gdb调试,找出问题所在,并修改源代码,输出正确的倒序显示字符串的结果。 实验二 C语言的基础知识 【实验内容】掌握c语言的基础知识,并能编写简单的程序,并熟悉在linux环境下编程。【实验目的】1、掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。 2、学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(+)和自减(-)运算符的使用。 3、进一步熟悉C程序的编辑、编译、连接和运行的过程。 【实验平台】PC机【实验步骤】1、输入程序,运行出结果。 int main(int argc,char *argv) char c1 , c2; c1=97;c2=98; printf(“%c %cn”, c1, c2);return 0; 2、分析下程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。 int main(int argc,char *argv) char c1=a,c2=b,c3=c,c4=101 ,c5=116 ; printf(“a%c b%ctabcn”,c1,c2,c3); printf(“tb%c %c”,c4,c5);return 0; 3、分析下程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。 int main(int argc,char *argv) int i , j , m , n ; i=8; j=10; m=+i; n=j+; printf(“%d,%d,%d,%dn”,i,j,m,n);return 0; 4.分析下列程序,并输入计算机运行,总结结果。 int main(int argc,char *argv) char c1 , c2; c1=97;c2=98; printf(“%c %c”, c1, c2); return 0; 1)在此基础上,加一个printf语句,并运行之。 printf(“%d,%d”, c1, c2 ); 2)再将第二行改为: int c1, c2; 再使之运行。 3)再将第三行改为: c1=300; c2=301; 再使之运行,分析其运行结果。 l 在该程序中,说明了字符型数据在特定情况下可作为整型数据处理,整型数据有时也可以作为字符型数据处理。 l 在该程序中,主要考查对转义字符的掌握情况。 l 此程序主要考查自加、自减运算符以及复合运算符的用法。 5、实验实训思考题 1、“=”和“=”有什么区别? 2、“&”和“&”、“|”和“|”有什么区别? 6能力测试阶段单元一:运算符、表达式、输入输出语句 能力要求: a) 能够正确定义、输入、输出并使用常用数据类型:整型、实型、字符型 b) 掌握五种基本算术运算符的使用:、,知道优先级与结合性 c) 掌握逻辑运算符和关系运算符、条件运算符的使用 d) 能够正确使用printf()和scanf()进行各种数据正确格式的输入输出 e) 编写简单顺序结构程序 基础能力落实: 1)编写一个程序,要求输入一个ASCII码值,然后输出相应的字符。2)编写程序,从键盘输入两个整数,分别计算出它们的商和余数,输出时,商数要求保留2位小数,并对第三位进行四舍五入。3)输入一个华氏温度,要求输出摄氏温度,公式为C=5/9(F-32),输出取两位小数.要求:注意”/”的使用,通过测试来加深理解进阶能力落实: 1)设园半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积,用scanf输入数据,输出计算结果,取小数点后2位数字,请写程序. 实验三 选择结构程序设计 【实验内容】掌握if,ifelse,switch等开关语句。【实验目的】1、了解C语句表示逻辑量的方法(以0代表“假”以1代表“真”); 2、学会正确使用逻辑运算符和逻辑表达式; 3、熟练掌握if语句和switch语句。 【实验平台】PC机 【实验步骤】编写程序完成下列题目: 1、已知三个数a,b,c,找出最大值放于max中。 2、输入某学生的成绩,经处理后给出学生的等级,等级分类如下: 90分以上(包括90): A 80至90分(包括80):B 70至80分(包括70):C 60至70分(包括60):D 60分以下:E 3、有一函数: y= x x1 2x-1 1=x=10 用scanf函数输入x的值(分别为x=10三种情况),求y值。 4、实验实训指导 1、分析:由已知可得在变量定义时定义四个变量a,b,c和max,a,b,c是任意输入的三个数,max是用来存放结果最大值的。第一次比较a和b,把大数存入max中,因a,b都可能是大值,所以用if语句中ifelse 形式。第二次比较max和c,把最大数存入max中,用if语句的第一种形式if形式。max即为a,b,c中的最大值。 int main(int argc,char *argv) int a,b,c,max; /*定义四个整型变量*/ scanf(“a=%d,b=%d,c=%d”,&a,&b,&c); if (a=b) max=a; /*a=b*/ else max=b; /*amax) max=c; /*c是最大值*/ printf(max=%d,max);return 0; 若输入下列数据,分析程序的执行顺序并写出运行结果 (1)a=1,b=2,c=3 (2)a=2,b=1,c=3 (3)a=3,b=2,c=1 (4)a=3,b=1,c=2 (5)a=3,b=3,c=2 (6)a=2,b=1,c=2 2、方法一:(用if嵌套) 分析: 由题意知如果某学生成绩在90分以上,等级为A;否则,如果成绩大于80分,等级为B;否则,如果成绩大于70分,等级为C;否则,如果成绩大于60分为D;否则,如果成绩小于60分,等级为E;但当我们输入成绩时也可能输错,出现小于0或大于100,这时也要做处理,输出出错信息。因此,再用if嵌套前,应先判断输入的成绩是否在0100之间。 int main(int argc,char *argv) float score; char grade; printf(nplease input a student score:); scanf(%f,&score); if(score100|score=90) grade=A; else if(score=80) grade=B; else if(score=70) grade=C; else if(score=60) grade=D; else grade=E; printf(nthe student grade:%cn,grade); return 0; 输入测试数据,调试程序。测试数据要覆盖所有路径,注意临界值,例如此题中得100分,60分,0分以及小于0和大于100的数据。 方法二:用switch语句 分析: switch 语句是用于处理多分支的语句。注意,case后的表达式必须是一个常量表达式,所以在以用switch语句之前,必须把0100之间的成绩分别化成相关的常量。所有A(除100以外),B,C,D类的成绩的共同特点是十位数相同,此外都是E类。则由此可得把score除十取整,化为相应的常数。 int main(int argc,char *argv) int g,s; char ch; printf(ninput a student grade:); scanf(%d,&g); s=g/10; if(s10) printf(ninput error!); else switch (s) case 10: case 9: ch=A; break; case 8: ch=B; break; case 7: ch=C; break; case 6: ch=D; break; default: ch=E; printf(nthe student scort:%c,ch); return 0; 输入测试数据,同方法一一样调试程序并写出结果。 3、分析:y是一个分段表达式。要根据x的不同区间来计算y的值。所以应使用if语句。 int main(int argc,char *argv)int x,y; printf(“please input x :”); scanf(“%d”,&x); if (x1) y=x; printf(“y=%dn”,y); else if (x10) y=2*x-1; printf(“y=%dn”,y); else y=3*x-11; printf(“y=%dn”,y); 5能力要求: a) 能够使用if语句编写条件选择程序 b) 能够使用嵌套if语句和switch语句编写多分支选择结构程序 进阶能力落实: 1)编写一个程序,用while,该程序读取整数,直到输入0,输入终止后,程序应该报告输入的偶数(不包括0)总个数,偶数的平均值,输入的奇数总个数以及奇数的平均值。 实验四 循环结构程序设计 【实验内容】熟练掌握while、dowhile和for三种循环语句的应用。【实验目的】通过实验,熟练掌握while、dowhile和for三种循环语句,为以后开发打下基础。【实验平台】PC机 【实验步骤】编写程序,完成下列题目: 1、求5! 2、求和s=1!+2!+3! 3、求和s=1!+3!+5! 4、求和s= 3+33+333 5、有一数列:2/1,3/2,5/3,8/5,求出这个数列的前10项之和。8、实验实训指导 1、程序清单: int main(int argc,char *argv) int n,t; n=1; t=1; while(t=5) n=n*t; t=t+1; printf(“%dn”,n); 2、程序清单: int main(int argc,char *argv) int n,s=0,t=1; for(n=1;n=3;n+) t=t*n; s=s+t; printf(“%dn”,s); 3、程序清单: int main(int argc,char *argv) int s=0,t,i,j; for(i=1;i=3;i+) t=1; for(j=1;j=2*i-1;j+) t=t*j; s=s+t; printf(“%dn”,s); 4、程序清单: int main(int argc,char *argv) int s=0,t=3,i; for(i=1;i=3;i+) s=s+t; t=10*t+3; printf(“%dn”,s); 5、程序清单: int main(int argc,char *argv) int n,t; float a=2,b=1,s=0; for(n=1;n=10;n+) s=s+a/b; t=a; a=a+b; b=t; printf(“%fn”,s); 6、实验实训思考题 Daphne以10%的单利息投资了100美元(也就是说,每年投资赢的利息等于原始投资的10%)。Deirdre则以每年5%的复合利息投资了100美元(也就是说,利息是当前结余的5%,其中包括以前的利息)。编写一个程序,计算需要多少年Deirdre的投资额才会超过Daphne,并且显示出到那时两个人的投资额。7能力要求: a) 掌握for 、do-while、 while语句结构 b) 能够使用for 、do-while、 while编写循环结构程序 c) 使用for 、do-while、 while编写多重循环语句 基础能力落实: 1)编写一个程序,将用分钟表示的时间转化成以小时和分钟表示的时间。使用#define或者const来创建一个代表60的字符常量。使用while循环来允许用户重复键入值,并且当键入一个小于等于0的时间时终止循环。要求用while语句 2)编写一个程序打印一个表,表的每一行都给出一个整数,它的平方以及它的立方,要求用户输入表的上限和下限。使用一个for循环。3)编写一个程序,创建一个8个元素的int数组,并且把元素分别设置为2的前8次幂,然后打印出他们的值。使用for循环来设置值;为了变化,使用do while循环来显示这些值。 进阶能力落实: 1)编写一个程序,创建两个8元素的double数组,使用一个循环来让用户键入第一个数组的8个元素的值,程序把第二个数组的元素设置为第一个数组元素的累积和,例如,第二个数组的第4个元素应该等于第1个数组的前4个元素的和,第二个数组的第5个元素应该等于第一个数组的前5个元素的和,最后,使用一个循环来显示两个数组中的内容,第一个数组在一行中显示,而第二个数组中的每个元素在第一个数组的对应元素之下进行显示。实验五 一维数组 【实验内容】掌握一维数组的使用。【实验目的】1、掌握一维数组的定义、赋值和输入输出的方法; 2、掌握字符数组的使用; 3、掌握与数组有关的算法(例如排序算法)。 【实验平台】PC机 【实验步骤】1、在键盘上输入N个整数,试编写程序使该数组中的数按照从大到小的次序排列。 2、青年歌手参加歌曲大奖赛,有10个评委对她的进行打分,试编程求这位选手的平均得分(去掉一个最高分和一个最低分)。 3、输入一串字符,计算其中空格的个数。 4、实验实训指导 l 分析:C中数组长度必须是确定大小,即指定N的值。排序的方法有多种,我们取出其中两种作为参考。 方法一:起泡排序 从第一个数开始依次对相邻两数进行比较,如次序对则不做任何操作;如次序不对则使这两个数交换位置。第一遍的(N-1)次比较后,最大的数已放在最后,第二遍只需考虑(N-1)个数,以此类推直到第(N-1)遍比较后就可以完成排序。 源程序如下: #define N 10 int main(int argc,char *argv) int aN,i,j,temp; printf(please input %d numbersn,N); for(i=0;iN;i+) scanf(%d,&ai); for(i=0;iN-1;i+) for(j=0;jaj+1) temp=aj; aj=aj+1; aj+1=temp; printf(the array after sort:n); for(i=0;iN;i+) printf(%5dn,ai); 方法二:选择排序 首先找出值最小的数,然后把这个数与第一个数交换,这样值最小的数就放到了第一个位置;然后,在从剩下的数中找值最小的,把它和第二个数互换,使得第二小的数放在第二个位置上。以此类推,直到所有的值从小到大的顺序排列为止。 #define N 10 int main(int argc,char *argv) int aN,i,j,r,temp; printf(please input %d numbersn,N); for(i=0;iN;i+) scanf(%d,&ai); for(i=0;iN-1;i+) r=i; for(j=i+1;jN;j+) if(ajar) r=j; if(r!=i) temp=ar; ar=ai; ai=temp; printf(the array after sort:n); for(i=0;iN;i+) printf(%5d,ai); printf(n); l 分析:这道题的核心是排序。将评委所打的10个分数利用数组按增序(或降序)排列,计算数组中除第一个和最后一个分数以外的数的平均分,其中排序部分这里用选择法实现。 int main(int argc,char *argv) int i,j,min; float temp,ave=0; float a11; printf(n输入评委所打的分数:n); for(i=1;i=10;i+) scanf(%f,&ai); for(i=1;i=9;i+) min=i; for(j=i+1;jaj) min=j; temp=ai; ai=amin; amin=temp; for(i=2;i=9;i+) /*注意i值的变化范围*/ ave=ave+ai; printf(选手所得最后分数:% 6.1f ,ave/8); printf(n); l 程序清单: int main(int argc,char *argv) char c30; int i,sum=0; gets(c); for(i=0;istrlen(c);i+) if(ci= ) sum=sum+1; printf(空格数为:%d n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度二次供水设备定制化维保服务协议
- 2025版船舶喷淋系统安装工程承包合同范本
- 2025版餐厅与旅游机构合作合同模板
- 二零二五年度租车公司车辆租赁合同模板
- 2025版离婚协议书模板下载与婚姻财产分割执行服务合同
- 二零二五年度动物防疫机构营业执照代理合同模板
- 二零二五年大理石园林景墙供应与施工安装合同
- 二零二五年度物流行业劳动合同书范本
- 2025版政府采购项目投标担保委托保证合同
- 二零二五年度黄金现货交易平台风险控制服务合同
- 有管网气体消防灭火系统设计方案
- (医学课件)肾盂癌
- 2023综合基础知识题库及解析(500题)
- 生活区、办公区安全检查表
- 国际反洗钱师cams考试真题中文版题库汇总(含答案)
- 2023新教材高中数学第5章三角函数微专题5三角函数中的最值问题课件新人教A版必修第一册
- 入厂新员工安全知识培训考试题及答案
- 水厂原水水质污染处置应急预案
- 仲夏夜之梦英文话剧剧本
- 下消化道常见疾病诊断
- GB/T 1303.4-2009电气用热固性树脂工业硬质层压板第4部分:环氧树脂硬质层压板
评论
0/150
提交评论