《程序设计基础》课件第3章_第1页
《程序设计基础》课件第3章_第2页
《程序设计基础》课件第3章_第3页
《程序设计基础》课件第3章_第4页
《程序设计基础》课件第3章_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

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

文档简介

第3章顺序结构程序设计3.1C语句概述3.2数据的输入与输出3.3编译预处理命令3.4函数简介3.5顺序结构程序设计举例习题

3.1C语句概述

3.1.1C程序基本结构

C语言的语句用来向计算机系统发出操作指令。一个语句经过编译后产生若干条机器指令。实际程序包含若干条语句。语句都是用来完成一定操作任务的。函数包含声明部分和执行部分。声明部分的内容不应当称为语句;执行部分由语句组成。

C程序结构:一个C程序可以由若干个源程序文件组成;一个源文件可以由若干个函数和预处理命令以及全局变量声明部分组成;一个函数由数据定义部分和执行语句组成。程序包括数据描述(由声明部分来实现)和数据操作(由语句来实现)。数据描述主要定义数据结构(用数据类型表示)和数据初值;数据操作的任务是对已提供的数据进行加工。

3.1.2C语句分类

C语言中的语句主要有控制语句、表达式语句和复合语句。

1.控制语句

完成一定功能的语句称为控制语句。C语言有9种控制语句,如表3-1所示。表3-1C语言的控制语句注:()表示其中是一个条件,~表示内嵌的语句。

2.表达式语句

由一个表达式构成的一个语句,称为表达式语句。表达式语句由表达式加上分号“;”组成,一般形式为:

表达式;

表达式语句可分为赋值语句、函数调用语句、空语句三种基本类型。

1)赋值语句

赋值语句由赋值表达式后跟一个分号组成。

例如:a=3;是一个赋值语句。

2)函数调用语句

函数调用语句由函数调用表达式后跟一个分号组成。

例如:printf("ThisisaCstatement.");是由标准输出函数printf构成的函数调用语句。

3)空语句

空语句是只有一个分号而没有表达式的语句,其形式为:

;

它不产生任何操作运算,只用为形式上的语句,被填充到控制结构中。

3.复合语句

C语言中还包括一些其他语句,如复合语句等。

把多个语句用花括号{}括起来组成的语句称复合语句。在程序中可以把复合语句看成是一条语句,而不是多条语句。例如:

{x=y+z;

a=b+c;

printf("%d%d",x,a);

}

是一条复合语句。复合语句内的各条语句都必须以分号“;”结尾,在括号“}”外不能加分号。注意,在C语言的语法中,只要出现语句的地方均可以出现复合语句。

4.函数调用语句

函数调用语句是由一次函数调用加一个分号构成的语句,其一般形式为:

函数名(实际参数表);

执行函数调用语句就是调用函数体,并将实际参数赋予函数定义中的形式参数,然后执行被调用函数体中的语句。3.1.3C结构化程序设计

结构化程序由三种基本结构组成:顺序结构、选择结构和循环结构。

1.顺序结构

顺序结构是最简单的基本结构。在顺序结构中,要求顺序地执行且必须执行顺序排列的每一个最基本的处理单位,如图3-1所示。图3-1(a)所示是用传统流程图表示的顺序结构,图3-1(b)所示是用N-S结构图表示的顺序结构,先执行处理A,然后再顺序执行处理B。图3-1顺序结构程序流程图

2.选择结构

在选择结构中,要根据逻辑条件的成立与否,分别选择执行不同的处理。如图3-2所示,当逻辑条件成立时,执行处理A,否则执行处理B。图3-2选择结构程序流程图

3.循环结构

循环结构一般分为当型循环和直到型循环。

1)当型循环

在当型循结构中,当逻辑条件成立时,就反复执行处理A(称为循环体),直到逻辑条件不成立时结束,如图3-3所示。图3-3当型循环程序流程图

2)直到型循环

在直到型循环结构中,反复执行处理A,直到逻辑条件成立结束(即逻辑条件不成立时继续执行),如图3-4所示。图3-4直到型循环流程图 3.2数据的输入与输出

3.2.1printf函数

