结构化程序设计基础和C语言的控制结构.ppt

上传人:max****ui 文档编号:12554064 上传时间:2020-05-11 格式:PPT 页数:90 大小:877.50KB
返回 下载 相关 举报
结构化程序设计基础和C语言的控制结构.ppt_第1页
第1页 / 共90页
结构化程序设计基础和C语言的控制结构.ppt_第2页
第2页 / 共90页
结构化程序设计基础和C语言的控制结构.ppt_第3页
第3页 / 共90页
点击查看更多>>
资源描述
程序设计技术,主讲教师:郭松涛工作单位:重庆大学计算机学院电子邮件:stguostguo,程序设计技术,C语言数据描述和C程序设计初步结构化程序设计基础和C语言的控制结构数组及其应用函数与C程序结构指针与函数指针与数组字符串及其应用结构体类型和联合体类型C语言的文件处理及其应用位运算与枚举类型,C程序的控制结构,C程序的控制结构概述C语言中的关系运算和逻辑运算分支结构及其应用循环结构及其应用其他简单控制结构C语言控制结构应用举例,结构化程序设计概述,结构化程序设计是进行程序设计的方法和原则。按照结构化程序设计的基本观点,任何程序都可以通过三种基本程序结构的组合实现。这三种基本结构是:顺序结构:按语句出现的顺序依次执行的程序结构。选择结构:根据给定的条件是否成立,以决定程序流程转向的程序结构。循环结构:在某种条件成立的情况下,反复执行某一公共程序段,直到条件不成立时,终止循环的程序结构。,结构化程序的优点:具有结构清晰、可读性好、易于修改。,C程序的控制结构,C程序的控制结构概述C语言中的关系运算和逻辑运算分支结构及其应用循环结构及其应用其他简单控制结构C语言控制结构应用举例,C语言中的关系运算和逻辑运算,对于分支结构和循环结构都涉及到两个方面的基本问题:1)如何表示控制结构中的条件;2)对于控制结构中的条件如何判断成立与否;,程序设计语言中,用关系运算和逻辑运算来实现对程序控制结构中条件的描述和处理。,C语言中的关系运算,1)关系运算符和关系表达式关系运算符用于比较两个运算对象,用关系运算符将两个表达式连接起来的式子称为关系表达式。2)关系运算符及其优先级=(同级)=!=(同级)关系运算符的优先级低于算术运算符。关系运算符的结合性为左结合性。例如:c3/*结果为1*/35/*结果为0*/,C语言中的关系运算,该程序运行执行语句c=5-1=a+2=a+2=和=结合,即先计算表达式5-1=a+2得到结果0,然后计算表达式0c且a+cb且b+ca)。计算三角形的面积的公式为:,复合语句及其应用,上面程序中,if结构的语句部分是复合语句:s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c);printf(%fn,area);在C程序的设计过程中,需要使用复合语句的地方必须使用复合语句的形式,否则程序在语法上可能检查不出任何错误,但程序运行的结果与程序设计者的期望会相去甚远。例如,如果将例2.5相关程序段描述为如下形式:if(a+bc,双分支结构及其应用,双分支结构的形式:,if(expression)sentence1;elsesentence2;,2.2.3if_else语句与程序的双分支结构,注意:作为条件的表达式可以是任何可以求出0值或非0值的表达式。if结构或else结构后语句部分都可以是C语言的任何合法语句。,双分支结构及其应用,语句的执行过程:先判断表达式的值,若表达式的值为真(表达式的值不为0),则执行语句1,然后执行if结构的后续语句;否则,执行语句2,然后执行if结构的后续语句。,双分支结构及其应用,例2-6求任意输入的3个整数中的最大数。,条件运算符与条件表达式及其应用,2.2.4条件运算符与条件表达式,C语言中,若ifelse语句结构中的语句部分满足下列两个条件:无论表示条件的表达式取何值(真或假),语句部分都是一句简单的赋值语句。两条赋值语句都是为同一个变量赋值。则,可以使用C语言中提供的条件运算符代替这种ifelse结构。,条件运算符与条件表达式及其应用,条件运算符是C语言中惟一的一个三元运算符,使用条件运算符构成的表达式称为条件表达式。,exp1?exp2:exp3,1)条件表达式一般形式如下:,2)条件表达式的执行过程:,首先计算表达式exp1的值,若exp1的值为非0(真),则计算出表达式exp2的值作为整个条件表达式的值;若exp1的值为0(假),则计算出表达式exp3的值作为整个条件表达式的值。,条件运算符与条件表达式及其应用,条件运算符的优先级别高于赋值运算符,但低于关系运算符和算术运算符。,条件运算符的结合方向为右结合性,例如有如下形式的条件表达式:ab?a:cd?c:d,可以看出,在数据对象cd(关系表达式)的两边具有同级的条件运算符(?:),由于条件运算符的结合性为右结合,数据对象cd先与其右边的的条件运算符结合,即先计算cd?c:d,所以整个条件表达式的计算过程与表达式ab?a:(cd?c:d)的计算过程相同。,条件运算符与条件表达式及其应用,例2-7从键盘上输入一个英文字母,若其是大写字母则转换为小写字母输出;否则转换为大写字母输出。,在上面程序中,表达式ch=A,多分支结构及其应用,2.2.5if语句的嵌套与程序的多分支结构,if结构或者else结构的语句部分又是一个另外一个if结构,称为if语句的嵌套。在C程序设计中,if语句的嵌套结构用于解决在若干种相关情况中选择一种进行处理的问题。,例如,在一个二分支if语句的两个语句部分分别嵌入了一个二分支if语句的形式为:,if(exp1)if(exp2)sentence1;elsesentence2;elseif(exp3)sentence3;elsesentence4;,多分支结构及其应用,例2-8公司按照销售人员收到的订单金额数量评定等级,订单总金额超过一万的为A等,50009999为B等,25004999为C等,2500以下为D等。编制程序对输入的订单总金额数判定等级。,多分支结构及其应用,当被嵌套的if结构均被嵌套在else的语句部分时,形成了一种称为else_if的多分支选择结构,这是if_else多重嵌套的变形。其一般形式为:,if(exp1)sentence1;elseif(exp2)sentence2;elseif(exp3)sentence3;elseif(expN)sentenceN;elsesentenceN+1;,多分支结构及其应用,注意:在这种特殊的elseif结构中,表示条件的表达式是相互排斥的,执行该结构时控制流程从exp1开始判断,一旦有一个表达式的值为非0(真)时,就执行与之匹配的语句,然后退出整个选择结构;如果所有表示条件的表达式值均为0(假),则在执行语句sentenceN+1后退出整个选择结构;如果当所有的条件均为假时不需要进行任何操作,则最后的一个else和语句sentenceN+1可以缺省。嵌套的elseif结构执行流程如图2.6所示。,多分支结构及其应用,例2-9编写程序求如下所示多分支方程的解。,在程序中,变量x的取值区间为:(DBL_MIN,1)、1,10)、10,DBL_MAX),其中DBL_MIN和DBL_MAX分别表示双精度实型数据所能取得的最小值和最大值。,多分支结构及其应用,在包含了if语句嵌套结构的程序中,else子句与if的配对原则是非常重要的,按不同的方法配对则得到不同的程序结构。C语言中规定:程序中的else子句与在它前面距它最近的且尚未匹配的if配对。无论将程序书写为何种形式,系统总是按照上面的规定来解释程序的结构。请看如下两个用于比较的程序段:,多分支结构及其应用,例2.10和例2.11描述了两种情况下程序的执行情况。其中:例2.10程序执行的结果为:a=-1,b=10,例2.11程序执行的结果为:a=-1,b=11。,例2-10else与if配对原则示例。,例2-11else与if配对原则示例(使用复合语句改变程序结构),switch语句与多分支结构及其应用,2.2.6switch语句与程序的多分支结构,C语言中可以使用switch语句结构实现对多分支选择结构情况的直接处理。1)switch语句结构的一般形式如下:,switch(expession)caseconstand1:sentences1;break;caseconstand2:sentences2;break;caseconstandN:sentencesN;break;default:sentencesN+1,switch语句与多分支结构及其应用,2)执行过程:,首先,对作为条件的表达式(expression)求值;然后,在语句结构的花括号内从上至下查找所有的case分支,当找到与条件表达式值相匹配的case时,将其作为控制流程执行的入口,并从此处开始执行相应的语句段,直到遇到break语句或者是switch语句结构的右花括号“”为止。,switch(number)case1:statement1;case2:statement2;case3:statement3;default:statement4;statement5;,2,switch语句与多分支结构及其应用,switch语句与多分支结构及其应用,作为条件的表达式expression的值必须是有序型的,即只能是整型、字符型、枚举型三者之一。语句段sentences可以是单条语句,也可以是多条语句,但这多条语句并不是复合语句,不需要使用花括号。语句段sentences中的语句可以使任意合法的C语句。结构中的常数值应与表示条件的表达式值对应一致,且各常数的值不能相同。结构中的break语句和default可选项可根据需要确定是否选用。,3)使用switch语句结构时应注意的问题:,switch语句与多分支结构及其应用,例2-12从键盘上输入一个字符,判断它是数字、空格还是其它键;若是数字,还要求显示出是哪一个数字。,在语句段中包含了switch语句,称为switch语句的嵌套。对于内嵌的switch结构处理方法与单层switch结构处理方法相同,需要注意的是:当从内嵌的switch结构中退出(执行中遇到了内嵌swithc结构中的break语句或执行到了内嵌switch语句体的右边花括号)时,只是退出内嵌的switch结构,而不是退出整个switch结构,例2.13程序展示了这种情况。,例2-13swithc结构的嵌套示例。,switch语句与多分支结构及其应用,4)if和switch的比较,多分支结构程序设计中:if语句结构的嵌套可以解决任何条件下的多分支问题;对于switch语句结构,则要求条件是在某个范围内的一些离散的等值点(描述为:与什么相匹配,就做什么)。,在实际的程序设计过程中,可以使用switch语句结构解决的问题,一定也可以用if语句结构的嵌套来解决;但用if语句结构的嵌套可以解决得问题,使用switch语句结构就不一定能够解决。,C程序的控制结构,C程序的控制结构概述C语言中的关系运算和逻辑运算分支结构及其应用循环结构及其应用其他简单控制结构C语言控制结构应用举例,C语言的循环结构及其应用,2.3循环程序结构,在实际问题中经常会遇到许多具有规律性的重复计算处理问题,在处理此类问题的程序中就需要将某些语句或语句组重复执行多次。程序设计中,一组被重复执行的语句称之为循环体,每一次执行完循环体后都必须根据某种条件的判断决定是继续循环,还是停止循环;决定所依据的条件称之为循环条件。这种由重复执行的语句或语句组,以及循环条件的判断所构成的程序结构就称为循环结构。循环结构是结构化程序设计的三种基本结构之一,是构成各种复杂程序的基本构造单元。在C语言中提供了三种用以实现程序循环结构的语句,它们是:while语句、do_while语句和for语句。,while型循环结构及其应用,2.3.1while型循环结构,1)while型循环控制结构的一般形式为:,while(exp)Loop-Body,2)while型循环结构的执行过程:,首先计算作为判断条件的表达式exp的值;对表达式exp的值进行判断,若条件表达式的值为非0(真),则执行一次循环体Loop-Body;然后再一次计算条件表达式exp的值,若计算结果仍为非0(真),再一次执行循环体。重复上述过程,直到某次计算出的条件表达式值为0(假)时,则退出循环结构;控制流程转到该循环结构之后的语句。while循环控制结构的执行过程如图2-4所示。,while型循环结构及其应用,3)使用while循环结构时需要注意以下几点:,由于整个结构的执行过程是先判断、后执行,因而循环体有可能一次都不执行。在循环结构的控制部分中,如果表示条件的表达式是一个非0值常量表达式,则构成了死循环。例如:while(1)Loop-BodyC程序设计中,如果不是有意造成死循环,则在while循环结构的循环体内必须有能够改变循环控制条件的语句存在。循环结构的循环体可以是一条语句、一个复合语句、空语句等任意合法的C语句。,例2-14使用while循环控制结构求的值。,while型循环结构及其应用,在例2.14程序中,循环控制变量n从初值1开始,在循环结构的执行过程中通过循环体中的表达式语句n+;修改循环控制变量,使其逐渐趋近于100。循环结构中的循环体是由两条C语句组成的,所以需要使用复合语句的形式。当然也可以通过语句的组合使得循环体由一条语句构成,这样就不需要使用复合语句形式,上面程序中的循环结构可以改写为如下形式:while(n=100)sum+=i+;,在程序中还需要注意变量sum的初值问题,由于变量sum用于存放和数,所以其初值必须从某一固定值开始。一般意义下,用于存放和数、计数等目的的变量初始值均应为0值。,do_while型循环结构及其应用,2.3.2do_while型循环结构,1)dowhile型循环控制结构的一般形式为:,doLoop-Bodywhile(exp);,2)dowhile型循环结构的执行过程:,首先执行一次循环体Loop-Body;然后计算作为判断条件的表达式exp的值;对表达式exp的值进行判断,若表达式的值为非0(真),则执行一次循环体;执行完循环体后再一次计算条件表达式的值,若计算结果仍为非0(真),再一次执行循环体。重复上述过程,直到某次计算出的条件表达式值为0(假)时,则退出循环结构;控制流程转到该循环结构之后的语句。Do_while循环控制结构的执行过程如图2.10所示。,do_while型循环结构及其应用,3)在使用do_while循环结构时需要注意以下几点:,由于整个结构的执行过程是先执行、后判断,所以循环结构中的循环体至少被执行一次。在循环结构的控制部分中,如果表示条件的表达式是一个非0值常量表达式,则构成了死循环。例如:doLoop-Bodywhile(1);C程序设计中,如果不是有意造成死循环,则在do_while循环结构的循环体内必须有能改变循环控制条件的语句存在。循环结构的循环体可以是一条语句、一个复合语句、空语句等任意合法的C语句。,do_while型循环结构及其应用,例2-15使用do_while循环控制结构求的值。,例2-16编程序实现功能:将一个整数的各位数字颠倒后输出。,for型循环结构及其应用,2.3.3for型循环结构,for语句构成的循环是C语言中提供的使用最为灵活、适应范围最广的循环结构,它不仅可以用于循环次数已确定的情况,而且也可以用于循环次数不确定但能给出循环结束条件的循环。,1)for循环结构的一般形式为:,for(exp1;exp2;exp3)Loop-Body,其中,括号内的三个表达式称为循环控制表达式,exp1的作用是为循环控制变量赋初值或者为循环体中的其他数据对象赋初值,exp2的作用是作为条件用于控制循环的执行,exp3的主要作用是对循环控制变量进行修改,三个表达式之间用分号分隔。,for型循环结构及其应用,2)for循环结构的执行过程:,首先计算表达式exp1的值对循环控制变量进行初始化,如果有需要也同时对循环体中的其他数据对象进行初始化操作;然后计算作为循环控制条件使用的表达式exp2的值;根据exp2计算的结果决定循环是否进行,当exp2的值为真(非0)时则执行循环体Loop-Body一次;执行完循环体后,计算表达式exp3的值以修改循环控制变量;然后再次计算表达式exp2的值以确定是否再次执行循环体;反复执行上述过程直到某一次表达式exp2的值为0(假)为止。for循环控制结构的执行过程如图2.12所示。,for型循环结构及其应用,3)使用for循环结构时需要注意以下几点:,由于整个结构的执行过程是先判断、后执行,因而循环体有可能一次都不执行。C语言的for循环控制结构不仅提供在其控制部分的表达式3中修改循环控制变量的值,而去还允许在for循环的循环体中存在能改变循环控制条件的语句,使用时需特别注意。循环结构的循环体可以是一条语句、一个复合语句、空语句等任意合法的C语句。根据程序功能的需要,循环控制部分的三个表达式分别都可以逗号表达式,这也是逗号表达式最主要的用法之一。根据程序功能的需要,循环控制部分的三个表达式中可以缺省一个、两个、三个,但作为分隔符使用的分号不能缺省。,for型循环结构及其应用,例2-18编程序实现功能:判断从键盘输入一个大于2的正整数是否为素数。,所谓素数,就是只能被1和自身整除的自然数。根据素数的定义,判断一个正整数m是否为素数最简单的方法就是:将2到m-1之间的每一个整数去除m,若其间有一个能整除m,则m不是素数;若2到m-1之间的所有整数都不能整除m,则m为素数。,例2-17使用for循环控制结构求的值。,空语句及其在程序中的使用,2.3.4空语句及其在程序中的使用,在C语言中,只由分号“;”构成的C语句称为空语句。,空语句不进行任何操作(或者称之为进行空操作),在C程序的设计中,程序的某个位置从C语言的语法要求上应该有一个C语句存在,但语义上(即程序的逻辑功能上)又不需要进行任何操作时,就可以使用空语句来占据这个语句位置以同时满足语法和语义上的需求。,空语句及其在程序中的使用,例如有如下形式的C程序段:while(getchar()!=n);该段程序中,当循环条件为真时(即接收到的字符不是换行符时),程序不进行任何操作(执行空语句后)进入下一次循环过程。该段程序通过这样的方式实现了“反复从键盘上接收输入字符直至换行为止”的语义。,例2-19编写程序实现求阶乘的功能,要求循环体用空语句实现。,嵌套循环结构及其应用,2.3.5循环的嵌套,一个循环结构的循环体内又包含另外一个完整的循环结构,称为循环的嵌套。循环的嵌套层数可以是多层,称为多重循环。,在C语言中三种循环结构语句“do.while循环”、“while循环”、“for循环”可以根据需要,任意地互相嵌套,下面是一些常见的循环嵌套结构:,嵌套循环结构及其应用,使用多重循环结构时应注意以下几点:,三种循环结构(“while循环”结构、“dowhile循环”结构、“for循环”结构)可以相互嵌套。一般情况下,嵌套结构中的外层循环和内层循环的循环控制变量不得同名。,例2-20编程序输出如下所示由字符构成的图形。,例2.20程序是一个双重循环结构,其中外层循环结构控制输出图形的行数。循环体中完成了3件事情:按照要求输出前导空格,使用了一个内嵌的循环结构完成该功能,注意该内嵌循环结构的控制条件j=A;当遇到换行字符是循环结束并输出变量counter的值。程序的某次执行情况和输出结果如下所示:Inputastring:skjdf4623784908%*loop:if(kn)的最大公倍数可以使用辗转相除法。其算法可以描述为:m除以n得到余数r(0rn)。若r=0则算法结束,n为最大公约数。否则执行步骤。mn,nr,转回到步骤。当已知两个非负整数m和n的最大公约数后,求其最小公倍数的算法可以简单描述为:两个正整数之积除以它们的最大公约数。,例2-25求两个正整数的最大公约数和最小公倍数。,C语言控制结构应用举例,2.5.2穷举思想及程序实现,在计算机的应用中,许多问题的解“隐藏”在多个的可能之中。穷举就是对多种可能的情形一一测试,从众多的可能中找出符合条件的(一个或一组)解,或者无解的结论。在一个集合内对集合中的每一个元素进行一一测试的方法称为穷举法。穷举本质上就是在某个特定范围中的查找,是一种典型的重复型算法,其重复操作(循环体)的核心是对问题的一种可能状态的测试。,穷举方法的实现主要依赖于以下两个基本要点:搜寻可能值的范围如何确定。被搜寻可能值的判定方法。对于被搜索的可能值,一般都是问题中所要查找的对象或者是要查找对象应该满足的条件,因而在问题中都会有清晰的描述。但对于搜寻范围,在有些问题是比较确定的,而在另外一些问题则是不确定的。,C语言控制结构应用举例,例2-26编程序找出所有的“水仙花数”。“水仙花数”是指一个3位数,其各位上数字的立方之和等于这个数本身。例如153=13+53+33,所以153是“水仙花数”。,分析:依题意可以得出,搜寻可能值的范围为100999;判定方法为各位上数字的立方之和等于被判定数。程序可以依次取出区间100,999之间的每一个数,然后将该数分解为3个数字,按照判定条件判定即可。,C语言控制结构应用举例,上面求取“水仙花数”的可以称之为分离数据的方法。除此之外还可以使用组合数据的方法求取“水仙花数”。如果用a、b和c分别表示3位数的百位、十位和个位,则该3位数可以表示为:a*100+b*10+c,其中a的变化范围为1,9,b和c的变化范围均为0,9。程序只需要依次用a、b和c组合出所有的3位数参加判断即可,使用3重循环控制结构可以得到如下程序。,例2-26b编程序找出所有的“水仙花数”。解法2。,C语言控制结构应用举例,例2-27搬砖问题:36块砖,36人搬,男搬4,女搬3,两个小孩抬1砖。要求将所有的砖一次搬完,问需要男、女、小孩各多少?,设男、女、小孩的数量分别为man,woman,child,依题意可以得出被搜寻值的判定方法。判定方法表示为:4*man+3*woman+0.5*child=36。对于搜寻的范围,按照常识简单划分,man,woman,child都应该为整数,而且男人的数量应该少于9人(36/4),女人的数量应该少于12人(36/3),当男人数量和女人数量一定的情况下小孩的数量可以用算式child=36-man-womanchild=36-man-woman、f1=f2;、f2=f3;,反复使用该语句序列就能够求出所要求的裴波那契数列。,C语言控制结构应用举例,2.5.4一元高阶方程的迭代解法(*),用迭代法求一元高阶方程f(x)=0的解,就是要把方程f(x)=0改写为一种迭代形式:x=(x);选择适当的初值x0,通过重复迭代构造出一个序列:x0,x1,x2,x3,xn,;若函数在求解区间内连续,且这个数列收敛,即存在极限,那么该极限值就是方程f(x)=0的一个解。在构成求解序列时,不可能重复无限次,重复的次数应由指定的精确度(或误差)决定。当误差小于给定值时,便认为所得到的解足够精确了,迭代过程结束。,C语言控制结构应用举例,1.牛顿迭代法求解一元高阶方程,牛顿迭代法又称为牛顿切线法,其基本思想如图2.14所示。设xk是方程f(x)=0的精确解x*附近的一个猜测解,过点Pk(xk,f(xk)作f(x)的切线。该切线方程为:y=f(xk)+f(xk)*(x-xk)切线与X轴的交点是方程:f(xk)+f(xk)*(x-xk)=0的解,为:xk+1=xk-f(xk)/f(xk),该式既是牛顿迭代法求解一元高阶方程迭代公式。从数学上可以证明,若猜测解xk取在单根x*的附近,则它恒收敛。经过有限次迭代后,便可以求得符合误差要求的近似根。,C语言控制结构应用举例,例2-30用牛顿迭代法求方程x4-4x3+6x2-8x-8=0在0附近的根。,程序的运行结果为:root=-0.602272。,2二分迭代法求解一元高阶方程,C语言控制结构应用举例,设有一元高阶方程表示为:f(x)=0,则用二分迭代法求高阶方程在某个单根区间的实根的步骤描述如下:输入所求区间的两个端点值即初值x1和x2,所取求根区间必须保证f(x1)*f(x2)0;计算出用x1和x2表示端点的求根区间中点值:x=(x1+x2)/2;计算x1、x和x2三点处的函数值f(x1)、f(x2)和f(x)。此时若f(x)=0,则算法结束,x就是所求的一个实根。否则,转步骤;若f(x)和f(x1)同号,令x1=x,否则,令x2=x,转步骤第。如图2.15所示:,C语言控制结构应用举例,应该注意的是:当y=f(x)为0时,x就是方程的根。但是,f(x)是一个实数,在计算机中表示一个实数的精度有限,因此判断一个实数是否等于0时一般不用“f(x)=0”,而用“|f(x)|10-k”来代替f(x)是否为0的判断,如果f(x)满足这个条件,则x即为所求方程的根(近似根)。这个10-k称为精度,所以求高次方程的根应该给出精度要求。,例2-31用二分迭代法求方程2x3-4x2+3x-6=0在(-10,10)之间的根。,程序的运行结果为:root=2.000000。,割线法亦称为弦截法,设有一元高阶方程表示为:f(x)=0,则用割线法求高阶方程在某个单根区间的实根的步骤描述如下:输入所求区间的两个端点值即初值x1和x2,所取求根区间必须保证f(x1)*f(x2)0。连接f(x1)和f(x2)两点,连线交X轴于x0,x0的坐标方程为:若f(x0)与f(x1)同号,则根必在(x0,x2)区间内,此时将x0作为新的x1;反之则表示根在(x1,x0)之间,此时将x0作为新的x2。反复执行步骤和,直到所求根满足要求为止。,C语言控制结构应用举例,3割线法求解一元高阶方程,C语言控制结构应用举例,C语言控制结构应用举例,例2-32用割线法求方程2x3-4x2+3x-6=0在(-10,10)之间的根。,程序的运行结果为:root=2.000000,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!