第4章流程控制语句_第1页
第4章流程控制语句_第2页
第4章流程控制语句_第3页
第4章流程控制语句_第4页
第4章流程控制语句_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4.1程序设计概述

4.2流程控制语句4.3条件语句(if)4.4开关语句(case)4.5循环语句(while)4.6循环语句(for)4.7break/continue语句

第4章流程控制语句4.1.1程序设计程序设计的一般步骤如下:1)需求分析明确设计要求,根据设计要求进行需求分析,划分整个设计所包含的模块,明确各个模块需要实现的功能以及各个模块的接口。2)确定数据结构依据所需要处理的任务要求,规划输入的数据和输出的结果以及处理数据所需的中间数据,确定存放数据的数据结构。由于在C语言中数据结构集中体现在数据类型上,因此,在进行C语言程序设计时,应根据需要规划程序中所使用的变量、数组、指针以及它们的类型等。4.1程序设计概述3)确定算法算法是指为解决某一特定问题而采取的确定的有限的步骤。对同一个问题,可以有不同的算法。采用好的算法,相应的程序简洁、高效、易于实现、可读性强。4)编写程序

在模块划分完成、模块功能明确、数据结构和算法确定以后,进行编写程序。大型的程序一般在主函数main中包含程序的整体框架,用于实现程序的用户界面--用户程序的显示界面以及对输入命令按键的处理,根据不同的输入命令调用不同的功能模块。4.1程序设计概述5)程序调试程序开发人员编写的程序称为源程序或源代码,源代码(*.c)不能直接被计算机执行。源代码要经过编译程序编译,排除程序中的语法错误,生成目标程序(*.obj),然后链接库函数等的代码,生成可被计算机执行的可执行文件(*.EXE或*.COM文件)。可执行文件要经过调试,排除程序中的错误,使之能够实现设计要求的功能。最后还需进行科学、规范、严谨的测试。4.1程序设计概述6)编写技术文档程序调试测试完成后,还需要编写一系列的技术文档,如测试规范、设计技术报告、版本修改记录、用户使用说明等。

4.1程序设计概述4.1.2算法

程序的功能就是对给定的数据进行处理,并输出处理的结果。程序通常包括两方面的内容:对数据的描述和对加工的描述。对数据的描述称为“数据结构”,对加工的描述称为“算法”。广义地说,为解决某一个问题而采取的方法和步骤,就称为“算法”。不同的问题,有不同的方法和步骤;同一问题,也可能有不同的方法和步骤。4.1程序设计概述

衡量算法步骤的标准:

(1)结构:清晰、简洁。(2)算法:简单。(3)目标程序:运行速度快、目标代码小。例:计算1+2+3+4+5+…+99+100的值。算法1:+2=3,3+3=6,6+4=10,10+5=15,15+6=21,…,4851+99=4950,4950+100=5050算法2:(1+100)×100÷2=5050相对而言,算法2简洁明了、易算、运行速度快。

4.1程序设计概述算法的特征:

(1)有穷性。一个算法必须在它所涉及的每一种情形下,都能在执行有限次的操作之后结束。(2)确定性。算法的每一步,其顺序和内容都必须严格定义,而不能有任何的歧义。(3)有零个或多个输入。输入是算法实施前需要从外界取得的信息,有些算法需要有多个输入,而有些算法不需要输入,即零个输入。(4)有一个或多个输出。输出就是算法实施后得到的结果,显然,没有输出的算法是没有意义的。(5)可行性。算法的每一步都必须是可行的,也就是说,是能够由计算机执行的。4.1程序设计概述算法的描述:

1)用自然语言描述自然语言就是人们日常使用的语言,用自然语言表示算法,通俗易懂。但是,自然语言表示的含义往往不太严格,要根据上下文才能判断它的正确含义。另外,用自然语言描述分支和循环不很方便。因此,除对简单的问题使用以外,一般不用自然语言描述算法。4.1程序设计概述4.1程序设计概述如对上例中算法1的描述:定义整形变量s、i,分别存放累加的结果和从1逐项递增的项,首先给变量s和i赋初始值为0和1;之后将变量i的当前值累加到变量s中并使变量i在原值的基础上增加1;之后判断i的值如果小于等于1000,重复将变量i的当前值累加到变量s中并使变量i在原值的基础上增加1构成一个循环,而当i的值不小于等于1000时,循环结束,这时,变量s的值就是要求的计算结果。步骤1:0=>s;步骤2:1=>i;步骤3:s+i=>s;步骤4:i+1=>i;步骤5:如果i≤1000,转到步骤3,否则结束。