与其他高级语言不同的是,C语言没有提供专门的输入/输出语句,所有的输入/输出都是通过调用标准库函数中的输入/输出函数来实现的。这里介绍向标准输出设备输出数据的printf函数。

printf函数称为格式输出函数,其功能是按用户指定的格式,把指定的数据输出到标准输出设备上。

1.printf函数的一般形式

printf函数是一个标准库函数,它的函数原型包含在标准输入输出头文件“stdio.h”中,printf函数的一般形式为:

printf("格式控制",输出列表);

如:

printf("hello");

printf("Theareais:%f",area);

2.转义字符的使用

C语言中允许使用一种特殊形式的字符常量,是以一个“\”开头的字符序列,称为转义字符。常用的转义字符参见表3-2。表3-2转义字符/*源程序3-1*/

main()

{chara,b,c;

a='n';

b='e';

c='\167'; /*八进制数167代表的字符w*/

printf("%c%c%c\n",a,b,c);/*以字符格式输出*/

printf("%c\t%c\t%c\n",a,b,c);/*每输出一个字符跳到下一输出区*/

printf("%c\n%c\n%c\n",a,b,c);/*每输出一个字符后换行*/

}程序运行结果为:

3.printf函数的调用

printf函数是格式输出函数,其功能是按照指定的格式来控制输出参数在标准输出设备上输出。格式控制用于指定输出参数的输出格式。格式控制由两部分组成:格式说明和普通字符。普通字符(包括转义字符)将被简单地复制显示(或执行)。一个格式说明项将引起输出参数项的转换与显示。

例如:

/*源程序3-2*/

main()

{inta=3,b=4;

printf("a=%d□b=%d\n",a,b);

}

在上面printf语句中,“%d”是格式说明(格式说明总是以“%”开头);“a=”、“□”、“b=”为普通字符,按原样输出;“\n”为转义字符,即Enter(换行),使下次输出在下一行的开始处。上例的输出结果为:

a=3□b=4

/*源程序3-3*/

main()

{charch1='a',ch2='b';

printf("ch1=%c,ch2=%c\n",ch1,ch2);

printf("ch1=%d,ch2=%d\n",ch1,ch2);

}

程序运行结果如下:

4.格式字符串

printf函数的格式字符串一般形式如下:

(1)格式字符:格式字符用来表示输出数据的类型,在格式控制字符串中不能省略,其常用符号和含义参见表3-3。表3-3printf格式字符

(2)标志字符:标志字符包括 -、+、# 三种,具体含义参见表3-4。表3-4printf标志字符例如,以下语句输出6位十进制整数:

printf("%6d\n",111);

printf("%-6d\n",111);

输出结果为:

□□□111(输出右对齐,左边填空格)

111□□□(输出左对齐,右边填空格)

例如,语句:

printf("%+d,%+d\n",111,-111);

输出结果为:

+111,-111输出八进制或十六进制时,可以使用以下形式:

printf("%#o,%#x\n",10,16);

输出结果为:

012,0x10

(3)宽度指标符:用来设置输出数据项的最小宽度,通常用十进制整数来表示输出的位数。如果输出数据项所需实际位数多于指定宽度,则按实际位数输出;如果实际位数少于指定的宽度,则用空格填补。宽度指示符示例如表3-5所示。表3-5宽度指示符示例

(4)精度指示符:以“.”开头,用十进制整数指精度。对于float或double类型的浮点数可以用“m.n”的形式在指定宽度的同时来指定其精度。其中,“m”用以指定输出数据所占总的宽度;“n”称为精度。精度指示符示例如表3-6所示。表3-6精度指示符示例

(5)长度修正符:常用的长度修改符有h和l两种。h表示输出项按短整型输出;l表示输出项按长整型输出。

/*源程序3-4*/

main()

{intnum1=123;

longnum2=1234567;

floatreal=123.4567;

printf("%d,%6d,%-6d,%2d\n",num1,num1,num1,num1);

printf("%ld,%8ld,%4ld\n",num2,num2,num2);

printf("%f,%10f,%10.2f,%-10.2f\n",real,real,real,real);

printf("%s,%10.5s,%-10.5s\n","student","student",

"student");

}程序运行结果如下:3.2.2scanf函数

