第3章C语言数据类型、运算符和表达式ppt课件_第1页
第3章C语言数据类型、运算符和表达式ppt课件_第2页
第3章C语言数据类型、运算符和表达式ppt课件_第3页
第3章C语言数据类型、运算符和表达式ppt课件_第4页
第3章C语言数据类型、运算符和表达式ppt课件_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

1、第3章 C言语数据类型、运算符和表达式本章要点:数据的描画规那么数据的操作规那么主要内容:3.1 C3.1 C言语的数据类型言语的数据类型3.2 3.2 常量与变量常量与变量3.3 3.3 整型数据整型数据3.4 3.4 浮点型实型数据浮点型实型数据3.5 3.5 字符型数据字符型数据3.6 3.6 变量赋初值变量赋初值 3.7 3.7 各类数值型数据间的混合运算各类数值型数据间的混合运算 3.8 3.8 算数运算符和算术表达式算数运算符和算术表达式 3.9 3.9 赋值运算符和赋值表达式赋值运算符和赋值表达式3.10 3.10 逗号运算符和逗号表达式逗号运算符和逗号表达式 3.1 C的数据类

2、型C C言语提供了以下一些数据类型言语提供了以下一些数据类型 3.2 常量与变量3.3.1 常量和符号常量常量和符号常量1、常量、常量在程序运转过程中在程序运转过程中,其值不能被改动的量称为常量其值不能被改动的量称为常量常量区分为不同的类型:常量区分为不同的类型:整型整型 100 100,125125,-100-100,0 0实型实型 3.14 3.14 , 0.125 0.125,-3.789-3.789字符型字符型 a, b a, b, 22字符串字符串 “a “a, “ab, “ab, “1232“12322、符号常量 用一个标识符代表一个常量的符号,称为符号常量。用一个标识符代表一个常

3、量的符号,称为符号常量。 定义方法定义方法 define 标识符标识符 数值常量数值常量 例:例:#define PRICE 40 运用符号常量的益处是:运用符号常量的益处是: 含义清楚;含义清楚; 能做到能做到“一改全改。一改全改。 3.2 常量与变量3.2.2变量变量概念:在程序运转期间,其值是可以改动的量。概念:在程序运转期间,其值是可以改动的量。用标识符变量名来表示。用标识符变量名来表示。变量代表内存中具有特定属性的一个存储单元,它用变量代表内存中具有特定属性的一个存储单元,它用来存放数据,这就是变量的值。来存放数据,这就是变量的值。从变量中取值,实践上是经过变量名找到相应的内存从变量

4、中取值,实践上是经过变量名找到相应的内存地址,从该存储单元中读取数据。地址,从该存储单元中读取数据。变量的定义方法:变量的定义方法: 类型符类型符 标识符标识符 3.2 常量与变量(续) 变量命名的规定:言语规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必需为字母或下划线。 例: sum,_total, month, Student_name, lotus_1_2_,BASIC, li_ling M.D.John, ¥123,3D64,ab 3.2 常量与变量根本数据类型根本数据类型类型类型符号符号关键字关键字数的表示范围数的表示范围所占位数所占位数整型整型字符型字符型实型实型有

5、有无无(signed)int16-3276832767(signed)short16-3276832767(signed)long32-2147483648214748364716unsigned0655353204294967295unsigned longunsigned short16065535有有float323.4e-383.4e38有有double641.7e-3081.7e308有有char8-128127无无unsigned char80255阐明阐明:数据类型所占字节数随机器硬件不同而不同数据类型所占字节数随机器硬件不同而不同,上表以上表以IBM PC机为例机为例: 3.3

6、 整型数据一、整型常量的表示方法一、整型常量的表示方法 整型常量即整常数。在言语中,整常数可用以下整型常量即整常数。在言语中,整常数可用以下三种方式表示:三种方式表示: (1) 十进制整数。十进制整数。 如:如:123, -456, 4。 (2) 八进制整数。最高位必需用八进制整数。最高位必需用0作引导符。作引导符。 如:如:0123表示八进制数表示八进制数123,等于十进制数,等于十进制数83, -011表示八进制数表示八进制数-11,即十进制数即十进制数-9。(3)(3)十六进制整数。以十六进制整数。以0 x(0X)0 x(0X)开头的数是开头的数是1616进制数。进制数。 如:如:0 x