2)用流程图描述传统的流程图由下图所示的几种基本元素组成。用流程图描述算法,形象直观,简单方便。4.1程序设计概述4.1程序设计概述4.1.3结构化程序设计

结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。结构化程序设计的基本思路是,把一个复杂问题的解决过程分模块分阶段进行,每一个模块每一个阶段处理的问题都控制在人们容易理解和处理的范围内。具体一点来说,就是在分析问题时采用“自顶向下,逐步细化”的方法;设计解决方案时采用“模块化设计”方法;编写程序时采用“结构化设计”方法,一般在主函数main中包含程序的整体框架,用于实现程序的用户界面--用户程序的显示界面以及对输入命令按键的处理,根据不同的输入命令调用不同的功能模块。4.1程序设计概述结构化程序三种基本结构:

结构化程序由三种基本结构组成:顺序结构、选择结构和循环结构。已经证明,这三种基本结构组成的算法可以解决任何复杂的问题。使用这三种基本结构编写的程序,称为结构化程序。 顺序结构:顺序结构程序中的语句按先后顺序逐条执行。选择结构:在执行程序中的选择结构语句时,该语句的执行将根据不同的条件执行不同分支的语句。循环结构:执行程序中的循环结构语句时,该语句将根据各自的条件,对循环结构所限定的语句(即循环体)重复执行多次或零次。实现选择与循环的语句统称为流程控制语句。4.1程序设计概述4.2流程控制语句

程序由一系列的语句组成,每个语句由分号(;)结束,有些语句是顺序执行的,即前面的语句执行完后依次执行下一条语句,流程控制语句用于改变程序的执行顺序。顺序执行语句有:表达式语句:程序中最基本的语句。空语句:仅由一个分号组成,空语句不执行任何操作。函数调用语句:函数名、小括号、实参表加分号组成。复合语句:由大括号{}括下来的一组语句,可以包含变量说明语句。4.2流程控制语句流程控制语句有:①条件语句:if-else语句②开关语句:switch语句③当循环语句:while语句④直到循环语句:do-while语句⑤计数循环语句:for语句⑥中止本次循环语句:continue语句⑦中止整个循环语句:break语句⑧函数返回语句:return语句⑨无条件转移语句:goto语句4.3.1单分支if语句

格式:

if(条件表达式)语句;

功能:

先计算条件表达式的值,如果条件表达式的值为真(值为非0),执行语句(选择体),如果为假(值为0)不执行语句。这里的语句可以是一条语句,也可以是空语句和复合语句(以下相同)。

4.3条件语句if例1:(1)如果x>0,输出x。if(x>0)printf(″x=%f″,x);(2)如果a等于b,输出″a=b″。if(a==b)printf(″%s″,″a=b″);例2:如果x>0,求x的平方根。将结果放入变量y中;输出x的平方根。

if(x>0)

{y=sqrt(x);

printf(″平方根=%f″,y);}4.3条件语句if例3计算的值。提示:当x等于1函数无定义。#include"stdio.h"main(){ floatx; floaty; printf(″请输入x:″); scanf(″%f″,&x); if(x!=1) { y=(x+1)/(x-1); printf(″x=%6.2f,y=%6.2f\n″,x,y);}}/*输入数据:1.2,运行结果:x=1.20,y=11.00*/4.3条件语句if4.3.2双分支if语句

格式:

if(条件表达式)语句1;else语句2;功能:

先计算条件表达式的值,如果条件表达式的值为真(值为非0),执行语句1(选择体1),如果条件表达式的值为假(值为0)执行语句2(选择体2)。4.3条件语句if例4:

(1)如果x>0,输出x大于0,否则输出x小于等于0。if(x>0)printf(″x大于0″);elseprintf(″x小于等于0″);(2)如果a等于b,输出a等于b,否则输出a不等于b。if(a==b)printf(″a等于b″);elseprintf(“a不等于b″);4.3条件语句if(3)求两个数x、y的最大值max。if(x>y)max=x;elsemax=y;(4)判断整数i的奇偶性。if(i%2==0)printf(″偶数\n″);elseprintf(″奇数\n″);4.3条件语句if双分支if语句可采用条件运算等价实现,从而以表达式的形式参与运算。例如,上例中三个双分支if语句用条件运算描述:①(x>0)?printf(″x大于0″):printf(″x小于等于0″)②(a==b)?printf(″a等于b″):printf(″a不等于b″)③(x>y)?max=x:max=y4.3条件语句if例5计算#include"stdio.h"main(){ floatx; floaty; printf(″请输入x:″); scanf(″%f″,&x); if(x>1)y=x+1; else y=x-1; printf(″x=%6.2f,y=%6.2f\n″,x,y);}/*输入数据:1.2,运行结果:x=1.20,y=2.20*/4.3条件语句if例6

输入两个数,求两个数的最大值、最小值。数据分析:输入量:两个数x、y,float输出量:最大值max、最小值min,float算法分析:①输入两个数x、y②比较两个数x、y大小如果x>y,max=x,min=y如果x<y,max=y,min=x③输出最大值max、最小值min4.3条件语句if/*程序例6,求两个数的最大值、最小值*/#include"stdio.h"main(){ floatx,y; floatmax,min; printf(″请输入两个数x,y:″); scanf(″%f,%f″,&x,&y); if(x>y){ max=x; min=y; } else { max=y; min=x;} printf(″max=%6.2f,min=%6.2f\n″,max,min);}输入数据:1.2,2.54,运行结果:max=2.54,min=1.204.3条件语句if4.3.3多分支if语句形式:if(条件表达式1) 语句1elseif(条件表达式2)语句2 ……elseif(条件表达式n)语句nelse语句n+1功能:从上到下逐个对表达式进行判断,如果发现有某个表达式成立就执行相应的语句,并跳过之后的表达式判断与语句;如果所有的条件均不满足,则执行最后else后的语句,该语句是可选项。4.3条件语句if例7计算#include"stdio.h"main(){ floatx,y; printf(″请输入x:″); scanf(″%f″,&x); if(x<0)y=-1; elseif(x=0)y=0; elsey=1; printf(″x=%8.4f,y=%5.2f\n″,x,y);}/*输入数据:12.345,运行结果:x=12.3450,y=1.00*/4.3条件语句if例8将百分制成绩转成五级记分(A、B、C、D、E)。#include"stdio.h"main(){intcj;printf("inputscoreplease:");scanf("%d",&cj);if(cj>100||cj<0)printf("scoreerror");elseif(cj>=90)printf("scoreis%dgradeA",cj);elseif(cj>=80)printf("scoreis%dgradeB",cj);elseif(cj>=70)printf("scoreis%dgradeC",cj);elseif(cj>=60)printf("scoreis%dgradeD",cj);elseprintf("scoreis%dgradeE",cj);getch();}4.3条件语句if

说明:(1)条件语句可以嵌套使用,这时else子句总是与最近的if配套,可以通过加花括号改变else与if的配套关系。(3)多分支if语句可用多条单分支、双分支if语句等价实现。但是多分支if语句的执行时间通常小于多条单分支语句。(4)不管选择体多么复杂,包含多少条语句,if语句在逻辑上是一条语句(后面的switch语句、循环语句均是逻辑上的一条语句)。

4.3条件语句if

例9:Intx,y;If(x>10||x<-10)If(y<=100&&y>x) printf(“yes”);else printf(“no”);else语句与最近的if语句匹配,即与If(y<=100&&y>x)匹配。4.3条件语句if