scanf函数是一个标准输入函数。与printf函数一样,scanf函数原型也包含在标准输入/输出头文件“stdio.h”中。

1.scanf函数的一般形式

scanf函数的一般形式为:

scanf(格式控制,地址列表);

其中,格式控制的使用与printf函数相同,不能显示非格式字符串,即不能显示提示字符串,但允许非格式字符作为分隔符。地址表列中给出各变量的地址。地址由取地址运算符“&”后跟变量名组成。

/*源程序3-5*/

main()

{

inta,b,c;

scanf("%d%d%d",&a,&b,&c);

printf("%d,%d,%d\n",a,b,c);

}

运行时按以下方式输入a、b、c的值:

2.scanf函数的格式控制

scanf函数格式控制的一般形式如下:

(1)格式字符:表示输入数据的类型,其字符和含义如表3-7所示。表3-7scanf格式字符

(2)赋值抑制符“*”:表示该输入项读入后不赋予相应的变量,即跳过该输入值。例如:

scanf("%d%*d%d",&x,&y);

输入10□12□15后,把10赋予变量x,12被跳过,15赋予变量y。

(3)宽度指示符:用十进制整数指定输入数据的宽度。例如:

scanf("5d",&x);输入数据“661020”,把前五位数66102赋予变量x,其余部分被截去。又如:

scanf("%4d%4d",&x,&y);

输入数据“661020”,把前四位数6610赋予变量x,而把剩下2位数20赋予变量y。

(4)长度修正符:长度修正符分为l和h两种。l用于输入长整型数据等;h用于输入短整型数据。

3.使用scanf函数注意事项

使用scanf函数应注意以下几点:

(1) scanf函数中的“格式控制”后面应当是变量地址,而不应是变量名。例如,如果a,b为整型变量,则

scanf("%d,%d",a,b);

是不对的,应将“a,b”改为“&a,&b”。

(2) scanf函数没有计算功能,因此输入的数据只能是常量,而不能是表达式。

(3)在输入多个整型数据或实型数据时,可以用一个或若干个空格、Enter键或制表符(Tab)作为间隔。但在输入多个字符型数据时,数据之间分隔符认为是有效字符。例如:

scanf("%c%c%c",&c1,&c2,&c3);

如果输入

a□b□c<Enter>

则字符 'a' 赋予变量c1,字符 '□' 赋予变量c2,字符 'b' 赋予变量c3。因为%c只要求读入一个字符,后面需要用空格作为两个字符的间隔,因此 '□' 作为下一个字符赋予变量c2。

(4)输入格式中,除格式说明符之外的普通字符应原样输入。例如:

scanf("x=%d,y=%d,z=%d",&x,&y,&z);

应使用以下形式输入:

x=12,y=34,z=56<Enter>

(5)输入实型数据时,不能规定精度,即没有“%m.n”的输入格式。例如:

scanf("%7.2f",&f);

这种输入格式是不合法的,不能企图用这样的scanf函数并输入以下数据而使f的值为12345.67:

1234567<Enter>

(6)在输入数据时,如果遇到以下情况,则认为是该数据输入结束:

①遇到空格符、换行符或制表符(Tab)。例如:

scanf("%d%d%d%d",&i,&j,&k,&m);

如果输入

1□2<Tab>3<Enter>4<Enter>

则i、j、k、m变量的值分别为1、2、3、4。

②遇到给定的宽度结束。例如:

scanf("%2d",&i);

如果输入

1234567<Enter>

则i变量的值为12。③遇到非法字符输入,例如:

scanf("%d%c%f",&i,&c1,&f1);

如果输入

123x23o.4567

系统自左向右扫描输入的信息。由于x字符不是十进制中的合法字符,因而第一个数i到此结束,即i=123;第二个数c1='x';系统继续扫描后面的o(英文字母o,而非数字0),它不是实数中的有效字符,因而第三个数到结束,即f1=23.0。3.2.3其他输入/输出函数

1.getchar函数

getchar函数的功能是从键盘输入一个字符。该函数没有参数。getchar函数也是一个标准的输入/输出库函数,它的原型在“stdio.h”头文件中被定义。因此,使用时用户应该在程序的开始加入以下编译预处理命令:

#include"stdio.h"

getchar函数的一般形式为:

c=getchar();

执行下面的调用时,变量c将得到用户从键盘输入的一个字符值,这里的c可以是字符型或整型变量。

/*源程序3-6*/

#include"stdio.h"

main()

{

charc;

c=getchar(); /*接收用户从键盘上输入的一个字符*/

putchar(c); /*输出字符型变量c的值*/

}程序运行结果如下:

说明:

(1) getchar函数只能用于单个字符的输入,且一次只能输入一个字符;

(2) getchar函数在使用时,必须在程序的开头加上编译预处理命令#include''stdio.h''。

2.putchar函数

putchar函数的功能是将一个字符输出到显示器上显示。putchar函数也是一个标准的输入/输出库函数,它的原型在“stdio.h”头文件中被定义,因此,使用时用户应该在程序的开始加入以下编译预处理命令:

#include"stdio.h"

putchar函数的一般调用形式为:

putchar(c)

即把变量c的值输出到显示器上,这里的c可以是字符型或整型变量,也可以是一个转义字符。

/*源程序3-7*/

#include"stdio.h"

main()

{

chara,b,c,d;

a='g';

b='o';

c=111;

d='d';

putchar(a);

putchar(b);

putchar(c);

putchar(d);

}程序运行结果如下:

说明:

(1) putchar函数只能用于单个字符的输出,并且一次只能输出一个字符;

(2) putchar函数在使用时,必须在程序的开头加上编译预处理命令 #include''stdio.h''。

3.gets函数

gets函数的功能是接收从键盘输入的一个字符串,存放在字符数组中。函数的返回值是字符数组的起始地址。gets函数也是一个标准的输入/输出库函数,它的原型在“stdio.h”头文件中被定义,因此,使用时用户应该在程序的开始加入以下以编译预处理命令:

#include"stdio.h"

gets函数的一般形式为:

gets(str);从键盘输入:

computer<Enter>

将输入的字符串"computer"送给字符数组str,函数值为字符数组str的起始地址。一般利用gets函数的目的是向字符数据输入一个字符串,而不大关心其函数值。

4.puts函数

puts函数的功能是将字符数组中存放的字符串输出到显示器上。该函数没有返回值。puts函数也是一个标准的输入/输出库函数,它的原型在“stdio.h”头文件中被定义,因此,使用时用户应该在程序的开始处加入以下编译预处理命令:

#include"stdio.h"

puts函数的一般形式为:

puts(str);例如,假设已经定义str是一个字符数组名,且该数组已被初始化为 "china"。则执行

puts(str);

其结果是在显示器上输出china。puts函数输出的字符串中也可以包含转义字符,例如,

puts("china\nbeijing");

输出结果为:

china

beijing

3.3编译预处理命令

3.3.1宏定义

程序设计语言预处理指在编译之前进行的处理。预处理命令以符号“#”开头。

C语言的预处理主要有三个方面的内容:宏定义、文件包含和条件编译。

1.不带参数的宏定义

宏定义又称为宏代换、宏替换,简称“宏”。不带参数的宏定义格式如下:

#define标识符字符串其中的标识符就是所谓的符号常量,也称为“宏名”。

预处理(预编译)工作也叫做宏展开:将宏名替换为字符串。

掌握“宏”概念的关键是“换”。一切以换为前提、做任何事情之前先要“换”,准确理解之前就要“换”。即在对相关命令或语句的含义和功能作具体分析之前都要换,例如:

#definePI3.1415926

把程序中出现的PI全部换成3.1415926说明:

(1)宏名一般用大写。

(2)使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和使程序便于修改。例如数组大小常用宏定义。

(3)预处理是在编译之前的处理,而编译工作的任务之一是语法检查,但对预处理不做语法检查。

(4)宏定义末尾不加分号。

(5)宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头。

(6)可以用 #undef命令终止宏定义的作用域。

(7)宏定义可以嵌套。

(8)字符串("")中永远不包含宏。

(9)宏定义不分配内存;变量定义分配内存。

2.带参数的宏定义

对于带参数的宏,除了一般的字符串替换,还要做参数代换。带参数的宏定义格式如下:

#define宏名(参数表)字符串

