




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
全国计算机等级考试二级教程C语言程序设计习题分析与解答(四)第九章 数组习题分析与解答一、 选择题9.1【参考答案】 D)9.2【参考答案】 A)9.3【参考答案】 A)9.4【参考答案】 A)9.5【参考答案】 C)9.6【参考答案】 A)9.7【参考答案】 B)9.8【参考答案】 D)9.9【参考答案】 C)9.10【参考答案】 C)9.11【参考答案】 C)9.12【参考答案】 D)9.13【参考答案】 D)9.14【参考答案】 A)9.15【参考答案】 A)9.16【参考答案】 A)9.17【参考答案】 C)9.18【参考答案】 C)二、 填空题9.19【参考答案】 9 09.20【参考答案】 69.21【参考答案】 129.22【参考答案】 39.23【参考答案】 27219.24【参考答案】 -850,2,09.25【参考答案】 1k=p 2k9.26【参考答案】 1 (c=getchar() 2 c-A三、 上机题9.27【分析与解答】 (1) 对于字符的输入可参考教材例6.3和习题9.26中的while循环,只是要注意,循环的终止条件是:等于KG-*3n。 (2) 在while循环体中,用if条件来判断是否为数字字符,若是,就使对应的元素增1;if中的条件表达式可用C的库函数:isdigit(ch),这时要在程序前加:#include 行;也可用:chKG-*3=0&chKG-*3=9。 (3) 若用num数组元素来进行统计,当ch中是数字“0”时,使num0增1、当ch中是数字 “1”时,使num1增1num的下标表达式可用:ch-0。 (4) 注意,在定义数组时,数组的大小应符合使用的要求。在利用数组元素作为计数器时,不要忘记首先应该给数组元素赋0值。 (5) 总结:通过本题的编程,要求掌握利用数组元素作为计数器的基本算法。9.28【分析与解答】 本题的编程请参考例9.8。 (1) 若有以下10个整数: 0 1 2 3 4 5 6 7 8 9要求从第5个元素依次向前移,则移动之后的数列应该是: 0 1 2 4 5 6 7 8 9第5个元素不是指下标为5的元素,而是指排列的顺序,对此数列而言是指数值为4的那个。(2) 完成移动后,数列中的数据个数减1。 (3) 若进行指定操作的函数名为moves,则函数的首部可如下: void moves(int *a,int n,int *m)这里a用以指向一维数组的首地址,n接受开始移动的元素的位置,m指向主函数中存放元素个数的变量,因为没有函数值返回,因此函数的类型定义为void。 (4) 可用以下for循环完成指定的移动: for(i=n-1;i*m;iKG-*3+KG-*3+) ai-1=ai;注意,应当先把第n个元素(下标为n-1)移到第n-1个元素(下标为n-2)的位置上,依次从前到后向前移动。 (5) 完成移动之后,应使m所指变量中的值减1,表示数列中的数据少了一个;这可由于句:*m=*m-1;来完成。 (6) 可设计一个输出函数,在移动前、后调用此函数输出数组中的数据,以便验证操作是否正确。若输出函数名为:outarr,则函数首部可写成: void outarr( int a, int num)形参a指向待输出的数组,num接受数组中元素的个数。输出操作可由一个for循环来完成: for(i=0; inum; iKG-*3+KG-*3+) printf(%d,ai); printf(KG-*3nKG-*3n);退出循环后的printf语句使上面的输出行结束。(7) 在主函数中定义所需的数组和变量。数组中的值可以在主函数中输入,也可定义一个函数用于输入数据。n的值在主函数中输入,然后调用以上函数。需要注意的是,给n输入的值不能是1,因为第一个元素(下标为0)再向前移,下标就越界了,同时,n的值也不可大于10,因为已指定只有10个元素。(8) 总结: 对于需要进行多次的操作,如本程序中输出数组元素中的值,应当编写一个独立的函数多次调用,而不应重复地编写代码。虽然该函数中只是一个for循环,似乎在主函数中书写两次也不麻烦,但养成良好的模块化程序设计的风格却是十分重要的。 分析以上例子可见,所规定的操作,实际上删除了数列中的第n-1个元素,因此可见删除操作是由移动操作来完成的。9.29【分析与解答】 (1) 程序要求定义两个数组以便存放原始数据和从中选出的所有奇数。 (2) 若把函数命名为oods,则函数首部可写成: void odds(int *a,int an,int *b,int *bn)形参a指向存放原始数据的数组,an存放此数组中数据的个数;b指向另一个数组,此数组中将存放将选出的所有奇数,指针bn指向存放奇数个数的存储单元,因为将通过此指针,把奇数的个数传回主函数。 (3) 在odds函数中,可通过一个for循环选出所有的奇数: for(i=0;ian;iKG-*3+KG-*3+)if(ai%2) bj=ai;jKG-*3+KG-*3+; 在for循环中逐个引用原始的数组元素,若元素中的值不能被2除尽(不为0),则把它放入b所指的数组中;j用作b的下标,每放入一个奇数后,j的值加1;注意,j的初值应该置0。 (4) 当完成以上操作退出循环时,因为在循环内最后进行了一次jKG-*3+KG-*3+的操作,所以j的值就是奇数的个数,最后应当把它赋给*bn,以便通过指针bn把奇数的个数传回主函数。 (5) 程序需要两次输出数组中元素的值,一次是输出原始数组中的值,一次是输出奇数数组中的值。因此可以使用题9.28中的outarr函数,进行两次调用。 (6) 在主函数中应当定义所需的数组和变量,可以在主函数中给数组元素输入数据。 (7) 总结:本题的算法很简单,要求读者能够编写独立的模块,并在函数之间熟练地传送数据。9.30【分析与解答】 (1) 例9.9完成了对整数由小到大的排序,而本题是对字符数组中的元素进行由大到小的排序;两者之间并无大的区别,只是数组的类型不同,字符数组中每个元素存放一个字符,字符的大小依据每个字符的ASCII码值的大小。 (2) 若函数形参a指向主函数中待排序的数组,由大到小的排序只需改变内循环中if语句的条件表达式即可: if(apai) p=i;此处i是内循环的控制变量。 (3) 排序前后可以调用一个输出函数,输出原始数据和排序后的数据,可参考习题9.28的outarr函数,但注意,这里是对字符数组进行输出。 (4) 总结:读者可以参考例9.9,程序基本相同,但在掌握排序算法的基础上,必须独立完成此程序,不要照抄。9.31【分析与解答】 (1) 我们把插入操作命名为函数insert,若待插入的数据放在形参x中,指针a指向主函数中的数组,指针n指向存放数组中元素的个数变量,因为插入后,数组中的数据会增加。函数的首部如下: void insert(int *a,int x,int *n) (2) 若数组中原有的有序数列按由小到大排列如下,共12个数: 11 14 17 18 19 20 22 24 26 29 30 33若x中的数为21,我们立刻知道应插在何处,插入后数列如下,则插入后变成有13个数: 11 14 17 18 19 20 21 22 24 26 29 30 33因此,对于程序来说应当做以下4件事: 能根据待插的数据,按“仍然有序的要求”判断出插入的位置。 把位置腾出来,以便放入插入的数据,但原有的数据不能缺少。 把x中的数放入腾出来的位置中。 使原有数组中的数据个数增1。 (3) 现在来做第一个步骤:确定插入的位置。用变量j来放置该位置在数组中的下标,以下while循环将完成此任务: j=0; while(j*n & ajx) jKG-*3+KG-*3+;因为已经假定数列按由小到大排列,当x的值大于当前的元素aj时,应当接着与下一个元素比较(执行jKG-*3+KG-*3+),直到x的值小于或等于当前的元素aj时,x就应当插入到下标为j的元素中,在此之前的所有值都比x小。当x的值小于a0时,不进入while循环,j的值为0。x就应当插入到下标为0的元素中。当x的值大于数组中所有的元素时,由条件:jKG-*3=j;i-) ai+1=ai; (5) 第三个步骤是把x放入aj中:aj=x; (6) 第四步是使存放数据个数的变量中的数增1:*n=*n+1;插入过程到此结束。 (7) 可利用习题9.28中的outarr函数,在插入前和插入后两次输出数组元素,以判断操作是否正确。 (8) 请编写主函数,定义所需的数组和变量,给数组输入一组有序数,正确调用函数。 (9) 请按题目要求至少对程序运行3次,判断程序是否在各种情况下都能得到正确的结果。(10) 总结:插入算法是程序设计中的一种最基本的算法,希望读者在理解的基础上编写程序。9.32【分析与解答】 (1) 若函数名为change,函数首部如下: void change(int x,int *a, int *n)形参x中存放一个待转换的十进制数,指针a指向一个一维数组,数组中每一个元素中存放一个0或1代表一位二进制数,指针变量n指向一个整型变量,其中存放在一维数组中二进制位的个数。 (2) 函数中定义一个指针变量s,并把a所指的数组的首地址赋给它以便保留。把x每次被2除后的余数放在a当前所指的数组元素中,然后移动指针a指向下一个元素,并使x的值除2;重复此过程,直到x的值为0。可用以下的while循环来进行转换: s=a; while(x) *a=x%2; a+KG-*3+; x=x/2; 退出循环时,已把转换后的二进制数的每一位上的数放入主函数的数组元素中,但是应当注意,在a0中放的是二进制数的最低位,最后放入的是最高位。例如,整数8转换成的二进制数为100,则在a0、a1中存放的是0,而a2中存放的是1。 (3) 函数中最后用:*n=a-s;把存放在一维数组中二进制位的个数放入n所指的变量中。因为s已指向主函数中数组的第一个元素(下标为0);在循环中,指针a不断后移,最后指向存放二进制数最高位的元素;所以a-s的值就是已存入数据的元素的个数。 (4) 在主函数中输入待转换的十进制数,调用change函数后输出数组元素中的值,注意,因为在a0中放的是二进制数的最低位,因此输出的顺序应该从an到a0。9.33【分析与解答】 (1) 若函数名为getone,形参指针a指向主函数中存放指定数据的数组。函数的首部如下: void getone(int a) (2) 函数中变量x用来存放得到的一个随机数,变量n用来存放数组中已放入的不同的随机数的个数,变量i用作下标变量。 (3) 所有的工作在一个while循环中完成: while(n15)当不同的随机数的个数n的值等于15时退出循环。 (4) 在以上while循环中需要进行以下4项步骤: x=rand()%20;得到一个小于20的随机整数。 i=0;准备从下标为0的元素开始去查找数组中是否有与x相同的数,若没有,就把x中的数加入到数组中(放在最后),若有,就什么也不做。 用以下while循环从头到尾去检查数组中是否有与x值相同的元素: while(in & x!=ai) iKG-*3+KG-*3+;在两种情况下,退出循环:a. 当x不等于ai时,iKG-*3+KG-*3+,x再去与下一个元素进行比较,当遇到x等于ai时,说明在数组中已经有此数,因此不必再去比较,应当退出循环。b. 当x不等于ai时,i的值不断增1;当i的值等于n时,说明x已与数组中所有元素都比较过且都不相同,这时也应退出循环。 如果i的值等于n时,数组中没有与x相同的元素,因此需要把新的值放入数组中,可用以下语句来实现: if(i=n) an=x;nKG-*3+KG-*3+; 因为已有的数据放在下标为0到n-1的元素中,因此新的数放在an中,然后nKG-*3+ KG-*3+; 即数组中不同数据的个数增1。 (5) 接着重新循环,再去产生一个新的随机数,重复以上过程,直到n的值等于15时退出外循环。这时在数组中已放入了15个不同的随机整数。 (6) 请在主函数中定义所需的数组和变量。调用getone函数后,可在主函数中输出所得的数据。 (7) 总结: getone函数的主要部分是查找,没有找到才进行下一步操作。 C语言提供的库函数rand( )每调用一次产生一个0到32767的随机整数,因此rand()%20将得到一个0到19的随机整数。9.34【分析与解答】 (1) 本题可参考例9.11。 (2) 本题可用define命令行定义N来代表一个常量(参考2.2.3节)。可定义4个独立的函数来实现所要求的操作。第一个函数: void getm( int(*KG-*3p)N )用于给二维数组元素赋随机数。形参p是一个行指针,N是二维数组的列数。第二个函数: void sum(int aN,int *rows,int *KG-*3cols)用于求出二维数组每一行元素的和值放在形参指针rows所指的一维数组中,求出二维数组每一列元素的和值放在形参指针cols所指的一维数组中。形参a是一个行指针,N是二维数组的列数。第三个函数: void diagsum( int aN,int *dg1, int *dg2 )用于求出方阵的两个对角线上元素的和值,分别放在形参指针dg1和dg2所指的变量中。形参a是一个行指针,N是二维数组的列数。第四个函数用于必要的输出,请读者自己设计。 (3) 在getm函数中,利用一个双重循环,调用rand函数给二维数组赋值: for(i=0;iN;iKG-*3+KG-*3+)for(j=0;jN;jKG-*3+KG-*3+)pij=rand()%30; (4) 在sum函数中,利用一个双重循环,分别求出每行的和值放入rows所指数组中,每列的和值放入cols所指数组中: for(i=0;iN;iKG-*3+KG-*3+)for(j=0;jN;jKG-*3+KG-*3+) rowsi+KG-*3=aij; colsi+KG-*3=aji; 当i=0时,rowsi+KG-*3=aij;通过内循环控制变量j从0到N-1的变化,把下标为0行上的每一个元素的值累加,放入rows所指的、下标为0的数组元素中;而colsi+KG-*3 =aji; 通过内循环控制变量j从0到N-1的变化,把下标为0列上的每一个元素的值累加,放入cols所指的、下标为0的数组元素中。其他依次类推。因为进行累加运算,注意要给每个一维数组置初值0。 (5) 在diagsum函数中,通过一个for循环来求得两对角线上元素之和: for(i=0;iN;iKG-*3+KG-*3+) dg1+KG-*3=aii; dg2+KG-*3=aiN-i-1; 在主对角线上的元素行下标和列下标相同。而在从右到左对角线上的元素,行下标从0变化到N-1;对于列下标,当行下标为0时,列下标为N-i-1,当行下标为1时,列下标也可用表达式N-i-1求得,其他依此类推。 (6) 请参考例9.11的outdata函数对二维数组和有关数据的输出。 (7) 总结:对二维数组的操作,一般可利用一个双重循环来进行。本题虽然有多个任务,但可用函数,每个函数完成一个任务,每个函数都很简单,且都很容易读懂;一定要避免把所有的任务混在一起。9.35【分析与解答】 (1) 要进行相加的两个矩阵(假定为a和b)的行数应当相等,列数应当相等。两个矩阵相加就是把两个矩阵中下标相同的两个元素相加,相加的和值放在第三个矩阵(假定为c)、相同下标的元素中。即:cij=aij+bij。 (2) 可以定义一个函数getms(参考题9.34),利用rand()函数给两个矩阵赋值。 (3) 定义addm函数,对两个矩阵相加: void addm(int (*a)M, int (*b)M, int (*KG-*3c)M)这里a、b、c是行指针,分别指向三个二维数组(N行M列),要求这三个数组的行和列数相同。和值放在c所指数组中。矩阵相加的操作放在一个双重循环中: for(i=0;iN;iKG-*3+KG-*3+)for(j=0;jM;jKG-*3+KG-*3+)cij=aij+bij; (4) 定义output函数用以输出矩阵: void output(int (*a)M)用双重循环来实现 for(i=0; iN;iKG-*3+KG-*3+) for(j=0;jM;jKG-*3+KG-*3+) printf(%4d,aij);printf(KG-*3n);可调用三次分别输出a、b、c三个矩阵。 (5) 请在主函数中定义数组和所需的变量。调用getms函数得到原始数据,调用addm函数实现矩阵相加,调用输出函数输出三个矩阵。9.36【分析与解答】 (1) 为了输出以上表格,需要定义一个99的二维数组。在其中存入九九表中的数据。(2) 定义函数gettab,在二维数组中存入九九表中的数据: void gettab( int aN )形参a是一个指向99二维数组的行指针。 (3) 在gettab函数中,可用以下for循环把九九表中的数据放入数组中: for(i=0;iN;iKG-*3+KG-*3+)for(j=0;jN;jKG-*3+KG-*3+) aij=(i+1)*(j+1); (4) 请读者参照前面的习题,设计output函数,输出九九表。表格的第二行: (1) (2) (3) (4) (5) (6) (7) (8) (9)可用以下语句输出: for(i=1;iKG-*3=9;iKG-*3+KG-*3+) printf(%d) ,i); printf(KG-*3n);在二维数组每一行输出前(即内循环之前)加语句:printf(%d),i+1);就可得到每一行最前面的(1) 、(2)、(9)。 (5) 输出的格式不可能在第一次调试时就合适,一般需运行几次进行调整。 (6) 请读者自己完成主函数,定义所需的数组和变量,调用以上的函数。 (7) 总结:本题的算法很简单,只包含给二维数组的赋值和表格的输出,对于表格的格式,可以通过对程序的运行,逐步进行调整。9.37【分析与解答】 (1) 假定程序定义了M行N列的二维数组。可用define命令行定义N和M来分别代表两个常量(参考2.2.3节)。 (2) 程序的功能可由几个独立的函数来实现。 void getm( int (*KG-*3p)N )形参p是一个行指针,指向MN的数组首地址。getm函数的功能是通过调用rand函数给二维数组赋值。请参考习题9.34中的同名函数。 void suml(int aN,int *rows)形参a是一个行指针,指向MN的数组首地址,指针rows指向一个一维数组,在此数组元素中将存放每行元素之和。suml函数的功能是求出a所指二维数组中每一行元素之和并依次放在rows所指数组中。请参考习题9.34中的sum函数。 int getmax(int *rows)形参指针rows指向存放每行元素之和的一维数组,在此函数中将求出最大值所在的下标作为函数值返回。请参考习题9.25。 void change(int aN,int k)形参行指针a,指向MN的数组首地址,k接受一维数组中最大值所在的下标。此函数的功能是把二维数组中下标为k的那一行、与下标为0的行的所有元素进行对调。对调可用一个for循环来实现: for(i=0;iN;iKG-*3+KG-*3+) t=a0i; a0i=aki; aki=t; void output( int aN )此函数的功能是输出a所指的二维数组。可在数组改变前后分别调用它,以判断程序的操作是否正确。请参考习题9.35中的同名函数。 (4) 请在主函数中定义所需的数据结构:如数组、变量,并调用各函数。 (5) 总结:交换数据的算法应当已很熟悉,本题只是交换两行中的数据,这时被交换的两个元素的行下标不同,而列下标相同。读者不妨对两列中的数据进行交换。本题中,除对二维数组中的两行进行对调外,其他的算法在此之前都已介绍过,由此可知,应当积累一些基本的算法知识,程序的完成都是由一些基本算法来实现的。9.38【分析与解答】 (1) 在定义数组时应该注意,进行逆置操作的矩阵必须是一个方阵,行、列数相同。(2) 在本题中给二维数组置数以及对二维数组进行输出,请参考习题9.37,在此不再重复。(3) 对矩阵进行逆置的操作可由以下函数完成: void transpose(int pN)形参p指向一个二维数组。逆置的过程可由双重循环来完成: for(i=0;iN;iKG-*3+KG-*3+)for(j=0;ji;jKG-*3+KG-*3+) t=pij;pij=pji;pji=t; 内循环的控制变量j的变化范围从0到i,以对角线为界,把对称位置上的元素值进行对调。(4) 请编写主函数,定义所需的数据结构,并调用函数来实现规定的操作。(5) 总结:本题主要的算法也是交换算法,关键是需要正确确定交换的范围。第十章 字符串习题分析与解答一、 选择题10.1 【参考答案】 B)10.2 【参考答案】 B)10.3 【参考答案】 C)10.4 【参考答案】 B)10.5 【参考答案】 C)10.6 【参考答案】 A)10.7 【参考答案】 D)10.8 【参考答案】 A)10.9 【参考答案】 C)10.10【参考答案】 C)二、 填空题10.11【参考答案】 GFEDCB10.12【参考答案】 XYZA10.13【参考答案】 SO10.14【参考答案】 1010.15【参考答案】 Itis10.16【参考答案】 1 strlen(str) -1; 2 j- -(或- -j)10.17【参考答案】 310.18【参考答案】 goodgood!三、 编程题10.19【分析与解答】 (1) 已知gets函数的调用形式为:gets(str),str是存放所读入字符串的起始地址,可以是字符数组名、已指向一串固定存储单元的字符指针或数组元素的地址。gets函数从终端读入一串字符,直到读入一个回车换行符为止,字符串中不包括回车换行符,并在最后自动添加0。现在,在mygets函数中规定用getchar函数进行字符的读入,在此前,我们已多次使用过此函数,并以回车换行符作为结束输入的条件。函数的首部如下: mygets( char *s )输入过程如下: while(*s=getchar()!=n) s+ +;这里把读入的字符存入s所指的存储单元中,然后移动s,使它指向下一个存储单元。最后当读入n后,结束输入;这时,s指向存放n的存储单元,不要忘记在此单元中放入字符串结束标志来替换n:*s=0;。(2) puts函数的调用形式为:puts(str),str是输出字符串的起始地址。puts函数输出从str地址开始的字符串,最后自动输出一个换行符。myputs函数的首部如下: myputs(char *s)用以下循环输出字符串中的每一个字符直到遇到字符串结束标志: while(*s) putchar(*s); s+KG-*3+; 当s所指存储单元中是字符串结束标志时退出循环,然后输出一个换行符:putchar(KG-*3n);。 (3) 请编写主函数分别调用这两个函数,并分别与gets和puts函数比较。 (4) 总结:在mygets函数中利用while循环输入字符的操作在第六章中已多次用到,应当已经熟练掌握;而在myputs函数中利用指针的移动来输出所指存储单元的数据也是应熟练掌握的算法。10.20【分析与解答】 (1) 函数首部如下: int fun( char *s)字符指针形参s指向待查字符串。 (2) 定义变量i和j,使其初值分别为0和最后一个字符所在的下标,j的值可通过库函数求得: i=0; j=strlen(s)-1; (3) 利用循环,通过i+和j- -,使i和j不断分别向后和向前移动,以便引用对称的元素进行比较,若si等于sj,则当前符合回文条件,i和j的移动继续,否则退出循环;当i大于等于j时,说明对称位置中的字符都已经比较过且符合回文条件,因此也应退出循环: while(ij & si=sj) i+;j-; (4) 若因i大于等于j退出循环,则说明是回文,返回1;反之返回0: if(istrlen(s)|pos1 ) n=*(c1+1)-0; else n=10; (6) 按题目规定,如果a的值为1或者*KG-*3c1中的字符是-号时,输出s字符串的最后若干字符,这时调用output函数,把s数组的地址传给形参指针s,把开始输出的元素的下标len-n传给形参b,把最后一个输出的元素下标len-1传给形参e。可用以下语句来实现: if(a=1 | *KG-*3c1=-)output(s,len-n,len-1); (7) 如果*KG-*3c1中的字符是+号时,将从字符串s的最前面开始输出,除了把s数组的地址传给output函数的形参指针s外,把开始输出的元素的下标0传给形参b,把最后一个输出的元素下标n-1传给形参e。 if(*KG-*3c1=+)output(s,1,n-1); (8) 总结:读者按以上所述写出相应的代码,存入OUTCH.C文件。在Turbo C 的环境下进行编
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房产经纪人劳动合同书
- 2025届河南省洛阳市等2地高三下学期三模化学试题(含答案)
- 幸福新疆娃课件
- 小龙虾水彩课件教学
- 输液泵微量泵使用课件
- 小鸭子学走路的课件
- 民间个人医疗借款合同模板(含保险配套与还款安排)
- 个人鱼塘养殖承包与养殖环境监测合同
- 模块化橱柜设计研发生产销售合同
- 高端制造企业技术秘密保护及竞业限制合同
- 预防校园欺凌家长告知书
- 儿童托管中心疫情防控应急预案
- 《中国战略导弹》课件
- 人教版三年级上册《生命.生态.安全》全册教案(及计划)
- 人教统编版(部编版)小学科学教材目录
- 2024年污水管道维修协议书范文范本
- 颈椎后路单开门椎管扩大成形术的护理课件
- 新外研版(三起)三年级上册英语全册教学课件(2024年新版教材)
- 外研版七年级上册初一英语全册课时练(一课一练)
- 2024年重庆市高考思想政治试卷真题(含答案解析)
- 高考英语语法填空模拟题
评论
0/150
提交评论