Intx,y;If(x>10||x<-10){If(y<=100&&y>x) printf(“yes”);}else printf(“no”);若要使else与If(x>10||x<-10)匹配,必须像上面一样用{}改变运算顺序。例10:①例7用单分支if语句处理:if(x<0)y=-1;if(x=0)y=0;if(x>0)y=1;②例9用单分支if语句处理:if(cj>=90)ch=′A′;if(cj>=80&&cj<90)ch=′B′;if(cj>=70&&cj<80)ch=′C′;if(cj>=60&&cj<70)ch=′D′;if(cj<60)ch=′E′;4.3条件语句if4.4开关语句switch

switch语句称为开关语句,用于多分支选择的一种特殊情况的处理,即每个分支通过一个表达式取不同的值来描述。格式:switch(选择表达式){case常量1: 语句1case常量2: 语句2 …… case常量n: 语句n default: 语句n+1 }功能:计算选择表达式的值,当表达式的值与某一个case后面的常量相等、相匹配时,就执行此case后面的处理语句。执行完一个case后面的语句后,流程控制转移到下一个case处继续执行,所以每个case后的语句的最后为break语句,中止后面case语句的执行。若所有case中的常量都不与选择表达式的值相匹配,就执行default后面的语句。注:

(1)选择表达式可以是任何表达式,一般为整型、字符型、枚举型表达式。(2)选择表达式必须用小括号括起。4.4开关语句switch(3)case后可以是常量表达式,每一个case后的值必须互不相同,否则会出现二义性。(4)一种情况处理完后,一般应使程序的执行流程跳出switch结构,终止switch语句的执行,这可借助break语句完成,最后一种情况处理中可以不加break语句。(5)在上述switch语句的一般使用形式下,case出现的次序不影响执行结果。(6)当多个常量代表一种情况时,出现在前面case中的情况处理无语句,这实际上也是多个case共用一组执行语句。(7)可以没有default子句。(8)switch语句描述的是多分支选择的一种特殊情况,可用if语句等价实现。4.4开关语句switch例11.将百分制成绩转成五级记分(A、B、C、D、E)。#include"stdio.h"main(){intcj;charch;printf("inputcj=");scanf("%d",&cj);switch((int)(cj/10)){case10:case9:ch='A';break;case8:ch='B';break;case7:ch='C';break;case6:ch='D';break;default:ch='E';break;}printf("grade%c",ch);getch();}4.4开关语句switch4.5循环语句(while)4.5.1while语句格式:

while(条件表达式)语句功能:当条件表达式为真时,重复执行后面的语句(循环体),当条件表达式为假时,退出循环。注:(1)while语句是先判断后执行。如果循环的条件一开始不成立(条件表达式为假),则循环一次都不执行。(2)循环体中必须有改变循环条件的语句,否则循环不能终止,形成无限循环。(3)循环体为多条语句时,必须采用复合语句。(4)当循环条件为永真条件时,将变成无限循环。可以利用break语句终止循环的执行。例12求一些正数的和。#include"stdio.h"main(){floatx,sum=0;/*x存放当前输入的数,s存放和,初值为0*/printf("inputx=");/*输入第一个数*/scanf("%f",&x);/*输入第一个数*/while(x>0) /*判断循环的条件是否满足*/{sum+=x;/*累加*/scanf("%f",&x);/*x中输入下一个数*/}printf("和=%6.2f",sum);/*输出所求一些数的和*/getch();}

/*输入数据:4.40(0作为结束标志),运行结果:和=11.00*/4.5循环语句(while)例13计算1+2+3+…+100。#include"stdio.h"main(){inti=1,sum=0;/*i存放项,初值为1,sum存放和,初值为0*/while(i<=100)/*判断循环的条件是否满足*/{ sum+=i;/*当i<=100,累加项值,存放在sum*/ i++; /*项值i加1,去判断循环的条件是否满足*/}printf(″1+2+3+…+100=%d″,sum);/*输出所求和*/}/*运行结果:1+2+3+…+100=5050*/4.5循环语句(while)例14计算1*2*3*…*100,即100!。#include"stdio.h"main(){inti=1;doublem=1;while(i<=100){ m*=i; i++;}printf(″100!=%f″,m);}运行结果:1*2*3*…*100=9.33262154439441022e+1574.5循环语句(while)4.5.2do-while语句