例如:

#defineS(a,b)a*b

area=S(3,2);第一步被换为area=a*b;,第二步被换为area=3*2;

带参数的宏类似于函数调用,有一个虚实结合的过程。

说明:

(1)实参如果是表达式则容易出问题。例如:

#defineS(r)r*r

area=S(a+b);

第一步换为area=r*r;,第二步被换为area=a+b*a+b;

而正确的宏定义是

#defineS(r)(r)*(r)。

(2)宏名和参数的括号间不能有空格。

(3)宏替换只作替换,不做计算,不做表达式求解。

(4)函数调用在编译后程序运行时进行,并且分配内存;宏替换在编译前进行,不分配内存。

(5)函数只有一个返回值;利用宏则可以设法得到多个值。

(6)宏展开使源程序变长;函数调用不会。

(7)宏展开不占运行时间,只占编译时间;函数调用占运行时间(分配内存、保留现场、值传递、返回值)。3.2.2文件包含

文件包含指一个文件包含另一个文件的内容,其格式如下;

#include"文件名"

#include<文件名>

编译时以包含处理以后的文件为编译单位,被包含的文件是源文件的一部分。

编译以后只得到一个目标文件.obj。被包含的文件又被称为“标题文件”或“头部文件”、“头文件”。头文件常用 .h作扩展名。

修改头文件后,所有包含该文件的文件都要重新编译。

头文件的内容除了函数原型和宏定义外,还可以有结构体定义和全局变量定义等。

说明:

(1)一个 #include命令指定一个头文件;

(2)文件1包含文件2,文件2用到文件3,则文件3的包含命令#include应放在文件1的头部第一行;

(3)包含可以嵌套;

(4)使用<文件名>为标准方式,系统到头文件目录查找文件;使用"文件名",则先在当前目录查找,而后到头文件目录查找;

(5)被包含文件中的静态全局变量不用在包含文件中声明。

3.2.3条件编译

有些语句行希望在条件满足时才编译,这就要用到条件编译。条件编译有以下3种格式:格式1:

#ifdef标识符

程序段1

#else

程序段2

#endif

#ifdef

程序段1

#endif当标识符已经定义时,程序段1才参加编译。

格式2:

#ifndef标识符

格式3:

#if表达式1

程序段1

#else

程序段2

#endif当表达式1成立时,编译程序段1;当表达式1不成立时,编译程序段2。

使用条件编译可以使目标程序变小,运行时间变短。

预编译使问题或算法的解决方案增多,有助于选择合适的解决方案。

此外,编译预处理命令还有布局控制:#progma,这也是应用预处理的一个重要方面,其主要功能是为编译程序提供非常规的控制流信息。

3.4函数简介

3.4.1函数定义和调用的一般方法

1.函数定义

C语言源程序是由函数组成的。函数是C语言程序的基本模块。一个C语言程序通常由多个函数构成。

C语言程序的这种结构,允许人们在解决一个复杂问题时,可以先把这个问题分解成若干个相对简单的小问题,然后针对每一个小问题编写一个函数,最后通过函数之间的相互调用,就可以比较容易地解决这个复杂的问题了。在定义一个函数时,首先要考虑的就是函数的功能,也就是这个函数用来解决一个什么样的问题。函数的功能决定了这个函数的形式参数、返回值以及函数体中的语句。一个函数就像一个小型的加工厂一样,形式参数就是原料,返回值就是产品,而函数体中的语句描述从原料到产品的加工过程。

C语言的函数定义由函数首部和函数体两部分组成。函数首部定义三个内容:函数名、函数形式参数的个数及类型和函数返回值类型。函数体由语句构成,这些语句完成函数的功能。一个完整的函数定义如下所示:

返回值类型函数名(形式参数定义表)

{

函数体

}例如要编写一个函数,功能是求出两个整数中较大的一个。把这个功能转换成一个问题就是,已知两个整数,求其中较大的一个。根据这个问题,就可以明确,要编写的这个函数应该有两个形式参数,它们都是int型的。这个函数的返回值也是int型的。根据这些信息,只要给函数和形式参数起好名字,就可以写出这个函数的框架了:

intmax(inta,inb)

