C语言程序设计--第2-讲字符集.ppt_第1页
C语言程序设计--第2-讲字符集.ppt_第2页
C语言程序设计--第2-讲字符集.ppt_第3页
C语言程序设计--第2-讲字符集.ppt_第4页
C语言程序设计--第2-讲字符集.ppt_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计,第二讲,(1)C 文件可以由一个或多个C源程序组成,(2)C 源程序可以由一个或多个函数组成,(3)C 文件有且仅有一个主函数(main函数),(4)C 源程序中用预处理命令调用库函数或其它程序。,(5)每个执行语句以分号结尾。,(6)变量要先定义再应用,上节提要:,(7)一个函数由两部分组成:,函数的说明部分:函数名后有一对圆括号,函 数 体 部 分:花括号+执行语句,(8)C 程序书写区分大小写,(9)printf (“格式化字符串”,参数表)。,(10)可以用/* */或 / 对C源程序做注解,上节提要:,语言的字符集,每一种可书写的语言,全部可用的字符的集合称为字符集 英语的字符集 a-z 26个字母 阿拉伯数字的字符集为0-9 汉语的字符集 (中文字符,太多了) 两个或两个以上的字符组合称为词汇。,语言的字符集,语言字符集由字母,数字,空格,标点和特殊字符组成。在字符常量,字符串常量和注释中还可以使用汉字或其它可表示的图形符号。 1. 字母 大小写英文字母 2. 数字 09 3. 空白符 空格符、制表符(t)、换行符(n)等统称为空白符。 空白符只在字符常量和字符串常量中起作用。 4.标点和特殊字符 标点: 冒号,逗号,大中小括号 特殊字符:+ - * / % 等,一、语言词汇 在语言中使用的词汇分为六类:标识符,关键字,运算符,分隔符,常量,注释符等。 1.标识符 在程序中使用的变量名、函数名、标号等统称为标识符。 除库函数的函数名由系统定义外,其余都由用户自定义。 标识符是只能由字母、数字和下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。,由英文字母、数字和下划线组成,大小写敏感 不可以是数字开头 直观,见名知意,便于记忆和阅读 最好使用英文单词或其组合 切忌使用汉语拼音 下划线和大小写通常用来增强可读性 Variablename(太长,不建议) variable_name (UNIX风格) VariableName, variableName (Windows风格) 不允许使用关键字作为标识符的名字 int, float, for, while, if等 某些功能的变量采用习惯命名 如:for语句所采用的循环变量习惯用i, j, k,标识符命名,在使用标识符时还必须注意以下几点: (1)标准C不限制标识符的长度,但它受各种版本的C 语言编译系统限制,同时也受到具体机器的限制。例如在某版本C 中规定标识符前八位有效,当两个标识符前八位相同时,则被认为是同一个标识符。 定义标识符最好不要超过8个。 (2)在标识符中,大小写是有区别的。例如BOOK和book 是两个不同的标识符。 最好全部用小写 (3)标识符虽然可由程序员随意定义,但标识符是用于标识某个量的符号。因此,命名应尽量有相应的意义,以便于阅读理解,作到“顾名思义”。,以下标识符是合法的: a, x, x3, BOOK_1, sum5 以下标识符是非法的: 3s 以数字开头 U.S 中间有非法字符. s*T 出现非法字符* -3x 以减号开头 bowy-1 出现非法字符-(减号) Good bye 中间有空格 int 关键字,2.关键字 关键字是由语言规定的具有特定意义的字符串,通常也称为保留字。用户定义的标识符不应与关键字相同。语言的关键字分为以下几类: (1)类型说明符 用于定义、说明变量、函数或其它数据结构的类型。如int, double (2)控制语句符 用于表示一个语句的功能。如if 就是条件语句的语句定义符。,ANSI C一共只有32个关键字,(1) 数据类型说明符 (12个) 长短(单)双正负 long short double unsigned singned 无值整型浮点字符(指针)void int float char 联合枚举结构(数组) union struct enum (2) 变量类型(4个): 外部 静态 自动 寄存器 extern static auto register (3)常量(1个): const,(2)程序结构语句定义符 (12个) 判断: If else 循环: for do while 转移:goto 跳出: break continue 返回:return 开关:switch case default,3、其它关键字 sizeof 大小 typedef 类型定义 volatile 可变的 变量,数据为什么要区分类型? 不同类型的数据代表不同的 数据表示形式 合法的取值范围 占用内存空间大小 可参与的运算种类,数据类型(Data Type),语言的数据类型,数据类型是按被说明变量的性质,表示形式,占据存储空间的多少,构造特点来划分的。 在语言中,数据类型可分为:基本数据类型,构造数据类型,指针类型,空类型四大类。 数据类型:基本 构造 空 指针,基本类型,构造类型,指针类型,空类型 void,整型,浮点型(实型),字符型 char,枚举类型 enum,基本整型 (singned) int,长整型 long (int),短整型 short (int),数据类型,无符号整型 unsigned (int),单精度实型 float,双精度实型 double,数组类型,结构体类型 struct,联合类型 union,数据类型(Data Type),1、基本数据类型:基本数据类型最主要的特点是,其值不可以再分解为其它类型。也就是说,基本数据类型是自我说明的。 2、构造数据类型:构造数据类型是根据已定义的一个或多个数据类型用构造的方法来定义的。也就是说,一个构造类型的值可以分解成若干个“成员”或“元素”。每个“成员”都是一个基本数据类型或又是一个构造类型。 在C语言中,构造类型有以下几种: 数组类型 结构体类型 联合类型,计算机中的数据单位: b, B, KB, MB, GB, TB,bit,位 b Byte,字节 B Kilobyte(KB), K Megabyte(MB),兆 M Gigabyte(GB),G Terabyte(TB),T,1 TB = 1,024 GB,1 GB = 1,024 MB,1 MB = 1,024 KB,1 KB = 1,024 B,1 B = 8 b,思考:为什么是1024而不是更容易计算的1000? 1024是2的10次方,注意:硬盘的容量计算与此不同,硬盘的1K是1000,思考:为什么是8而不是更直观的10?,int 整数,在目前绝大多数机器上占4个字节。TC2中是2个字节 int a=64; float 浮点数 单精度浮点数,一般是4个字节长 float b=64.0; char 字符 字符,一般是1个字节长 用来表示256个ASCII字符,或者0-255的整数。 char=a ;,基本数据类型,short int,短整型,2个字节。通常简写为short long int,长整型,4个字节。通常简写为long single 单精度浮点数 4个字节 double 双精度浮点数 8个字节 long double ? signed 用来修饰char、int、short和long,说明他们是有符号的整数(正整数、0和负整数)。一般缺省都是有符号的,所以这个修饰符通常省略 unsigned 用来修饰char、int、short和long,说明他们是无符号的整数(正整数和0),数据类型修饰符,数据的存储形式,计算机中,所有的数据都是以二进制进行存储的。 因为用一个两位的十六进制数就可以表示8位的二进制数,为方便阅读,都是以16进制的形式写出。 常用字符与ASCII码对应。,使用ULTRAEDIT打开flashfxp.exe文件,进行十六进制编辑:,以13为例: 二进制数为:1101 int型 (2字节,15位有效数字,最高位为符号位):,long int型 (4字节, 31位有效数字,最高位为符号位) :,unsigned int型(2字节,16位有效数字,无符号位) :,unsigned long int型( 4字节, 31位有效数字,无符号位) :,整型数据 在内存中的存放形式,0D,0D 00,0D,0D 00,Turbo C中各类整型量所分配的内存字节数及数的表示范围。,TC2中int的范围是-3276832767 如果我们给它一个小于-32768或者大于32767的数会如何呢?,小蛇能吞下大象吗?,超出取值范围会怎样?,一台安装了Windows 95/98的机器,如果连续运行49.7天没有重新启动,可能死机 原因: Windows自启动时刻起,有一个计数器,记录系统已经运行了多少毫秒。这个计数器是个unsigned long 类型的变量 unsigned long 的最大值是:4294967295 一天有 24*60*60*1000 = 86400000毫秒 4294967295 / 86400000 = 49.71026961805 当49.7天的时候,此计数器会溢出,引起死机,溢出(Overflow)造成的危害,2 浮点型数据,浮点型常量的表示方法,两种表 示形式,小数 指数,0.123 1.23e-3,注意:字母e(或E)之前必须有数字,且e后面的指数必须为整数,1e3、1.8e-3、-123e-6、-.1e-3 e3、2.1e3.5、.e3、e,3.4 浮点型数据,规范化的指数形式: 在字母e(或E)之前的小数部分中,小数点左边 应有一位(且只能有一位)非零的数字. 例如: 123.456可以表示为: 123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 0.00123456e 其中的1.23456e3称为“规范化的指数形式”。,3.4 浮点型数据,3.4.2 浮点型变量 (1)浮点型数据在内存中的存放形式 一个浮点型数据一般在内存中占4个字节(32位)。与整型数据的存储方式不同,浮点型数据是按照指数形式存储的。系统把一个浮点型数据分成小数部分和指数部分,分别存放。指数部分采用规范化的指数形式。,图3-7,计算机中用二进制表示浮点数,使用二进制表示只有0和1,那么对于小数就只能用下面的方式来表示: a12-1+a22-2+a32-3+an2-n 其中a1等数可以是0或者1,从理论上将,使用这种表示方法可以表示一个有限的小数。,IEEE 754标准,一个浮点数V 在IEEE 754标准中可以用 V (-1)SM2E 的形式表示 在表示浮点数时, 每个浮点数均由三部分组成: 符号位S, 指数部分E和 有效数字 M S=0表示正数, S=1表示负数 有效数字M是二进制小数,M的每一位数只能是0或1,以0.75为例 十进制数 0.75 = 0.5+0.25 =1*1/2 + 1*1/4 =1*2-1+ 1*2-2 写成二进制的格式: 0.75 d =1.1 * 2-1 b,219.125 d = 11011011.001 b 换算过程: =1*128+1*64+0*32+1*16+1*8+0*4+1*2+1*1+0*0.5+0*0.25+1*0.125 =1*27+1*26+0*25+1*24+1*23+0*22+1*21+1*20+0*2-1+0*2-2+1*2-3 = 1101 1011.001 b = 1.101 1011001 *27 b,写成计算机存储的规范格式 0 1000 0110 1011 0110 0100 0000 0000 000,符号位 s , 正数则 s = 0,指数位E :用127代表0,E大于0则为127+E, E小于0则为127-E,省略整数1后得到有效数字(或称尾数),219.125 d = 1.101 1011 001 27,类型 位数 数的范围 有效数字 float 32 -3.410-383.41038 67 位 double型 64 -1.710-3081.710308 1516位 long double 128 -1.210-49321.2104932 1819位,浮点型数据的有效位数,(2) 浮点型变量的分类 浮点型变量分为单精度(float型)、双精度(double型)和长双精度型(long double)三类形式。,有效数是M(23位) 1111 1111 1111 1111 1111 1111 111 B = 8388607 D,3.2 常量与变量,3.2.1 常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量 常量区分为不同的类型:,整型 100,012,0xFF 实型 3.14 , 1.23E2 字符型 a, 2,72 字符串 “a”, “ab”,“1232” 符号常量 #define PRICE 30,整型常量 18、-31 长整型常量 123l、123L、123456l、123456L 无符号型常量 123u、 123U 浮点常量 十进制小数形式 123.45、456.78 指数形式 1e-2、4.5e3 单精度实型常量 123.45f、 456.78F、1e-2f、4.5e3F 长双精度型常量 123.45l、 456.78L、1e-2l、4.5e3L (没有长单精度的说法),常量(Constant),以数字“0”开始的整型常量是八进制数 022、-037 010和10大小不一样 因为八进制并不常用,所以此种表示法比较少见 以“0x”或者“0X”开始的整型常量是十六进制 A-F和a-f用来表示十进制的10-15 十六进制的形式比较常用,尤其在进行位一级的控制的时候 0x12、-0x1F, -0x1f,八进制与十六进制常量,练习:,写出以下程序的执行结果: void main() int a,b,c; a=12; b=012; c=0x12; printf(“%d, %d, %d“,a, b, c); ,练习,找出下列程序中的错误:,void main() int a,b,c,d,e,f,g; a=0X2A; b=0XA0; c=5A; d=0XFFFF; e=0X3H; f=019; g=003; printf(“%d,%d,%d,%d,%d,%d,%d“,a,b,c,d,e,f,g); ,字符常数为用单引号扩起的一个字符: a, A , 5 , % , $ 单引号内只能有一个字符,除非用开头 其值为整数,也可以参与各种数学运算 每个字符具有一个0-255之间的数值,可从ASCII表查出 注意: 5 和整数5的区别 字符的数学运算在密码学内用得比较多,字符(Character)常量,例:向字符变量赋以整数。 #include void main() char c1,c2; c1=97; c2=98; printf(“%c %cn“,c1,c2); printf(“%d %dn“,c1,c2); ,说明:在第和第4行中,将整数和分别赋给c1和c2,它的作用相当于以下两个赋值语句: c1;c2; 因为a和b的ASCII码为和,运行结果: 97 98,3.5字符型数据,3.5.3字符数据在内存中的存储形式及其使用方法 将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单元中。,这样使字符型数据和整型 数据之间可以通用。一个 字符数据既可以以字符形 式输出,也可以以整数形 式输出。,转义字符 一些特殊字符(无法从键盘输入或者另有它用)用转义字符表示,字符常数,小写字母转换为大写字母,Char 型与 int 型之间的关系,例2.4,例2.5,以字符型和整数型两种格式输出字符变量。,main() char ch = a; /*定义 ch 为字符型变量*/ printf(“%c, %dn“, ch, ch); /*分别以字符形式、整数形式输出ch */ ,main() char ch = b; ch = b - 32; printf(“%c, %dn“, ch, ch); ,用双引号括住的由0个或多个字符组成的字符序列 “I am a string“ “表示空字符串 转义字符也可以在字符串中使用 引号只作为字符串开始和结束的标志 C语言内部用 0 表示字符串的结束 除注释外,是唯一可以出现中文的地方 “x“和x是不同的 里定义了一系列专门的字符串处理函数,字符串(String)常数,练习:写出以下程序的执行结果:,#include “stdio.h“ main() int a, b=322; float x, y=8.88; char c1=k, c2; a=y; printf(“a=%dn“,a); x=b; a=c1; c2=b; printf(“%ft, %dt, %ct“, x, a, c2); ,宏常量 也称符号常量 一般采用大写字母表示 #define 标识符 字符串 不是语句,而是一种编译预处理命令 宏替换(Macro Substitulition),#include #define PI 3.14159 #define R 5.3 main() printf(“area = %fn“, PI * R * R); printf(“circumference = %fn“, 2 * PI * R); ,宏常量,例2.2,习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。,用const修饰定义的变量为常量 const float pi = 3.1425926; 常量只能在定义时赋值,然后不能再改变其值,const常量,main() const float a=3.5; float b=a; a=a+2; b=b+2; printf(“%f,%f“, a, b); ,练习:找出下列程序的错误:,3.2 变量,3.2.2 变量 变量的值存放在特定存储单元中的数据,在程序运行期间,变量的值是可以改变的。 变量名对应着内存空间中的某个地址,在对程序编译连接时由编译系统给每一个变量名分配对应的内存地址。从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据。,变 量,使用变量的基本原则 变量必须先定义,后使用 所有变量必须在第一条可执行语句前定义 不同变量定义的顺序无关紧要 一条定义语句可定义若干个同类型的变量 定义变量,是初始化变量的最好时机 不被初始化的变量,其值为危险的随机数 char esc = a; int i = 1; int sum = 0; float eps = 1.0e-5;,练习:写出以下程序的执行结果,#include main() int a=1, b=2, c; float f1=1.0, f2=2.0, f3=3.0; char ch1=a, ch2=b; printf(“a=%d, b=%d, c=%dnn“, a, b, c); printf(“%f, %2.0f, %3.2fnn“, f1, f2, f3); printf(“%c, %cn“, ch1+1, ch2+3); ,float型数据提供7位有效数字 double型数据提供16位有效数字 使用不当导致舍入误差,#include main() float a; double b; a = 123456.789e4; b = 123456.789e4; printf(“%fn %fn“,a, b); ,实型数据提供的有效数字位数,#include main() float f; f = 123.456; if (f = 123.456) printf(“f is equal to 123.456 indeed.“); else printf(“In fact, f is equal to %fn“, f); 运行结果会是什么?,浮点数的陷阱,不要轻易使用单精度浮点来进行判断。,float的精度低,较易发生精度带来的相等性判断问题 double精度高,这个问题发生的概率小一些,但也存在 解决办法: if (fabs(f 123.456) 1E-5) ,根据精度要求设定,浮点数的陷阱,变量赋初值,在程序中常常需要对变量赋初值,以便使用变量。语言程序中可有多种方法为变量提供初值。 在变量定义中赋初值的一般形式为: 类型说明符 变量1= 值1,变量2= 值2,; 例如: int a=3; int b,c=5; float x=3.2,y=3f,z=0.75; char ch1=K,ch2=P; 应注意,在定义中不允许连续赋值,如int a=b=c=5是不合法的。,2.6.2 算术运算符,+,-,*,/ 加、减、乘、除运算 四则混合运算中,先算乘除,后算加减, 按从左向右的顺序计算,左结合 - 取负值运算符,右结合 % 求余运算 注:操作数类型影响算术运算的结果 6/4 6.0/4 注:C语言表达式与数学表达式的区别,算术运算符作用于整型或浮点型数据,完成算术运算 。 (1)一、二元算术运算符 ,如下表所示。,二、一元算术运算符,如下表所示:,常用的标准数学函数 math.h,2.6.3 关系运算符,,=,=,=,!= 大于,大于等于,小于,小于等于,等于,不等于 左结合 关系运算符运算出的结果为0和非0 0,表示假,即该关系不成立 非0,表示真,即该关系成立 绝大多数编译器,关系运算得到的非0结果为1,关系运算符 关系运算符用来比较两个值 ,返回布尔类型的值true或 false。关系运符都是二元运算符,如下表所示:,2.6.4 逻辑运算符,逻辑运算也称为布尔(Boolean)运算 & 与运算 ( a b & b c);a大于b,并且b大于c | 或运算 ( a b | b c); a大于b,或者b大于c ! 求反、非运算,单目运算 !a 如果a是0,结果非0; 如果a是非0,结果是0 a的值不变 逻辑运算优先级低于关系运算 关系运算优先级低于算术运算( a +1 b & b c),逻辑运算符 逻辑运算符进行逻辑运算,如下表所示 :,2.6.5 赋值运算符,int h = 0; /*被赋值的量放在等号左边*/ 下面两个语句是等价的 i = i + 2; i += 2; +、-、*、/、%、&、|运算符都可以按此种方式处理,二元操作符 这种形式看起来更直观,而且执行效率一般也能更高一些,例: 写出下列程序的运行结果,#include “stdio.h“ void main() int a=5, x=2,y=100,z=100; a+=5; x*=a+3; y/=x; z%=x; printf(“%d,%d,%d,%d“,a,x,y,z); ,2.6.6 增一和减一运算符,n+,n-,+n,-n +让参与运算的变量加1,-让参与运算的变量减1,操作数只能是变量 作为后缀运算符时,先取n的值,然后加/减1 作为前缀运算符时,先加/减1,然后取n的值 m = n+; 等价于 m = n-; m=n; m=n; n+; n-; m = +n; 等价于 m = -n; n+; n-; m=n; m=n;,练习:写出下列程序的输出结果,Int i=8; printf(“ %dn”, +i); printf(“ %dn”, -i); printf(“ %dn”, i +); printf(“ %dn”, i -); printf(“ %dn”, -i+); printf(“ %dn”, -i-);,良好的程序设计风格提倡:在一行语句中,一个变量只能出现一次加1或者减1运算 过多的加1和减1运算混合,不仅可读性差,而且因为编译器实现的方法不同,导致不同编译器产生不同的运行结果 Sum =(+a) + (a+); /*晦涩,可读性差*/,2.6.6 增一和减一运算符,/* +, -的使用例子, +, - 的优先级大于 - */ #include “stdio.h“ main() int i=8, x=5, y=5, p, q; printf(“After i=%dt +i show %dt before i=%dn“ , i, +i,i ); printf(“After i=%dt -i show %dt before i=%dn“, i, -i, i); printf(“After i=%dt i+ show%dt before i=%dn“, i, i+,i); printf(“After i=%dt i- show %dt before i=%dn“, i, i-,i); printf(“After i=%dt -i+ show %dt before i=%dn“, i, -i+ ,i ); printf(“After i=%dt -i- show %dt before i=%dn“, i, -i- ,i ); printf(“n“); printf(“After x=%dt p show %dt before x=%dn“ , x, p=(x+)+(x+)+(x+), x ); printf(“After y=%dt q show %dt before y=%dn“ , y, q=(+y)+(+y)+(+y), y ); ,/* +, -的使用例子, +, - 的优先级大于 - */ #include “stdio.h“ main() int i=8, x=5, y=5, p, q; printf(“After i=%dt +i show %dt before i=%dn“ , i, +i,i ); printf(“After i=%dt -i show %dt before i=%dn“, i, -i, i); printf(“After i=%dt i+ show%dt before i=%dn“, i, i+,i); printf(“After i=%dt i- show %dt before i=%dn“, i, i-,i); printf(“After i=%dt -i+ show %dt before i=%dn“, i, -i+ ,i ); printf(“After i=%dt -i- show %dt before i=%dn“, i, -i- ,i ); printf(“n“); printf(“After x=%dt p show %dt before x=%dn“ , x, p=(x+)+(x+)+(x+), x ); y=5; printf(“After y=%dt q show %dt before y=%dn“ , y, q=(+y), y ); y=5; printf(“After y=%dt q show %dt before y=%dn“ , y, q=(+y)+(+y), y ); y=5; printf(“After y=%dt q show %dt before y=%dn“ , y, q=(+y)+(+y)+y, y ); y=5; printf(“After y=%dt q show %dt before y=%dn“ , y, q=(+y)+(+y)+(+y), y ); ,#include “stdio.h“ main() int a=1,b,c, k; b=(1-a)*a+; printf(“a=%d,b=%dn“,a,b); a=1;b=(1-a)*+a; printf(“a=%d,b=%dn“,a,b); a=3;k=(a+)+(a+)+(a+); printf(“k=%d, a=%dn“,k,a ); a=1;b=2;c=ab ,练习:写出下列程序的输出结果,#include “stdio.h“ main() int a=1,b,c, k; b=(1-a)*a+; printf(“a=%d,b=%dn“,a,b); /* a+ 计算先用a的原值计算后,再用a+1, a=2*/ a=1;b=(1-a)*+a; printf(“a=%d,b=%dn“,a,b); /* +a 先计算a+1, 再进行其它计算*/ a=3;k=(a+)+(a+)+(a+); printf(“k=%d, a=%dn“,k,a ); /* a + a + a , 最后再a+1*/ a=1;b=2;c=ab /* & 逻辑与运算 */ ,强制转换 (类型关键字)表达式 int m=5; (float)m/2; float (m)/2; float m/2; float (m/2); 表达式的结果被转换为设定的类型,但变量的类型和值不变,2.6.7 类型转换,2.6.7 类型转换,在进行赋值操作时,会发生类型转换 将取值范围小的类型转为取值范围大的类型是安全的,反之是不安全的 如果大类型的值在小类型能容纳的范围之

温馨提示

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

最新文档

评论

0/150

提交评论