while语句是先判断后执行循环体语句,do-while语句是while语句的倒装形式,与while语句不同的是,do-while语句是先执行循环体语句再判断。格式:do语句while(条件表达式)功能:先执行循环体,再计算条件表达式的值。当条件表达式的值为真时,代表循环的条件成立,继续执行循环。当条件表达式的值为假,代表循环的条件不成立,退出循环。do-while语句是反复执行循环,直到循环的条件不成立。4.5循环语句(while)注:

(1)do-while语句是先执行,后判断。如果循环的条件一开始就不成立,循环也将执行一次。(2)与while语句一样,循环体中同样必须有改变循环条件的语句,否则循环不能终止,形成无限循环。(3)循环体为多条语句时必须采用复合语句。(4)当循环条件为永真条件时,将变成无限循环。可利用break语句终止循环的执行。4.5循环语句(while)例15求一些正数的和。#include"stdio.h"main(){floatx,sum=0;do{ scanf(″%f″,&x); sum+=x;}while(x>0);sum=sum—x;/*x最后一个值作为一些数的终止条件应从和中去掉*/printf(″和=%6.2″,sum);}4.5循环语句(while)例16计算1+2+3+…+100。#include"stdio.h"main(){inti=1,sum=0;do{sum+=i;i++;}while(i<=100);printf(″1+2+3+…+100=%d″,sum);}4.5循环语句(while)例17计算1*2*3*…*100。#include"stdio.h"main(){inti=1;doublem=1;do{ m*=i; i++;}while(i<=100);printf(″100!=%f″,m);}4.5循环语句(while)4.6for语句格式:

for(表达式1;表达式2;表达式3)语句表达式1为循环的初值表达式,表达式2为循环的条件表达式,表达式3为改变循环条件的表达式。循环执行的次数隐含于循环中。功能:

计算表达式1,循环控制变量得到初值。计算表达式2,如果表达式2为真,代表循环的条件成立,执行循环。如果表达式2的值为假,代表循环的条件不成立,也就是终止循环的条件成立,退出循环,执行循环的下一条语句。计算表达式3,改变循环条件,回第(2)步。例如:for(k=10;k<20;k++)printf(″k=%d\n″,k);表达式1为k=10,表达式2为k<20,表达式3为k++。①计算表达式1,k得到初值10。②计算表达式2,k<20为真,执行第一次循环,输出:k=10。③计算表达式3,k的值变为11。④计算表达式2,k<20为真,执行第二次循环,输出:k=11。⑤计算表达式3,k的值变为12。⑥计算表达式2,k<20为真,执行第三次循环,输出:k=12。⑦计算表达式3,k的值变为13。……最后:①k的值变为19,执行第20次循环,输出:k=19。②计算表达式3,k的值变为20。③计算表达式2,k<20为假,终止整个循环的执行,退出循环。4.6for语句例18计算1+2+3+…+100及1*2*3*…*100值。#include"stdio.h"main(){inti;/*循环控制变量*/ints;floatm;/*和s,积m*/s=0;m=1;for(i=1;i<=100;i++){ s+=i; m*=i;}printf(″1+2+3+…+100=%d\n″,s);printf(″100!=%f\n″,m);}4.6for语句注:

