




免费预览已结束,剩余70页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5.1 关系运算符和关系表达式 5.2 逻辑运算符和逻辑表达式 5.3 if语句 5.4 switch语句 5.5 程序举例 习题,第5章 选择结构程序设计,在第3章中已介绍了选择结构,它是三种基本结构之一。在大多数程序中都会包含选择结构。它的作用是,根据所指定的条件是否满足,决定从给定的两组操作选择其一。在本章中介绍如何用c语言实现选择结构。在c语言中选择结构是用if语句实现的。if语句最常用的形式是 if (关系表达式)语句1 else 语句2 例如: if ( x0 ) y=1; else y=-1; 其中x0是一个关系表达式。“”是一个关系运算符。,5.1 关系运算符和关系表达式,关系运算是逻辑运算中比较简单的一种。所谓“关系运算”实际上是“比较运算”。将两个值进行比较,判断其比较的结果是否符合给定的条件。例如,a3是一个关系表达式,大于号()是一个关系运算符,如果a的值为5,则满足给定的“a3”条件,因此关系表达式的值为“真”(即“条件满足”);如果a的值为2,不满足“a3”条件,则称关系表达式的值为“假”。,5.1.1 关系运算符及其优先次序,c语言提供6种关系运算符: 优先级相同 (高): (小于) =(小于或等于) (大于) =(大于或等于) 优先级相同 (低): = = (等于) !=(不等于) 关于优先次序: (1) 前4种关系运算符(,=,=)的优先级别相同,后两种也相同。前4种高于后2种。例如,“”优先于“=”。而“”与“”优先级相同。,(2) 关系运算符的优先级低于算术运算符。 (3) 关系运算符的优先级高于赋值运算符。 以上关系见图5.1。 例如: cab 等效于 c(ab) ab=c 等效于(ab)=c a=bc 等效于a=(bc) a=bc 等效于a=(bc),图5.1,5.1.2 关系表达式 用关系运算符将两个表达式(可以是算术表达式或关系表达式、逻辑表达式、赋值表达 式、字符表达式)连接起来的式子,称关系表达式。例如,下面都是合法的关系表达式: ab, abbc, (a=3)(b=5), ab, (ab)(bc) 关系表达式的值是一个逻辑值,即“真”或“假”。例如,关系表达式“5=3”的值为“假”,“5=0”的值为“真”。c语言没有逻辑型数据(pascal语言以true表示“真”,以false表示“假”。pascal和fortran等语言都有逻辑型变量和逻辑型常,量),以1代表“真”,以“0”代表“假”。例如,a=3,b=2,c=1,则: 关系表达式“ab”的值为“真”,表达式的值为1。 关系表达式“(ab)=c”的值为“真”(因为ab的值为1,等于c的值),表达式的值为1。 关系表达式“bca”的值为“假”,表达式的值为0。 如果有以下赋值表达式: d=abd的值为1。 f=abcf的值为0 (因为“”运算符是自左至右的结合方向,先执行“ab”得值为1, 再执行关系运算“1c”,得值0,赋给f)。,用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。在basic和pascal语言中有以下形式的逻辑表达式(and是逻辑运算符): (ab)and(xy) 如果ab且xy,则上述逻辑表达式的值为“真”。下面介绍c语言中的逻辑运算符和逻辑运算。 5.2.1 逻辑运算符及其优先次序 c语言提供三种逻辑运算符:,5.2 逻辑运算符和逻辑表达式,(1) &逻辑与(相当于其他语言中的and) (2) | 逻辑或(相当于其他语言中的) (3) ! 逻辑非(相当于其他语言中的nt) “&”和“|”是“双目(元)运算符”,它要求有两个运算量(操作数),如(ab)&(xy),(ab)|(xy)。 “!”是“一目(元)运算符”,只要求有一个运算量,如(ab)。 逻辑运算举例如下: a&b若a、b为真,则a&b为真。 a|b 若a、b之一为真,则a|b为真。 !a 若a为真,则!a为假。,在一个逻辑表达式中如果包含多个逻辑运算符,如 !a & b|xy & c 按以下的优先次序: (1) !(非)&(与)(或), 即“!”为三者中最高的。 (2) 逻辑运算符中的“&”和“|”低于关系运算符,“!”高于算术运算符。见图5.2。,图5.2,例如: (ab) & (xy)可写成ab & xy (a=b)|(x=y) 可写成a=b|x=y (!a)|(ab) 可写成 !a|ab 5.2.2 逻辑表达式 如前所述,逻辑表达式的值应该是一个逻辑量“真”或“假”。c语言编译系统在给出逻辑运算结果时,以数值1代表“真”,以0代表“假”,但在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”。即将一个非零的数值认作为“真”。例如:,(1) 若a=4,则!a的值为0。因为a的值为非0,被认作“真”,对它进行“非”运算,得“假”,“假”以0代表。 (2) 若a=4,b=5,则a&b的值为1。因为a和b均为非0,被认为是“真”,因此a&b的值也为“真”,值为1。 (3) a、b值同前, a|b的值为1。 (4) a、b值同前, !a|b的值为1。 (5) 4&0|2的值为1。 通过这几个例子可以看出,由系统给出的逻辑运算结果不是0就是1,不可能是其他数值。而在逻辑表达式中作为参加逻辑运算的运算对象(操作数),可以是0(“假”)或任何非0的数值(按“真”对待)。如果在一个表达式中不同位置上出现数值,应区分哪些是作为数值运算或关系运算的对象,哪些作为逻辑运算的对象。例如: 53 & 84-!0 表达式自左至右扫描求解。首先处理“53”(因为关系运算符优先于&)。在关系运算符两侧的5和3作为数值参加关系运算,“53”的值为1。再进行“1&84-!0”的运算,8的左侧为“&”,右侧为“”运算符,根据优先规则,应先进行“”的运算,即先进行“84-!0”的运算。现在4的左侧为“”,右侧为“-”运算符,而“-”优先于“”,因此应先进行“4-!0”的运算,由于“!”的级别最高,因此先进行“!0”的运算,得到结果1。然后进行“4-1”的运算,得结果3,再进行“83”的运算,得0,最后进行“1&0”的运算,得0。,实际上,逻辑运算符两侧的运算对象不但可以是0和1,或者是0和非0的整数,也可以是任何类型的数据。可以是字符型、实型或指针型等。系统最终以0和非0来判定它们属于“真”或“假”。例如 c & d 的值为1(因为c和d的ascii值都不为0,按“真”处理)。 在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。例如:,(1) a & b & c只有a为真(非0)时,才需要判别b的值,只有a和b都为真的情况下才需要判别c的值。只要a为假,就不必判别b和c(此时整个表达式已确定为假)。如果a为真,b为假,不判别c。见图5.3。 (2) a|b|c只要a为真(非0),就不必判断b和c;只有a为假,才判别b;a和b都为假才判别c。见图5.4。,图5.3,图5.4,也就是说,对&运算符来说,只有a0,才继续进行右面的运算。对运算符来说,只有a=0,才继续进行其右面的运算。因此,如果有下面的逻辑表达式: (m=ab) & (n=cd) 当a=1,b=2,c=3,d=4,m和n的原值为1时,由于“ab”的值为0,因此m=0,而“n=cd”不被执行,因此n的值不是0而仍保持原值1。这点请读者注意。 熟练掌握c语言的关系运算符和逻辑运算符后,可以巧妙地用一个逻辑表达式来表示一个复杂的条件。,例如,要判别某一年year是否闰年。闰年的条件是符合下面二者之一: 能被4整除,但不能被100整除。能被4整除,又能被400整除。 可以用一个逻辑表达式来表示: (year4=0 & year100!=0)|year400=0 当year为某一整数值时,如果上述表达式值为真(1),则year为闰年;否则year为非闰年。 可以加一个“!”用来判别非闰年: !(year4=0 & year100!=0)|year400=0),若表达式值为真(1),year为非闰年。也可以用下面逻辑表达式判别非闰年: (year4!=0)|(year100=0 & year400!=0) 若表达式值为真,year为非闰年。请注意表达式中右面的括弧内的不同运算符(,!,&0,=)的运算优先次序。,5.3 if语句 if语句是用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。 5.3.1 if语句的三种形式 c语言提供了三种形式的if语句: 1 if(表达式) 语句 例如: if(xy) printf(“d“,x); 这种if语句的执行过程见图5.5(a)。,2 if(表达式)语句1 else语句2 例如: if (xy) printf(“d“,x); else printf(“d“,y);见图5.5(b)。,图5.5,3 if(表达式1) 语句1 else if(表达式2)语句2 else if(表达式3) 语句3 else if(表达式m) 语句m else语句n 流程图见图5.6。,图5.6,例如: if(number500)cost=0.15; else if(number300)cost=0.10; else if(number100)cost=0.075; else if(number50)cost=0.05; elsecost=0; 说明: (1) 三种形式的if语句中在if后面都有“表达式”,一般为逻辑表达式或关系表达式。例如,if(a=b & x=y)printf(“a=b,x=y”);在执行if语句时先对表达式求解,若表达式的值为0,按“假”处理,若表达式的值为非0,按“真”处理,执行指定的语句。假如有以下if语句: if(3) printf(“k“);,是合法的,执行结果输出“k”,因为表达式的值为3,按“真”处理。由此可见,表达式的类型不限于逻辑表达式,可以是任意的数值类型(包括整型、实型、字符型、指针型数据)。例如,下面的if语句也是合法的: if(a) printf(“d“,a); 执行结果:输出a的ascii码97。 (2) 第二、第三种形式的if语句中,在每个else前面有一分号,整个语句结束处有一分号。例如:,if (x0) print (“%f“,x); else 各有一个分号 printf(“%f“,-x); 这是由于分号是c语句中不可缺少的部分,这个分号是if语句中的内嵌语句所要求的。如果无此分号,则出现语法错误。但应注意,不要误认为上面是两个语句(if语句和else语句)。它们都属于同一个if语句。else子句不能作为语句单独使用,它必须是if语句的一部分,与if配对使用。,(3) 在if和else后面可以只含一个内嵌的操作语句(如上例),也可以有多个操作语句,此时用花括号“”将几个语句括起来成为一个复合语句。如: if (abc printf(“area=62f“,area); else printf(“it is not a trilateral“); 注意在第3行的花括号“”外面不需要再加分号。因为内是一个完整的复合语句,不需另附加分号。,例5.1输入两个实数,按代数值由小到大的次序输出这两个数。 这个问题的算法很简单,只需要作一次比较即可。对类似这样简单的问题可以不必先写出算法或画流程图,而直接编写程序。或者说,算法在编程者的脑子里,相当于在算术运算中对简单的问题可以“心算”而不必在纸上写出来一样。 程序如下: main() float a,b,t; scanf(“f,f“,&a,&b);,if(ab) t=a;a=b;b=t; printf(“52f,52f“,a,b); 运行情况如下: 3.6,-3.2 -3.20, 3.60 例5.2输入3个数a,b,c,要求按由小到大的顺序输出。解此题的算法比上一题稍复杂一些。可以用伪代码写出算法:,if a b 将a和b对换 (a是a,b中的小者) if a c 将a和c对换 (a是a,c中的小者,因此a是三者中最小者) if b c 将b和c对换 (b是b,c中的小者,也是三者中次小者) 然后顺序输出a,b,c即可。 按此算法编写程序: main() float a,b,c,t;,scanf(“f,f,f“,&a,&b,&c); if(ab) t=a;a=b;b=t; /* 实现a和b的互换 */ if(ac) t=a;a=c;c=t; /* 实现a和c的互换 */ if(bc) t=b;b=c;c=t; /* 实现b和c的互换 */ printf(“52f,52f,52f“,a,b,c); 运行情况如下:,3,7,1 1.00, 3.00, 7.00 5.3.2 if语句的嵌套 在if语句中又包含一个或多个if语句称为if语句的嵌套。一般形式如下: if() if()语句1 else语句2内嵌if else if()语句3 else语句4内嵌if,应当注意if与else的配对关系。else总是与它上面的最近的if配对。假如写成: if() if()语句1 else if()语句2 else 语句3内嵌if 编程序者把else写在与第一个if(外层if)同一列上,希望else与第一个if对应,但实际上else是与第二个if配对,因为它们相距最近。因此最好使内嵌if语句也包含else部分(如本节(5.3.2节)最早列出的形式),这样if的数目和else的数目相同,从内层到外层一一对应,不致出错。,如果if与else的数目不一样,为实现程序设计者的企图,可以加花括弧来确定配对关系。例如: if() if ()语句1 else语句2(内嵌if) 这时 限定了内嵌if语句的范围,因此else与第一个if配对。,例5.3有一函数: y=-1(x0) 编一程序,输入一个x值,输出y值。 可以先写出算法: 输入x 若 x 0y = 1 输出y或输入x 若 x 0y = 1 输出y。也可以用流程图表示,见图5.7。,图5.7,有以下几个程序,请读者判断哪个是正确的? 程序1: main() int x,y; scanf(“d“,&x); if(x0)y=-1; else if(x=0) y=0; else y=1; printf(“x=d,y=dn“,x,y); ,程序2: 将上面程序的if语句(第46行)改为: if (x=0) if (x0)y= 1; else y= 0; else y=-1; 程序3: 将上述if语句改为: y=-1; if(x!=0) if(x0) y=1; else y=0;,程序4: y=0; if(x=0) if(x0) y=1; else y=-1;,图5.8,只有程序1和程序2是正确的。程序1体现了图5.7的流程,显然它是正确的。程序2的流程图见图5.8。它也能实现题目的要求。程序3的流程图见图5.9。程序4的流程图见图5.10。它们不能实现题目的要求。请注意程序中的else与if的配对关系。例如程序3中的else子句是和它上一行的内嵌的if语句配对,而不与笫2行的if语句配对。为了使逻辑关系清晰,避免出错,一般把内嵌的if语句放在外层的else子句中(如程序1那样),这样由于有外层的else相隔,内嵌的else不会被误认为和外层的if配对,而只能与内嵌的if配对,这样就不会搞混,如像程序3和程序4那样写就很容易出错。,图5.9,图5.10,5.3.3 条件运算符 若if语句中,在表达式为“真”和“假”时,且都只执行一个赋值语句给同一个变量赋值时,可以用简单的条件运算符来处理。例如,若有以下if语句: if (ab) max=a; else max=b; 可以用下面的条件运算符来处理: max=(ab)?ab; 其中“(ab)?ab”是一个“条件表达式”。它是这样执行的:如果(ab)条件为真,则条件表达式取值a,否则取值b。,条件运算符要求有3个操作对象,称三目(元)运算符,它是c语言中唯一的一个三目运算符。条件表达式的一般形式为图5.11表达式1?表达式2表达式3。它的执行过程见图5.11。,图5.11,说明: (1) 条件运算符的执行顺序:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。 max=(ab)?ab 执行结果就是将条件表达式的值赋给max。也就是将a和b二者中大者赋给max。 (2) 条件运算符优先于赋值运算符,因此上面赋值表达式的求解过程是先求解条件表达式,再将它的值赋给max。,条件运算符的优先级别比关系运算符和算术运算符都低。因此 max=(ab)?ab 括号可以不要,可写成 max=ab?ab 如果有 ab?ab1 相当于ab?a(b1),而不相当于(ab?ab)1。 (3) 条件运算符的结合方向为“自右至左”。如果有以下条件表达式:ab?acd?cd相当于ab?a(cd?cd),如果a=1,b=2,c=3,d=4,则条件表达式的值等于4。 (4) 条件表达式不能取代一般的if语句,只有在if语句中内嵌的语句为赋值语句(且两个分支都给同一个变量赋值)时才能代替if语句。像下面的if语句就无法用一个条件表达式代替。 if(ab) printf(“d“,a); else printf(“d“,b); 但可以用下面语句代替: printf(“d“,ab?ab); 即将条件表达式的值输出。,(5) 条件表达式中,表达式1的类型可以与表达式2和表达式3的类型不同。如x? ab x是整型变量,若x=0,则条件表达式的值为b。表达式2和表达式3的类型也可以不同,此时条件表达式的值的类型为二者中较高的类型。如 xy?115 如果xy,则条件表达式的值为15,若xy,值应为1,由于15是实型,比整型高(见第3章37),因此,将1转换成实型值1.0。 例5.4输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。,关于大小写字母之间的转换方法,在本书例3.7中已做了介绍,因此可直接编写程序: main() charch; scanf(“c“,& ch); ch=(ch=a & ch=z)?(ch32)ch; printf(“c“,ch) 运行结果如下: a a,条件表达式中的(ch32),其中32是小写字母和大写字母ascii码的差值。 5.4 switch 语 句 switch语句是多分支选择语句。用来实现如图3.6所表示的多分支选择结构。if语句只有两个分支可供选择,而实际问题中常常需要用到多分支的选择。例如,学生成绩分类(90分以上为a等,8089分为b等,7079分为c等);人口统计分类(按年龄分为老、中、青、少、儿童);工资统计分类;银行存款分类。,当然这些都可以用嵌套的if语句来处理,但如果分支较多,则嵌套的if语句层数多,程序冗长而且可读性降低。c语言提供switch语句直接处理多分支选择,它相当于pascal语言中的case语句。它的一般形式如下: switch(表达式) case 常量表达式1:语句1 case 常量表达式2:语句2 case 常量表达式n:语句n default :语句n1 ,例如,要求按照考试成绩的等级打印出百分制分数段,可以用switch语句实现: switch(grade) case aprintf(“85100n“); case bprintf(“7084n“); case cprintf(“6069n“); case dprintf(“60n“); defaultprintf(“errorn“); ,说明: (1) switch后面括弧内的“表达式”, ansi标准允许它为任何类型。 (2) 当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。 (3) 每一个case的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象(对表达式的同一个值,有两种或多种执行方案)。 (4) 各个case和default的出现次序不影响执行结果。例如,可以先出现“default:”,再出现“case d:”,然后是“case a:”。,(5) 执行完一个case后面的语句后,流程控制转移到下一个case继续执行。“case常量表达式”只是起语句标号作用,并不是在该处进行条件判断。在执行switch语句时,根据switch后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。例如,上面的例子中,若grade的值等于a,则将连续输出: 85100 7084 6069 60 error,因此,应该在执行一个case分支后,使流程跳出switch结构,即终止switch语句的执行。可以用一个break语句来达到此目的。将上面的switch结构改写如下: switch(grade) case aprintf(“85100n“); break; case bprintf(“7084n“);break; case cprintf(“6069n“); break; case dprintf(“60n“);break; default printf(“errorn“); ,最后一个分支(default)可以不加break语句。 如果grade的值为b,则只输出“7084”。流程图见图5.12。,图5.12,在case后面中虽然包含一个以上执行语句,但可以不必用花括弧括起来,会自动顺序执行本case后面所有的执行语句。当然加上花括弧也可以。 (6) 多个case可以共用一组执行语句,如: case a case b case c printf(“60n“);break; grade的值为a、b或c时都执行同一组语句。,5.5 程序举例 例5.5写程序,判断某一年是否闰年。 我们用图5.13来表示判别闰年的算法。以变量leap代表是否闰年的信息。若某年为闰年,则令leap=1;若为非闰年,令leap=0。最后判断leap是否为1(真),若是,则输出“闰年”信息。,图5.13,据此编写程序如下: main() int year, leap; scanf(“d“,&year); if (year4=0) if (year100=0) if (year400=0) leap=1; else leap=0; else,leap=1; else leap=0; if (leap) printf(“d is “,year); else printf(“d is not “,year); printf(“a leap year.n“); 运行情况如下:, 1989 1989 is not a leap year. 2000 2000 is a leap year. 也可以将程序中第513行改写成以下的if语句: if(year4!=0) leap=0; else if(year100!=0) leap=1; else if(year400!=0) leap=0; else leap=1;,也可以用一个逻辑表达式包含所有的闰年条件,将上述if语句用下面的if语句代替: if(year%4=0 else leap=0; 例5.6求ax2bxc=0方程的解。 例4.12曾介绍过基本的算法,实际上应该有以下几种可能: a=0,不是二次方程。 b2-4ac=0,有两个相等实根。 b2-4ac0,有两个不等实根。 b2-4ac0,有两个共轭复根。,画出ns流程图表示算法(图5.14)。,图5.14,据此编写程序如下: #include main() float a,b,c,d,disc,x1,x2,realpart,imagpart; scanf(“f,f,f“,&a,&b,&c); printf(“the equation“); if(fabs(a)=le-6) printf(“is not a quadratic“); else disc=b*b-4*a*c;,if(fabs(disc)=le-6) printf(“has two equal roots:%8.4n“,-b(2*a); else if(discle-6) x1=(-bsqrt(disc)(2*a); x2=(-b-sqrt(disc)(2*a); printf(“has distinct real roots:%8.4f and %8.4fn“,x1,x2); else realpart=-b(2*a);,imagpart=sqrt(-disc)(2*a); printf(“has complex rootsn“); printf(“%8.4f+%8.4fin“,realpart,imagpart); printf(“%8.4f-%8.4fin“,realpart,imagpart); 程序中用disc代表b2-4ac,先计算disc的值,以减少以后的重复计算。对于判断b2-4ac是否等于0时,要注意一个问题:由于disc(即b2-4ac)是,实数,而实数在计算和存储时会有一些微小的误差,因此不能直接进行如下判断:if(disc=0)因为这样可能会出现本来是零的量,由于上述误差而被判别为不等于零而导致结果错误。所以采取的办法是判别disc的绝对值(fabs(disc)是否小于一个很小的数(例如10-6),如果小于此数,就认为disc=0。程序中以realpart代表实部p,以imagpart代表虚部q,以增加可读性。 运行结果如下: 1,2,1 the equation has two equalroots-10000, 1,2,2 the equation has complex roots: -1000010000i -10000-10000i 2,6,1 the equation has distinct real roots:-0.1771 and =2.8229 例5.7运输公司对用户计算运费。路程(s)越远,每公里运费越低。标准如下:,s250km没有折扣 250s500 2折扣 500s1000 5折扣 1000s2000 8折扣 2000s3000 10折扣 3000s 15折扣 设每公里每吨货物的基本运费为p(price的缩写),货物重为w(weight的缩写),距离为s,折扣为d(discount的缩写),则总运费f(freight的缩写)的计算公式为f=p*w*s*(1-d)分析此问题,折扣的变化是有规律的:从图5.15可以看到,折扣的“变化,点”都是250的倍数(250,500,1000,2000,3000)。利用这一特点,可以在横轴上加一种坐标c,c的值为s/250。c代表250的倍数。当c1时,表示s250,无
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物流年终总结工作报告
- 甲型流感后护理查房
- 脚手架专项施工安全方案
- 施工企业安全生产事故应急救援预案
- 公司级安全生产培训
- 线上教学工作总结
- 《苹果里的星星》课件
- 美术机构教务工作总结
- 了不起的轮子课件教学
- 静脉血栓栓塞的预防与护理
- 2024年连云港东海县招聘社区工作者真题
- 燃料电池催化剂研究报告
- 湖北省华大新高考联盟2026届高三上学期9月教学质量测评语文试题(含答案)
- 人工智能应用技术-教学大纲
- 2025-2026学年地质版(2024)小学体育与健康三年级(全一册)教学设计(附目录P123)
- (高清版)TDT 1075-2023 光伏发电站工程项目用地控制指标
- 《归园田居(其一)》《登高》《梦游天姥吟留别》联读课件 统编版高中语文必修上册
- 企业职工基本养老保险待遇申报表
- 涉河建设项目审查管理体会及探讨课件-涉河建设项目管理及建设方案审查技术标准课件
- DB44∕T 1168-2013 轮扣式钢管脚手架构件
- 单层工业厂房设计(全部)PPT课件.ppt
评论
0/150
提交评论