7、1230 x123,代表,代表1616进制数进制数123,123,等于十进制数等于十进制数 291291。 -0 x12 -0 x12等于十进制数等于十进制数1010。 二、整型变量二、整型变量 (1)整型数据在内存中的存放方式整型数据在内存中的存放方式 数据在内存中是以二进制方式存放的。数据在内存中是以二进制方式存放的。 如如: int i; /* 定义为整型变量定义为整型变量 */ i=10; /* 给给i赋以整数赋以整数10 */ 数值是以补码数值是以补码(complement) 表示的。表示的。 3.3 整型数据(续) 整数类型的有关数据:整数类型的有关数据: 3.3 整型数据(3)(

8、3)整型变量的定义和运用整型变量的定义和运用 规定在程序中一切用到的变量都必需在程序规定在程序中一切用到的变量都必需在程序中定义,即中定义,即“强迫类型定义。强迫类型定义。 定义的普通方式:定义的普通方式: 类型阐明符类型阐明符 变量名变量名1 1,变量名,变量名2, 2, ; 例如例如: : int a,b int a,b; / /* *指定变量、为整型指定变量、为整型* */ / unsigned short c,d;/ unsigned short c,d;/* *指定变量、为无符指定变量、为无符号短整型号短整型* */ / long e,f; / long e,f; /* *指定变量、

9、为长整型指定变量、为长整型* */ / 3.4 浮点型数据 (实型数据)3.4.13.4.1实型常量的表示方法实型常量的表示方法两种两种表示方式表示方式小数小数指数指数0.1230.1233e-33e-3留意留意: :字母字母e(e(或或E)E)之前必需有数字,且之前必需有数字,且e e后面的后面的指数必需为整数指数必需为整数 3.4.2 实型变量 实型变量的分类实型变量的分类 实型变量分为单精度实型变量分为单精度float型、双精度型、双精度double型和长双精度型型和长双精度型long double三类方式。三类方式。 3.4.3 3.4.3 实型数据在内存中的存放方式实型数据在内存中的

10、存放方式 浮点型数据是按照指数方式存储的。 系统把一个实型数据分成小数部分和指数部分,分别存放。指数部分采用规范化的指数方式。 3.5 字符型数据 3.5.1 字符常量字符常量用单引号包含的一个字符是字符型常量用单引号包含的一个字符是字符型常量只能包含一个字符只能包含一个字符a a, , A A, , 1 1abcabc、“a al 字符型常量简称字符常量 包括可视字符常量和本义字符常量 ASCII ASCII根本字符集中包括根本字符集中包括9494个可视字符和个可视字符和3434个控制个控制字符。字符。 2. 本义字符 ASCII中的控制字符是不可见字符,不能直接用单引号括起的方式表示。n

11、n 换行换行t t 横向跳格横向跳格, ,跳到下一个跳到下一个TabTab位置位置r r 回车回车, ,将当前位置移到本行开头将当前位置移到本行开头 在某些特定字符前加“ ,表示某种特殊的意义或控制动作。称这种方式的字符为本义字符。 3.5 字符型数据 3.5.2 字符变量字符变量字符型变量用来存放字符常量,留意只能放一字符型变量用来存放字符常量,留意只能放一个字符。个字符。字符变量的定义方式如下:字符变量的定义方式如下:char c1,c2;在本函数中可以用下面语句对在本函数中可以用下面语句对c1,c2赋值:赋值: c1a;c2 b ;一个字符变量在内存中占一个字节。一个字符变量在内存中占一