(1)循环体为多条语句时,也必须采用复合语句描述。(2)表达式1可省略,分号不能省。此时应在循环外给循环赋初值,执行循环时,将跳过第一步。如:for(;i<=100;i++)sum+=i;(3)如果表达式2省略(分号不能省),则不判断循环条件,相当循环条件永真,形成无限循环。如:for(i=1;;i++)sum+=i;(4)表达式3也可省略,分号也不能省,此时循环体中应有改变循环条件的语句。如: for(i=1;i<=100;){sum+=i;i++;}4.6for语句(5)当缺省表达式1、表达式2、表达式3中的一个、两个或全部,或当采用逗号表达式时,可产生for语句的多种变化形式。例如:①for(;;)语句;形成无限循环;②for(;表达式2;)语句;相当于while循环;③for(sum=0,i=1;i<=100;i++)sum+=i;累加器清0嵌入初值表达式1中;④for(sum=0;i<=100;sum+=i,i++);将原循环体嵌进表达式3中;4.6for语句(6)for语句最简单的应用形式是通过一个循环控制变量来控制循环,类似于其它语言中的for语句。例如:①for(i=1;i<=1000;i++)printf(″%4d\n″,i);②for(ch=′a′;ch<=′z′;ch++)printf(″%4c\n″,ch);(7)for语句中三个表达式必须用分号分隔。(8)for语句同while语句,也是先判断,后执行。4.6for语句例19求100个数的最大值。#include"stdio.h"main(){ floatx;/*存放当前输入数*/ inti;/*循环控制变量*/ floatmax;/*最大值*/ printf(″输入第1个数:″); scanf(″%f″,&x); max=x;/*最大值初始化*/ for(i=2;i<=100;i++) { printf(″输入第%d个数:″,i); scanf(″%f″,&x); if(x>max)max=x;/*将当前数与最大值进行比较*/ } printf(″最大值=%f\n″,max);}4.6for语句例20判断素数main(){intn,i,p;printf(″请输入要判断的正整数n:″);scanf(″%d″,&n);p=1;for(i=2;i<n;i++)if(n%i==0)p=0;if(p==1)printf(″%d是素数″,n);elseprintf(″%d不是素数″,n);}/*输入数据:7,运行结果:7是素数*/4.6for语句4.7.1.continue语句格式:continue;功能:

终止本次循环的执行,即跳过当前这次循环中continue语句后尚未执行的语句,接着进行下一次循环条件的判断。

说明:

continue语句往往与if语句联用。

4.7break/continue语句例21求10个正整数之和。main(){inti,n;ints=0;for(i=1;i<=10;i++){scanf(″%d″,&n);if(n<0)continue;s+=n;}printf(″和=%4d″,s);}4.7break/continue语句4.7.2.break语句格式:break;功能:break语句通常用于switch语句和循环语句中,用于终止switch语句和循环的执行。

4.7break/continue语句4.7.3goto语句格式:

goto语句标号;

功能:

将程序的执行流程无条件转移至语句标号所标识的位置语句处执行。说明:

(1)C语言的语句标号用标识符表示,它仅仅表示goto语句转移的目标地址,带有标号的语句称为标号语句,标号与语句之间用冒号分隔,如addr1:s++;。(2)goto语句往往与if语句配套使用构成一种远距离的转移。4.7break/continue语句(3)if语句加goto语句还可构成循环。例如:x=0;s=0; s=0;flag:if(x<10)for(x=0;x<10;x++)

{x++;s=s+x;s=s+x;gotoflag;}(4)不允许使用goto语句把程序控制转移到其它函数内部,不允许使用goto语句把程序控制转向数据说明语句。(5)尽量少使用goto语句。4.7break/continue语句例22判断n是否为素数。#include"stdio.h"main(){intn,I,p;printf(″请输入要判断的数:″);scanf(″%d″,&n);p=1;for(i=2;i<=n/2;i++)if(n%i==0){p=0;break;}if(p==1)printf(″%d是素数″,n);elseprintf(″%d非素数″,n);}4.7break/continue语句多重循环例23计算1!+2!+3!+…+100!。#include"stdio.h"main(){inti,jdoublet,s;s=0;for(i=1;i<=100,i++)/*求和*/{ t=1; for(j=1;j<=i;j++)/*求阶乘*/ t*=j; s+=t;}printf(″1!+2!+3!+…+100!=%f″,s);}上面两重循环问题可以单重循环实现,执行效率大为提高。例23-1计算1!+2!+3!+…+100!。#include"stdio.h"main(){inti,j;doublet,s;t=1;s=1;for(i=2;i<=100,i++){t*=i;s+=t;}printf(″1!+2!+3!+…+100!=%f″,s);}多重循环例24求两个整数的最大公约数。#include"stdio.h"main(){intm,n,r;/*余数*/printf(″请输入两个整数m,n:″);scanf(″%d,%d″,&m,&n);r=m%n;while(r!=0) {m=n; n=r: r=m%n;}printf(″最大公约数=%d″,n);}流程控制语句应用例25求2~n之间的所有素数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论