{

...

}在C语言中可从不同的角度对函数分类。从函数定义的角度看,函数可分为库函数和用户定义函数两种。

(1)库函数:由C系统提供的函数,用户无须定义,也不必在程序中作类型说明,只需在程序前包含有该函数原型的头文件,即可在程序中直接调用。

(2)用户定义函数:由用户按需要编写的函数。对于用户自定义函数,不仅要在程序中定义函数本身,而且在主调函数模块中还必须对该被调函数进行类型说明,然后才能使用。

2.函数的调用

定义了一个函数后,这个函数就可以被其他函数调用了。一个函数被调用的前提是主调函数能够识别被调函数。当被调函数的定义位置在主调函数之前时,主调函数能自动识别被调函数。否则,就应在主调函数调用被调函数之前对被调函数进行说明。

在C语言中,可以用以下几种方式调用函数:

(1)函数表达式:函数作为表达式中的一项出现在表达式中,以函数返回值参与表达式的运算。这种方式要求函数是有返回值的。例如:z=max(x,y)是一个赋值表达式,把max的返回值赋予变量z。

(2)函数语句:函数调用的一般形式加上分号即构成函数语句。例如:printf("%d",a);和scanf("%d",&b);都是以函数语句的方式调用函数。

(3)函数实参:函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的。例如:printf("%d",max

(x,y));即是把max调用的返回值作为printf函数的实参来使用的。

在函数调用中,还应该注意的一个问题是求值顺序的问题。所谓求值顺序,是指对实参表中各量是自左至右使用,还是自右至左使用。函数说明语句的形式如下:

返回值类型函数名(形式参数说明表);

函数说明语句和函数定义中函数的首部非常相似,不同的是:

(1)函数说明语句是一条单独的语句,后面跟“;”;而函数首部和函数体是一个整体,中间不加分隔。

(2)函数定义在整个程序中只能出现一次,而对这个函数的说明根据需要则可以出现多次。在主调函数中调用被调函数时,如果被调函数的定义中有形式参数,意味着被调函数需要接收主调函数传递的数据,主调函数通过实参来向被调函数提供数据,调用的一般形式为:

函数名(实参表);

实参表中提供的实参的个数和类型要与函数定义中形式参数的个数和类型匹配。实参可以是常量、变量或表达式。函数具体使用将在第6章中介绍。3.4.2库函数的调用

库函数,顾名思义是把函数放到库里,是把一些常用到的函数编完放到一个文件里,供他人使用;用的时候把库函数所在的文件名用 #include加到程序里就可以了。库函数一般是放到lib文件里的。

库函数一般是指编译器提供的可在C源程序中调用的函数,可分为两类,一类是C语言标准规定的库函数,一类是编译器特定的库函数。

在程序中调用库函数的方法和调用自定义函数的方法是相同的,不同的是库函数在调用前不需要定义和说明,只需要在程序的一开始使用“#include”命令把相应的头文件包含到当前文件中就可以了。

3.5顺序结构程序设计举例

例3-1

输入三角形的三边长,求三角形面积。

为简单起见,设输入的三边长a,b,c能构成三角形。从数学知识已知求三角形面积的公式为

解程序流程图见图3-5。图3-5例3-1流程图由于要调用数学函数库中的函数,所以必须用#include将数学函数库的头文件math.h包含进程序。

/*源程序3-8*/

#include<stdio.h>

#include<math.h>

main()

{

floata,b,c,s,area;

scanf("%f%f%f",&a,&b,&c);

s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c)); /*sqrt()为求平方根的函数*/

printf("a=%7.2f,b=%7.2f,c=%7.2f\n",a,b,c);

printf("area=%8.3f\n",area);

}

程序运行结果如下:

例3-2

从键盘输入一个大写字母,要求改用小写字母输出。

小写字母的ASCII码比大写字母的ASCII码值大。

/*源程序3-9*/

#include<stdio.h>

main()

{

charc1,c2;

c1=getchar(); /*输入大写字符*/

printf("%c,%d\n",c1,c1);

c2=c1+32; /*转变为小写*/

printf("%c,%d\n",c2,c2); /*输出*/

}程序运行结果如下:

温馨提示

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

评论

0/150

提交评论