12、个字节。 3.5 字符型数据 3.5.3 字符数据在内存中的存储方式一个字符常量存放到一个字符变量中,是将该字符的相应的ASCII代码放到存储单元中。使字符型数据和整型数据之间可以通用。留意留意: : 一个字符一个字符数据既可以数据既可以以字符方式以字符方式输出,也可输出,也可以整数方式以整数方式输出。输出。 3.6 字符型数据3.6.4 字符串常量字符串常量字符串常量是一对双撇号括起来的字符序列字符串常量是一对双撇号括起来的字符序列.合法的字符串常量合法的字符串常量:“How do you do., “CHINA, “a , “$123.45可以输出一个字符串,如可以输出一个字符串,如pri

13、ntf(“How do you do.); 3.6 字符型数据 是字符常量,是字符串常量,二者不同。 如:假设c被指定为字符变量 :char c c=a; a;cCHINA; 结论: 不能把一个字符串常量赋给一个字符变量。 规定:在每一个字符串常量的结尾加一个规定:在每一个字符串常量的结尾加一个 “字符字符串终了标志,以便系统据此判别字符串能否终了串终了标志,以便系统据此判别字符串能否终了。 规定以字符规定以字符作为字符串终了标志。作为字符串终了标志。 如:假设有一个字符串常量 ,实践上在内存中是: 它占内存单元不是个字符,而是个字符,最后一个字符为。但在输出时不输出。 3.6 字符型数据 3

14、.6 变量赋初值 (2)(2)可以使被定义的变量的一部分赋初值。可以使被定义的变量的一部分赋初值。 如如: int a,b,c=5: int a,b,c=5; 表示指定、为整型表示指定、为整型变量,但只对初始化,变量,但只对初始化,c c的初值为的初值为 。(3)(3)假设对几个变量赋以同一个初值,假设对几个变量赋以同一个初值, 应写成:应写成:int a=3,b=3,c=3; int a=3,b=3,c=3; 表示、的初值都是。表示、的初值都是。 不能写成不能写成 int a=b=c=3; int a=b=c=3;(1)(1)言语允许在定义变量的同时使变量初始化言语允许在定义变量的同时使变量

15、初始化 如如:int a=3; / :int a=3; / 指定为整型变量,初值为指定为整型变量,初值为 float f=3.56; / float f=3.56; / 指定为浮点型变量,初值指定为浮点型变量,初值为为.56 .56 char c= char c=a a; / ; / 指定为字符变量,初值为指定为字符变量,初值为a a 3.7 各类数值型数据间的混合运算 混合运算:整型包括混合运算:整型包括int,short,longint,short,long、浮点型、浮点型包括包括float,doublefloat,double、字符型数据间可以混合运、字符型数据间可以混合运算。在进展运算

