《C基本概念》PPT课件.ppt_第1页
《C基本概念》PPT课件.ppt_第2页
《C基本概念》PPT课件.ppt_第3页
《C基本概念》PPT课件.ppt_第4页
《C基本概念》PPT课件.ppt_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

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

文档简介

第二章 C+基本概念,授 课: 东南大学 郑雪清E_mail: ,C+语言程序设计,2.1 本章需要掌握的内容,C+的基本词法结构,包括关键字、标识符和标点符号 基本的数据类型 变量与引用 整型常量的不同进制表示方法 实型常量的不同表示方法 字符常量、转义字符与字符串常量 标识符常量与宏定义常量 各种运算符的作用与优先级 类型转换,包括:自动类型转换、强制类型转换和赋值类型转换 C+语句 简单的输入与输出,2.2 第一个C+源程序,#include void main() cout“hello,worldn“; /向屏幕输出 hello,world后换行 /* cout与配合表示输出*/ ,#include不是C+ 的语句,而是C+ 的预处理命令,以“#”开头与C+语句相区别,行的末尾没有分号。 #include是一个“包含命令”,其作用是将中指定的文件iostream.h的内容包含到该命令所在的位置。 任何一个C+程序都应该有输出,而当程序有输入或输出时,必须使用: #include。 文件包含有两种方式,除上述外还可以: #include using namespace std;,5,程序的开发过程,编辑 将源程序输入到计算机中,生成后缀为.cpp的磁盘文件。 编译 将程序的源代码转换为目标程序.obj。 连接 将多个源程序文件以及库中的某些文件连在一起,生成一个后缀为.exe的可执行文件。 运行调试,Visual C+集成开发环境,Visual C+集成开发有两种方法: 工程的方法 简单程序的开发方法,2.3.1 关键字,关键字(Keyword)又称保留字。是由系统定义的具有特定含义的英文单词。关键字不能另作它用。,C+大小写敏感(区分大小写),关键字全部由小写字母组成。标准C+(ISO14882)定义了74个关键字,具体的C+编译器还会做一些增删。常用关键字及分类见下表。,表2-1 C+常用关键字及分类,2.3.2 标识符,标识符(Identifier,ID )是程序员定义的“单词”,用来给变量、常量、数据类型、函数等命名。,合法标识符由字母或下划线开始,由字母、数字、下划线组成,且不能和关键词同名。其有效长度各个C+编译系统有自己的规定,VC+允许标识符长度为1247个字符。,建议使用有一定含义的英文单词或拼音序列作标识符,以提高可读性;另外尽量不用下划线或双下划线打头,以免与系统定义的关键字冲突。,标识符,例: 判断下面哪些是合法的标识符:,MyFile,Salary 94,amount,void,94Salary,_94Salary,$amount,f3.5,Num_of_Student,2.3.3 标点符号,标点符号包括 #、( )、 ,、 :、 ;、 “、 等。,标点符号的作用:,有一定的语法意义。如字符和字符串常量分别用 和 引起来。 对语法符号起分隔作用。如;等。,2.3.4 分隔符,编写C+程序时,每个词法单位必须使用分隔符将它们分隔开。 可用作C+分隔符的有:运算符、标点符号、空格符、Tab符、回车符。,2.4 数据类型,计算机处理的对象是数据,而数据是以某种特定的形式转换成二进制码存放在内存中的。 例如,整数在内存中采用补码表示、实数采用浮点数表示方式。对于整数10和实数10.0在内存中的数据是不一样的。即使同样表示整数,对于(FFFFFFFF)16若表示为有符号的整数则为-1,若表示为无符号的整数则为232-1。,C+的数据类型,基本数据类型,非基本数据类型,数组 type 指针 type * 结构 struct 联合 union 枚举 enum 类 class,整 型 int,字符型 char,逻辑型 bool,无值型 void,实 型 float 双精度型 double,实 型,常量:指程序中直接给出的量; 常量的值在程序执行过程中保持不变; 根据取值和表示方法的不同,可分为以下几种: 整型常量 实型常量 字符型常量 字符串常量,2.6 常量,2.6.1 整型常量,整数有多种表示方法; 十进制表示法:123,-24 八进制表示法:0123,-025 十六进制表示法:0x123,-0x36 其他表示法:-123L,123U,123UL U或u-无符号 L或l 长整型,2.6.2 实型常量,(1)一般形式与平时书写形式相同,由数字 09和小数点组成。它一般由整数部分和小数部分组成,可以省略其中之一(如78.或.06,.0),但不能二者皆省略。例如:0.23 -125.76 0.0 .46 -35. C+编译系统把用这种形式表示的实型数一律按双精度常量处理,在内存中占8个字节。如果在实数的数字之后加字母F或f,表示此数为单精度浮点数,如1234F,-43f,占4个字节。,包含小数点和10的幂的数为实型常量,有两种表示方法:,(2) 指数形式(也称为科学表示法)表示为尾数乘以10的次方形式,由尾数、E 或e 和阶数组成。指数形式要求在E 或e 前面的尾数部分必须有数字,后面的指数部分必须为整数。,例: 判断下列表示是否合法?,123E12,-.34e-2,E4,1.43E3.5,2.6.3 字符型常量,字符常量是用单引号引起来的单个字符。在内存中使用1个字节,保存的是字符的ASCII码值。 字符常量有三种表示: 1. 用单引号引起来的一个字符: a /字符a,内存中保存97 /字符 4 /字符4 /空格字符,注意:,e和E是不同的字符常量,它们代表不同的ASCII码值。 4和整型数4是不同的值,4的ASCII码值为52。 0和0是两个不同的字符。0的ASCII码值为48。而0的ASCII码值为0,详见转义字符。,2. 转义字符 转义字符是用转义符“”开始,后跟一个小写字母。转义符后面的字符必须小写字母,大写只能表示其自身。如果转义字符后面是大写字母,则忽略反斜杠,作为一个一般的符号处理,即标识大写字母自身。 例如:E,则认为就是E。 常见转义字符如下表:,3. 转义序列 转义序列是用转义符“”开始,后跟一个整型常量(字符的ASCII码值)的方法来表示一个字符。若转义符后边是一个整型常量,则必须是一个八进制或以x为前缀的十六进制数,其大小在0255之间。当转义符后跟八进制数时,前缀0可以省略。如021、x78、0、56等都是合法的字符型常量。 如:101表示字母A,和字符A表示等价。,2.6.5 字符串常量,字符串常量与字符型常量的区别,字符串常量a占两个字节,存放a和0,值为0x6100,字符型常量a占一个字节,存放a,值为0x61 也要注意“”(引号中没有字符称空串)和“ ” (引号中有一个空格字符)的区别。,用双引号引起来的若干个字符称为字符串常量。例如:I am a Chinese.,123, a 。,2.6.6 常变量及常量说明符const,用常量说明符const给常量起个名字(标识符),这个标识符就称为标识符常量,也叫常变量; 例如: const float PI=3.14159; const int Number_of_Student=100;,常变量使用的注意事项: 常变量必须也只能在说明时进行初始化; 常变量初始化之后,不允许再被赋值; 常变量必须先说明后使用; 常变量存储在数据区,并且可以按地址访问,编译时系统对常变量进行类型检查。 C+建议使用常变量,而不要使用直接常量 。,2.6.7 宏定义常量,C+中可以用预编译指令#define 命令将一个指定的标识符(即宏名)来代表源程序中的一个字符串。它的一般形式为 # define 标识符 字符串 如:# define PI 3.1415926,变量,在程序中是指可以改变值的量; 变量必须用标识符进行标识,称为变量名; 变量有类型之分,不同类型在内存中占用不同字节的空间。常用的变量类型有:int(整形,4Byte)、float(单精度,4Byte)、double(双精度,8Byte)、char(字符型,1Byte)。 任何变量都必须先说明后使用;一是便于编译程序为变量分配空间,二是便于编译时进行语法检查; 变量不可以重复定义。,2.5 变量,2.5.1 变量定义与初始化,在C+中,变量说明的一般格式为: 存储类型数据类型 变量名1,变量名2, ,变量名n;,变量初始化,给变量赋初值称为初始化,有两种方法: (1)变量说明时直接赋初值。 例如: int a=3, b=4, c=5; float x=3.0 (2)用赋值语句赋初值。 例如: float x, e; x=3.5; e=2.71828; 注意: int a=3; int a(3); 是等价的。,当给多个变量赋相同值时: 正确的初始化方法: 例如: int a, b, c; a=b=c=5; 或 int a=5,b=5,c=5; 不可以采用以下方法: 例如: int a=b=c=5; 变量不可以重复定义: 例如: int a=10; float a;,定义变量时,决定了变量的数据类型,赋值时必须赋同类型的数据: 例如:char c=A;是正确的 而 char c=“A”;是错误的。 但字符数据和整型数据之间可以互相赋值。,C+有布尔型数据: 布尔型变量的说明: 例:bool flag; 布尔型数据的取值: 只有 false 和 true 两个值,2.5.2 变量与引用,C+中提供一个特殊的特性引用。引用是一种特殊的数据类型,简单地说是为一个已定义的变量起一个别名。 定义引用的一般格式为: 类型 &引用变量名=变量名 其中变量名为一个已定义的变量标识符。 定义引用名时,必须初始化。,#include void main() int i=10; int ,refi是变量i的引用 引用必须初始化,2.7 运算符与表达式,C+的运算符按功能大致可分为算术运算符、关系运算符、逻辑运算符、逗号运算符和其他运算符。C+的某些运算符与数学的运算符书写方式相同,功能也相近,但某些运算符与数学的运算符书写方式虽相同,功能却有所区别 。 C+的运算符按操作个数可分为单目(一元)运算符、双目(二元)运算符、三目(三元)运算符。,2.7.1 运算符优先级,C+规定了运算符优先级和结合性,见表2-5。 C+的运算符众多,优先级有如下规律性: 单目运算符优先级高; 基本运算符优先级从高到低依次为: 算术关系逻辑赋值逗号; 最高优先级为括号和成员运算符,最低运算符为逗号运算符。 C+运算符的结合性和人们的思维习惯相同 。,2.7.2 算术运算符,算术运算符有: 加法,例如 a+b,3+12,a+55。 减法,例如 a-b,34-c,d-100。 乘法,例如 a*b,11*c,f*10。 除法,例如 a/b,100/4,30.0/4.0。 求模(求余) ,例如 2%5,10%3,6%3。,对于+,-,*,/运算,如果运算符两边的操作数都是整数,其运算结果也是整数;如果参加+,-,*,/ 运算的两个数中有一个数为float型或double型数据,则运算的结果是double型, 对于求模运算,要求两个操作数必须均为整数,其结果为两数相除后的余数。,特别注意:除法运算,对于除法运算,如果运算符两边的操作数都是整数,其运算结果也是整数,即两数整除;如果两个操作符中有一个是实数,其运算结果就是实数。 4/5 运算结果为0, 4.0/5或4.0/5或4.0/5.0运算结果为0.8, 5/4 运算结果为1, 5.0/4或5/4.0运算结果为1.25。,2.7.4 关系运算符和关系表达式,关系运算符都是二元运算符,包括:(是否大于)、(是否不小于)、(是否小于)、(是否不大于)、= =(是否等于)和!=(是否不等于)。 关系运算符完成两个操作数大小的比较,结果为逻辑值true(真)或false(假)。不同类型,自动转换为同一类型后,采用对应关系运算符进行比较。,一般情况下,连续两个关系运算符构成的关系表达式,是不能正确反应对应关系的,如: 数学上表示的5x10,设有定义 int x=3;则: 5x10 /该表达式从C+语法上分析是合法的,但结果会是什么?,根据右结合 原则其运算 过程如下:,x,10,3,5,F,0,T即1,所以正确表示需要使用逻辑运算符: 5x&x10 表示x大于5并且小于10。 特别注意:等于比较的运算符是 =,不要和=(赋值混淆)。,2.7.5 逻辑运算符,从本质上讲,逻辑运算符要求操作数为逻辑量,因此,逻辑运算符的操作数可以是关系表达式或是另一个逻辑表达式。 C+中认为所有的操作数非0为逻辑真,0为逻辑假,因此除void类型之外的任何一种数据类型数据或表达式都可作为逻辑运算符的操作数。,由于逻辑值和整数之间的对应关系,也允许整型和字符型操作数进行逻辑运算: 21&0 /逻辑与,21与0,结果为假:0 21|0 /逻辑或,21或0,结果为真:1 !21 /逻辑非,21的非,结果为假:0,2.7.5 逻辑运算符,逻辑运算符主要用在表示数学上某个区间范围时使用。如: 2x-1 (0=10 需要强调的是: 对于参加逻辑运算的操作数,其值为非0时,表示逻辑真;而0表示逻辑假。而逻辑运算的结果为逻辑真时,取值为1;否则取值为0。,逻辑运算的优化,C+在计算逻辑表达式时,一旦表达式的值能够确定,就不再继续进行运算。也就是说,当逻辑与运算符的左操作数为逻辑假,或者逻辑或运算符的左操作数为逻辑真时,表达式的值已经确定,将不再计算右操作数表达式。 逻辑运算的优化虽然节省了运行时间,但有时也会造成意想不到的问题(称副作用)。 为防止这种情况,应尽可能避免在逻辑表达式中出现赋值或自增、自减等运算。,在C+中,在求逻辑表达式的过程中,一旦能确定逻辑表达式的值时,就不必再逐步求值了。这就是逻辑表达式的优化。例如: 假设 int a=0,b=4,c=5; a&b+&-c 运行该表达式时,因为种种原因a=0,就能直接确定表达式的值为0, 所以就不用求b+和c,所以运行该表达式的结果是,a,b,c三个变量的值不变。 又如: b|a+|c- - 情况也是如此。 这就是逻辑表达式优化带来的副作用。,2.7.3 赋值运算符,将数据存放到相应存储单元中称为赋值,如果该单元中已有值,赋值操作以新值取代旧值;从某个存储单元中取出数据使用,称为取值,引用不影响单元中的值,即一个量可以多次引用。常量只能取值,不能赋值。 赋值通过赋值运算符“=” 来完成,其意义是将赋值号右边的值送到左边变量所对应的单元中。赋值号不是等号,它具有方向性。,(1) 赋值表达式,赋值表达式是用赋值运算符将一个变量和一个表达式连接起来的式子。一般形式为: 变量 = 表达式 由于赋值运算符的优先级比较低,所以一般执行顺序为先计算表达式的值,然后将计算结果赋给变量。但逗号运算符例外。,赋值表达式作为一种表达式,可连续赋值,例如:a=b=3; 注意:是把b的结果赋给a。,C+将变量名代表的单元称为 “左值”,而将变量的值称为“右值”。 左值必须是内存中一个可以访问且可以合法修改的对象,因此只能是变量名,而不能是常量或表达式。 请看下面的赋值运算: 3.1415926=pi; x+y=z; const int N=30; N=40;,(2).赋值运算符,a=100; b=32+a*3;,(3) 赋值表达式与复合赋值表达式,在C+中,所有的双目算术运算符和位运算符均可与赋值运算符组合成一个单一运算符,称为复合赋值运算符。包括以下10个: + = = * = / = % = = &= | = = 复合赋值运算符的要求与格式与赋值运算符完全相同,表示为: 变量 复合赋值运算符 表达式 它等同于 变量 = 变量 运算符 表达式 例如:x+=5 等同于:x=x+5,赋值表达式也可以包含复合的赋值运算符。如: a+=a-=a*a 也是一个赋值表达式。如果a的初值为12,此赋值表达式的求解步骤如下: 先行“a-=a*a“的运算,它相当于: a=a-a*a=12-144=-132。 再进行“a+-132”的运算,相当于 a=a+(-132)=-132-132-264。 再如:如果a的初值为12, a+=+a后的结果是26;a-=+a的结果是0。,2.7.7逗号表达式,C+中,逗号既是分隔符,又是运算符,用逗号连接起来的表达式称为逗号表达式。一般格式为: 表达式1,表达式2,表达式n 逗号表达式中的每一个表达式都会被运算,整个逗号表达式的值为最后一个表达式的值。 例如:a=(x=3,x+=6,5+6); /a=11 x=9 注意:逗号的运算符比赋值号优先级低。逗号的运算符又称为“顺序求值运算符”。,自增、自减运算符,自增、自减运算符有两个,+和-,其作用是使变量的值增1和减1。+和-可以出现在变量的左边或右边,分别称为前缀(前置)运算符和后缀(后置)运算符。 使用+i,-i时,变量i的值先增加(减)1,后参加其它运算,使用i+,i-时,变量i先参加其它运算,等表达式计算后再使变量i的值增加(减)1。 例如:int a=5,b=4,c; 注意 c=(+a)+b;和c=(a+)+b;的区别。,【例2.6】 自增运算符示例,#include void main() int i=5,j=5; int k,n; k=+i +2; /A cout“k=“k“ i=“in; n=j+ +2; /B cout“n=“n“ j=“jn; ,k=8 i=6 n=7 j=6,程序运行结果:,2.7.6 位运算符,(1)按位取反运算符“” (2)左移运算符“” (4)按位与运算符“&” (5)按位或运算符“|” (6)按位异或运算符“”,C+语言提供字位运算,它对操作数的各个位进行操作。,(1)按位取反运算符“” 将操作数的每个二进制位取反,即1变为0,0变为1。例如,整数a的值为10011011, 则a的值为01100100。,(2)左移运算符“” 运算一般格式为:an 其中a为整数,n为一个正整数常数。语义为将a的二进制数依次向左移动n个二进制位,并在低位补0。左移n位相当于乘以2的n次方,但移位运算的速度比乘法快。,(3)右移运算符“” 一般格式:an 与左移运算符类同,将左操作数向右移动右操作数指定的二进制位数,忽略移位后的小数部分,并在高位补0。一个整数右移n位相当于除以2的n次方,但比除法快。 在VC+6.0中有符号数右移时高位补符号位,严格对应除法。,以上三种运算不影响数据本身的值,而是只产生一个中间量,这个中间量被引用后即不再存在。,(4)按位与运算符“&” 将两个操作数的对应位逐一进行按位逻辑与运算。运算规则为:对应位均为1时,该位运算结果为1,否则为0。,(5)按位或运算符“|” 运算规则为:只要有一个数对应位为1,该位运算结果即为1;两个数对应位均为0,该位结果为0。,(6)按位异或运算符“” 将两个操作数的对应位逐一进行按位异或运算。运算规则为:当对应位的值不同时,该位运算结果为1,否则为0。,2.7.7 条件运算符,条件运算符是C+中唯一的一个三目运算符,由两个符号“?”和“:”组成。条件运算符的格式如下: 条件表达式?表达式1:表达式2 其含义是如果条件表达式的结果为真(非0),就执行表达式1;否则就执行表达式2。表达式1和2的类型必须相容。,例:ab?(max=a):(max=b) 意思是:如果a大于b,则max=a,否则max=b。即把a和b两者中的大值赋给max。 上例也可写成:max=ab?a:b,sizeof运算符,sizeof是带参数的单目运算符,而不是一个函数。它的格式如下: sizeof(表达式) 或 sizeof(数据类型) 它的运算结果是表达式的存储字节数或系统为该数据类型所设置的存储字节数。 例如:sizeof(int) 其结果为4,即求出了系统为int类型所设置的字节数为4。,自动类型转换,在表达式中常会遇到不同类型数据之间进行运算,此时不同类型的数据要先转换成同一类型,然后再进行运算。 在表达式中,char 和 short 类型的值都会自动转换成int ,无符号的char 和 short 类型的值会自动转换成unsigned int。float型数据在运算时一律先转换成双精度型,以提高运算精度。 按照从高到低的顺序给各种数据类型分等级,依次为:long double, double, unsigned long long, long long, unsigned long, long。当两操作数类型不同时,将精度低的操作数的数据类型变换到与另一操作数类型再进行运算,doublefloat long unsigned int char, short,例如: 10+a+1.5是合法的。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。,强制类型转换,强制类型转换格式为: 强制转换类型(表达式) 或 (强制转换类型)(表达式) 强制转换并不是将表达式或变量直接转换成指定的类型,而是产生一个临时变量,再将表达式强制转换成指定的数据类型并赋给临时变量,而原来的表达式或变量的数据类型和值不发生变化。 例如:执行语句 double f=3.6;int i=(int)f;后,i的值为3,而f的值依然为3.6。,数据强制转换规则(1),将浮点型数据(包括单、双精度)强制转换成整型变量时,舍弃其小数部分,整数部分在内存中整数形式存储。 将整型数据强制转换成浮点型变量时,数值不变,但以浮点数形式存储。 字符型数据强制转换成整型变量,将字符的ASCII码赋给整型变量。,数据强制转换规则(2),将一个int、short或long 型数据强制转换成一个char型变量,只将其低8位原封不动地送到char型变量。 将signed(有符号)型数据强制转换成长度相同的unsigned (无符号) 型变量,或将unsigned (无符号)型数据强制转换成长度相同的signed(有符号)型变量时,存储单元内容原样照搬(连原有的符号位也作为数值一起传送) 。,赋值类型转换,如果赋值运算符两侧的数据类型不一致,但都是数值型或字符型时,在赋值时会进行强制类型转换。,#include void main() double f; coutf; int i=f+0.5; cout“转换后整数为“i; ,该程序实现了将实数四舍五入转换成整数的功能,2.8 C+语句,C+语言的语句有以下六大类: 1. 说明语句:在C+中,实现对数据结构的定义和描述、对变量的定义性说明的语句被称为说明语句。如:int a; 2. 表达式语句:在合法的表达式后面加上分号,即形成了表达式语句。a=10; 3. 控制语句:控制改变程序运行顺序的语句被称为控制语句。包括:选择语句、循环语句、流程跳转语句等。如:break;,4. 函数调用语句:在函数的调用后面加上分号,即形成函数调用语句。如:about(); 5. 空语句:只有一个分号组成的语句称为空语句,它不做任何操作。 6. 复合语句:当用将若干条语句括起来,C+将其作为一条语句进行处理,被称为复合语句。,2.9 简单的输入输出,程序在执行期间,接收外部信息的操作称为程序的输入,而把向外部发送信息的操作称为程序的输出。 在C+中没有专门的输入/输出语句, C+中的简单输入、输出,它是通过输入、输出流类的对象cin和cout完成的。 cin和cout包含在iostream.h文件中;,C+的输入输出,cin用来在程序执行期间给变量输入数据,格式为: cin变量名1变量名n; cout实现将数据输出到显示器的操作,格式为: cout,1. 十进制数据的输入,请看下例: int i, j; float x, y; coutij; /D cinxy; cout 则程序输出: i=10 j=20 x+y=13.1,当程序执行到cin语句时,计算机将等待用户从键盘输入数据。对于上例输入的形式可以有多种方法。数据与数据间可用空格或回车或TAB键隔开。 注意: 在键盘上输入数据的格式、个数和类型及顺序必须与cin中的变量一一对应,否则不仅使输入数据错误,而且影响后面其他数据的正确输入。,2. 字符的输入,(1) cin 例如:char c1, c2, c3; cinc1; /A cinc2c3; 程序执行到A行时,等待用户输入数据。 若输入:A b c 则cin分别将字符A、b、c赋给变量c1、c2、c3。 cin自动跳过输入的空白字符(包括空格,制表,backspace和回车等)。,注意:cin中不能将空格和回车键赋给字符型变量。需要时,必须使用函数cin.get()。 (2)cin.get() 格式为:cin.get(); 例如: char c1, c2, c3, c4; cin.get (c1); /B cin.get (c2); cin.get (c3); 程序执行到B行时,若输入:A b 则执行结果是:字符A、空格、字符b分别赋给变量c1、c2、c3;输入行中仍保留回车符。,语句一般格式: cout; 其中:称为插入运算符,它将紧跟其后的表达式的值输出到显示器当前光标的位置。cout将单(双)引号中的字符(串)常量按其原样输出。,3. cout

温馨提示

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

评论

0/150

提交评论