16、时,不同类型的数据要先转换成同算。在进展运算时,不同类型的数据要先转换成同一类型一类型, ,然后进展运算然后进展运算. .阐明:阐明: 这种类型转换是由这种类型转换是由系统自动进展的。系统自动进展的。总趋势:总趋势: 存储长度较短存储长度较短 存储长度较长存储长度较长例:例:int x=2;float y=1.6;char c=Aint x=2;float y=1.6;char c=A;c+xc+x* *y=y=?65(int)65(int)2(int)2(int)1.60(dou1.60(double)ble)3.20(double3.20(double) )68.20(doubl68.20

17、(double)e)2.0(dou2.0(double)ble)65.0(do65.0(double)uble) 3.8 算术运算符和算术表达式 的运算符有以下几类:的运算符有以下几类:(1) (1) 算术运算符算术运算符 + - + - * * / % / %(2) (2) 关系运算符关系运算符 !(3) (3) 逻辑运算符逻辑运算符 !|(4) (4) 位运算符位运算符 | |(5) (5) 赋值运算符赋值运算符 及其扩展赋值运算符及其扩展赋值运算符(6) (6) 条件运算符条件运算符 ?:?:(7) (7) 逗号运算符逗号运算符 ( (,(8) (8) 指针运算符指针运算符 * *和和

18、3.8.1 算术运算符和算术表达式1. 1. 根本的算术运算符根本的算术运算符: : 加法运算符,或正值运算符。如加法运算符,或正值运算符。如: :、 减法运算符,或负值运算符。如减法运算符,或负值运算符。如: :、* * 乘法运算符。如乘法运算符。如: :* * 除法运算符。如除法运算符。如: : 模运算符,或称求余运算符,两侧均应为整模运算符,或称求余运算符,两侧均应为整型数据,如型数据,如: :的值为。的值为。 3.8.1 算术运算符和算术表达式2. 2. 算术表达式和运算符的优先级与结合性算术表达式和运算符的优先级与结合性 用算术运算符和括号将运算对象用算术运算符和括号将运算对象( (

19、也称操作也称操作数衔接起来的、符合语法规那么的式子,数衔接起来的、符合语法规那么的式子,称为算术表达式。称为算术表达式。 运算对象包括常量、变量、函数等。运算对象包括常量、变量、函数等。 例如例如: : * *.5.5aa 是一个合法的表达式是一个合法的表达式言语规定了运算符的优先级和结合性。 在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。 规定了各种运算符的结合方向(结合性) 算术运算符的结合方向为“自左至右,即先左后右 。 3.8.1 算术运算符和算术表达式例如例如: *.5a2、 强迫类型转换运算符 (要转换成的数据类型)(被转换的表达式)留意:留意:方式:方式:强

20、迫类型转换时强迫类型转换时, ,得到所需类型的值,得到所需类型的值, 原来变量的类型和值都不变。原来变量的类型和值都不变。例:例:int a=2, b=5; float x=4.4;int a=2, b=5; float x=4.4;(float)b/a(float)b/a2.50(dou2.50(doubleble型型) ) (int)x/a(int)x/a2(int2(int型型) )例:例: (double) 将转换成将转换成double类型类型 (int)(x+y) 将将x+y的值转换成整型的值转换成整型 (float)5%3 将将5%3的值转换成的值转换成float型型2、 数据类型

21、间的强迫转换留意:强迫类型转换方式中的表达式一定要用括号括起来。否那么强迫转换仅对强迫转换运算符的变量进展类型转换。例如: (int)(3.5+ 8) (int)3.5+8 3.8.1 算术运算符和算术表达式3. 3. 自增、自减运算符自增、自减运算符 作用是使变量的值增或减作用是使变量的值增或减. .如:如: , 在运用之前,先使的值加减在运用之前,先使的值加减, 在运用之后,使的值加减在运用之后,使的值加减 3.8.1 算术运算符和算术表达式i+i+与与+i+i的区别:的区别: 是先执行后,再运用的值;是先执行后,再运用的值; 是先运用的值后,再执行。是先运用的值后,再执行。例如:假设例如

22、:假设i i的值为的值为3 3 ; i i的值先变成的值先变成4, 4, 再赋给再赋给,i,i、j j的值均为的值均为 ; 先将先将 i i的值的值3 3赋给赋给, ,的值为,然后变为的值为,然后变为 3.8.1 算术运算符和算术表达式留意:留意: (1)自增运算符,自减运算符,只自增运算符,自减运算符,只能用于变量,而不能用于常量或表达式,能用于变量,而不能用于常量或表达式, (2)和的结合方向是和的结合方向是“自右至左。自右至左。 自增减运算符常用于循环语句中使循环变量自动加。也用于指针变量,使指针指向下一个地址。 3.8.2 赋值运算符和赋值表达式= = 数学上的等号数学上的等号功能:将

23、一个表达式的值赋给一个变量。功能:将一个表达式的值赋给一个变量。例如:例如:a=5a=5; ave= ave=a+ba+b/10;/10;留意:与数学中的等式不同。留意:与数学中的等式不同。 用法:变量用法:变量 = = 表达式表达式 2、复合赋值运算符:在赋值符“=前加上其他运算符* *= =、/=/=、%=%=、+=+=、-=-=、=、&=&=、=、= =共共1010个个由赋值运算符与算术、位移、位逻辑运算符组成。由赋值运算符与算术、位移、位逻辑运算符组成。复合赋值运算符是一个运算符复合赋值运算符是一个运算符, ,但功能上但功能上, ,是两个是两个运算符功能的组合。运算符功

24、能的组合。a+=b a+=b 相当于相当于 a=a+b a=a+ba a* *=b+c =b+c 相当于相当于 a=a a=a* *(b+c)(b+c)a=2; a+=aa=2; a+=a* *=a;=a;a=8;a=8;4 4留意留意: : 假设是包含假设干项的表达式,那么相当于它假设是包含假设干项的表达式,那么相当于它有有 括号。括号。如:如: x %= y+3 x %= y+3 x %= (y+3) x %= (y+3) | | | | x = x %(y+3)( x = x %(y+3)(不要错写成不要错写成x=x%y+3) x=x%y+3) 3、赋值表达式 对赋值表达式求解的过程是:

25、对赋值表达式求解的过程是: 求赋值运算符右侧的求赋值运算符右侧的“表达式的值表达式的值; 赋给赋值运算符左侧的变量。赋给赋值运算符左侧的变量。例如例如: 赋值表达式赋值表达式“=3*5的值为的值为15,执行表达式,执行表达式后,变量后,变量a的值也是的值也是15。 留意留意: 一个表达式应该有一个值一个表达式应该有一个值 3、 赋值表达式 赋值表达式中的“表达式,又可以是一个赋值表达式。例如: a=(b=5) 分析:分析: 括弧内的括弧内的“b=5b=5是一个赋值表达式,它是一个赋值表达式,它 的值等于的值等于5 5。执行表达式。执行表达式“a=(b=5)a=(b=5)相当于相当于执行执行“b

26、=5b=5和和“a ab b两个赋值表达式。两个赋值表达式。 赋值运算符按照赋值运算符按照“自右而左的结合顺序自右而左的结合顺序,因此,因此,“(b(b5)5) 外面的括弧可以不要,即外面的括弧可以不要,即“a=(b=5)a=(b=5)和和“a=b=5a=b=5等价。等价。 3、 赋值表达式 请分析下面的赋值表达式请分析下面的赋值表达式(a=3(a=3* *5)=45)=4* *3 3分析分析: :先执行括弧内的运算,将先执行括弧内的运算,将1515赋给赋给a a,然后执行,然后执行4 4* *3 3的运算,得的运算,得1212,再把,再把1212赋给赋给a a。最后。最后a a的值为的值为1

27、212,整个表达式的值为整个表达式的值为1212。可以看到。可以看到(a=3(a=3* *5)5)出如今赋出如今赋值运算符的左侧,因此赋值表达式值运算符的左侧,因此赋值表达式(a=3(a=3* *5)5)是左值是左值 留意留意: :在对赋值表达式在对赋值表达式(a=3(a=3* *5)5)求解后,变量求解后,变量a a得到值得到值1515执行执行(a=3(a=3* *5)=45)=4* *3 3时,实践上是将时,实践上是将4 4* *3 3的积的积1212赋给变赋给变量量a a,而不是赋给,而不是赋给3 3* *5 5。不能写成不能写成:a=3*5=4*3 3、 赋值表达式 赋值表达式也可以包

28、含复合的赋值运算符。赋值表达式也可以包含复合的赋值运算符。 如:如: int a=12,a+=a-=a int a=12,a+=a-=a* *a a分析分析: :此赋值表达式的求解步骤如下此赋值表达式的求解步骤如下 先进展先进展“* *的运算,的运算, 它相当于它相当于* *,a a的值为的值为144144132132。再进展再进展“的运算,相当于的运算,相当于=a+(-132)=a+(-132),a a的值为的值为132-132132-132-264-264。在赋值时,将赋值符右边值的类型转换成在赋值时,将赋值符右边值的类型转换成与其左边变量类型一致的类型。与其左边变量类型一致的类型。几种情

29、况:几种情况:(1) (1) 浮点型浮点型整型、字符型整型、字符型取整数部分,去掉小数部分取整数部分,去掉小数部分(2) (2) 整型、字符型整型、字符型实型实型补足有效位补足有效位float f=23; 23.00000 float f=23; 23.00000 7 7位位double f=A; 65.00 000 000 000 000 double f=A; 65.00 000 000 000 000 1616位位int f=23.1 23int f=23.1 23(3) (3) 对对charchar、intint、shortshort、longlong、unsignedunsigned

30、型数据型数据赋值符右边赋值符右边数据数据a a位位 a=b a=b 原样照赋原样照赋 ab ab 截断高截断高a-ba-b位,送低位,送低b b 位位 abab无符号数据或正数无符号数据或正数有符号数据有符号数据高高a-ba-b位全补位全补0 0有符号变量有符号变量, ,符号扩展符号扩展符号扩展符号扩展符号位为符号位为0 0,剩余的高位补,剩余的高位补0 0符号位为符号位为1 1,剩余的高位补,剩余的高位补1 1赋值符左边赋值符左边变量变量b b位位 4、赋值转换例如:将一个例如:将一个intint、shortshort、longlong型数据赋给一个型数据赋给一个charchar型变量时,只

31、将其低型变量时,只将其低8 8位原封不动地送到位原封不动地送到charchar型型变量即截断。变量即截断。 “长长 数据赋给数据赋给“短变短变量量例如:例如:int i= 289; char c=a; c=i;int i= 289; char c=a; c=i;c c的值为的值为3333,假设用假设用“%c“%c输输出出c c,将得到字符,将得到字符“!“! ! !的的ASCIIASCII码为码为3333。 赋值情况赋值情况 : 4、赋值转换 例如:例如:int a;long b65536;a=b; 赋值情况如下赋值情况如下 : “长数据赋给长数据赋给“短变量短变量 结果:赋值后值为。结果:赋

32、值后值为。 将带符号的整型数据将带符号的整型数据intint型赋给型赋给longlong型变量型变量时,要进展符号扩展,将整型数的时,要进展符号扩展,将整型数的1616位送到位送到longlong型型低低1616位中位中: : “短数据赋给短数据赋给“长变量长变量 假设假设intint型数据为正值符号位为,那么型数据为正值符号位为,那么longlong型变量的高型变量的高1616位补;位补; 假设假设intint型变量为负值符号位为,那么型变量为负值符号位为,那么longlong型变量的高型变量的高1616位补,以坚持数值不改动。位补,以坚持数值不改动。 反之,假设将一个反之,假设将一个lon

33、glong型数据赋给一个型数据赋给一个intint型变型变量,只将量,只将longlong型数据中低型数据中低1616位原封不动地送到整型位原封不动地送到整型变量即截断。变量即截断。 “长数据赋给长数据赋给“短变量短变量例: 有符号数据传送给无符号变量。 #include void main unsigned ; int ; ; printfn,; 运转结果:运转结果: 3.10 逗号运算符和逗号表达式逗号运算符逗号运算符: :将两个表达式衔接起来将两个表达式衔接起来, ,又称为又称为“顺序求顺序求值运算符值运算符 如:如:5 5, 普通方式普通方式: 表达式,表达式表达式,表达式求解过程:求

34、解过程: 先求解表达式,再求解表达式。整个逗号先求解表达式,再求解表达式。整个逗号表达式的值是表达式的值。表达式的值是表达式的值。 逗号表达式逗号表达式 的的值为值为14 3.8.6 逗号运算符和逗号表达式例:逗号表达式例:逗号表达式* *5 5,* * 分析分析: :赋值运算符的优先级别高于逗号运算符,赋值运算符的优先级别高于逗号运算符, 因因此应先求解此应先求解* *5 5。的值为的值为5,然后求解然后求解*,得。整个得。整个逗号表达式的逗号表达式的值为。值为。 一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式 如:*,* ,a+5 分析: 先计算出的值等于,再进展*的运算得60但值未变,仍为15,再进展得,即整个表达式的值为。 3.8.6 逗号运算符和逗号表达式 逗号表达式的普通方式可以扩展为逗号表达式的普通方式可以扩展为 表达式,表达式,表达式,表达式,表达式,表达式,表达式,表达式 它的值为表达式的值。它的值为表达式的值。逗号运算符是一切运算符中级别最低的逗号运算符是一切运算符中级别最低的例例: ,* ,*3赋值表达式,赋值表达式,将一个逗号表将一个逗号表达式的值赋给达式的值赋给,的值等

温馨提示

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

评论

0/150

提交评论