C语言讲解第二章 基本数据类型、运算符及表达式


2.2.3 符号常量
例: #define PRICE 30 #include<stdio.h> void main ( ) { int num, total; num=10; total=num*PRICE; printf("total=%d",total); }
显示结果: total=300
当开始编译前,系统先将程序中所有的PRICE 这个单词换成30,再进行编译(翻译成二进制)。
2.2.3 符号常量
例:#include<stdio.h> #define PI 3.14 #define R 10.0-7.0*PI void main() { float s; s=PI*R; printf(“s=%f\n”,s); }
显示结果: s=9.420000
2.2.4 字符型常量
它可分为字符常量和字符串常量两种。 (1) 字符常量 * 字符常量的定义 用一对单引号括起来的单个字符,称为字符 常量。 例如,‘A’、‘1’、‘+’等。 * 转义字符 C语言还允许使用一种特殊形式的字符常 量,就是以反斜杠“\ ”开头,引导的一个字 符或一个数字序列的转义字符
2.2 常量
什么是常量?
程序运行过程中不能被改变的量。 如程序中: 20 整型常量
15.8 浮点型常量
'a' 字符常量
2.2.1 整型常量
1、整型常量的基本类型
整型数据有三种形式
十进制整数 八进制整数 十六进制整数
2.2.1 整型常量
(1)十进制整数的表示与数学上的表示相同

合法的十进制常数如: 256,-321,0
不合法的十进制常数有: 023,25D

2.2.1 整型常量
(2)八进制整数的表示以数字0开头(后面出现 的每位上的数字取值是0~7)



合法的八进制数如: 015,0101,017 不合法的八进制数如: 256,0283 例: 0234表示八进制整数(234) 8 ,所对应的十进制 数为 2×82+3×81+4×80 =156
2.2.1 整型常量
(3)十六进制整数的表示以0x开头(后面出现的 每位上的数字取值是0~F)
合法的十六进制数: 0x1f,0xFF,0x201 不合法的十六进制数: 8C,0x3H 例: 0x201表示十六进制整数(201)16,所对应的十进 制数为 2×162+0×161+1×160 =513。 (友情提示:十六进制数前导字符0x,x前面是数字0)
2.3.2.1 整型变量
2、定义方法 例如: int a , b, c ; 等价于:
int a ; int b ; int c ;
2.3.2.2 实型变量
1、实型数据的分类: 单精度,以float表示 双精度,以double表示
2、定义方法 float a ,b, c ; double a ,b, c ;
是个常量,PI的值在程序执行时不能改变。
2.2.3 符号常量
〔说明〕:
1. define是预编译命令,在编译之前中用对应的 字符串替换程序中的标识符,然后再编译程序。 2. 该定义必须放在程序的开头,每一个定义必须 独占一行,因其不是语句,故尾部不跟分号。 3. 为了与变量区分,一般符号常量用大写表示。

变量必须先有确定的值后才能参加各种相 应的操作。 变量通过赋值语句获得一个值
例如: int i ; i=10 ;
结果:10
/* 定义为整型变量 i */ /* 给i赋以整数10 */
(思考?若i=10换成语句 i=10.2 ,输出 i, 结果是什么…)
2.3.3 变量值
又如: float j ; j=10.5 ;

2.2.1 整型常量
2、整型常量的后缀

在一个整型数据后面加一个字母l或L, 则认为是long int型量(长整型)。如342L、 0L、78L等。 长整型123L和基本整型常数123在数值上 无区别,但123L是长整型数,占4个字节, 而123是基本整型,占2字节,在运算和输出 格式上要注意。
单精度 双精度
共用体
数据有常量、变 量之分,均为其 中一种类型。
基本数据类型
关键字 int short long unsigned int unsigned short (int) unsigned long (int) 所占位数 16 16 32 16 16 32 取值范围 -32768~32767 -32768~32767 -2147483648~2147483647 0~65535 0~65535 0~4294967295
关键字
float double char
所占 位数
32 64 8
取值范围
-3.4×1038~3.4×1038(7位有效位) -1.7×10308~1.7×10308 (15位有效位) -128~127
unsigned char
8
0~255
例: int a; /* 定义整型变量a */ char b; /* 定义字符型变量b */ a的取值只能在范围-32768~32767之间 b的取值只能在范围-128~127之间;
(1)‘ \ddd•• 表示某ASCII码的一个字符 ‟
三位八进制数 [例] „\ 101 ‟–– 表示字母A (2) \ xhh • 表示某ASCII的一个 字符 二位十六进制数 [例]„\ x 41‟–– 表示字母A
2.2.4 字符型常量
〔使用转义字符注意〕:
1) 转义字符多用于printf()函数中,而在scanf()函 数中通常不使用 2) 转义字符常量,如’\n‟,‟\x86‟等只能代表一个 字符
2.1 C语言的基本数据类型
程序设计中,每个要使用的变量都要事 先指定它的数据类型! 为什么要指定数据类型?
1.不同类型的数据在内存中占据不同长
度的存储区。 2.不同类型的数据取值范围不同。 3.不同类型的数据有不同的操作。
2.1 C语言的基本数据类型
因此要求在使用变量之前, 必须对
变量的类型进行说明, 即通知编译系
* 例如
“How do you do.” “Good morning.” 其长度分别为14和13(空格也是一个字符)。
2.2.4 字符型常量
(2)字符串常量 * 字符串的存储
C语言规定:在存储字符串常量时,由系统在字 符串的末尾自动加一个‘\0‟作为字符串的结束标志, 但不显示。 注意:在源程序中书写字符串常量时,不必加 结束字符‘\0‟,否则画蛇添足。
2.2.1 整型常量
2、整型常量的后缀

无符号也可用后缀表示,整型常量的无 符号数用后缀“u”或“U”来表示。如: 345u,0x38Au,235Lu
思考: 10和10L是否等价 10、010、0x10是否等价

2.2.2 实型常量
在C语言程序设计中,实型数据有两种表达形式: (1)十进制数形式。如: 5.734、0.273、.8、224.、0.0等。 (2)指数形式。如: 3 546e3(或546E3)都代表546× 10。 注意: E、e只能表示底数为10的,字母e(或E) 之前必须有数字,且e后面的指数必须为整数。 例:e3 , 32e3.5, .e3, e 错误

变量名;

2.3.2.1 整型变量
1、根据数值的范围将整型数据分成三类: 基本整型,以int 表示 短整型,以short int 表示,或以short表示 长整型,以long int 表示,或以long 表示 对以上三类还可以加上signed( signed可 以省略)或 unsigned, 分别表示有符号数或无符号数
2.2.3 符号常量
什么是符号常量?
在程序中,为了书写方便,用标识符代表一个
常量。
〔符号常量的定义〕
#define 标识符 字符串
2.2.3 符号常量
如:可事先规定PI=3.1415926, 就可定
义符号常量PI 代表字符串3.1415926,定
义如下
#define PI 3.1415926
这样在程序中所有PI均代表3.1415926,
2.2.4 字符型常量
思考下列程序的输出结果?
运行结果: 52 4 52 4
例: #include<stdio.h> main() { int a,b,c; a=5;b=2;c=4; printf(“\t%d%d\n%d\n%d%d\t\b\b%d\n”, a,b,c,a,b,c); }
2.2.4 字符型常量
2.3 变量

程序运行过程中,数据的两种状态: 变量 常量
变量的要素: (1)变量名。 每个变量都必须有一个名字──变量名, 变量命名遵循标识符命名规则。

.3 变量
(2)变量类型(int , float, double等) (3)变量值。 在程序运行过程中,变量值存储在内存 中。在程序中,通过变量名来引用变量的值。
2.2.4 字符型常量
(2)字符串常量
如果有一个字符串为“CHINA”,则它在内存
中 的实际存储如下所示:
C H I N A \0
最后一个字符‘\0‟是系统自动加上的,该字符 串占用6字节而非5字节内存空间。
2.2.4 字符型常量
* 字符常量‘A‟ 和字符串常量”A”是不同的
总结,不同之处: (1)定界符不同:字符常量使用单引号,而 字符串常量使用双引号;
字符形式 功 能 \n 换行 \t 横向跳格(跳到下一个输出区,一个输出区有8列) \b 退格 \r 回车 \f 换页 \\ \‟ \‟‟ \0 \ddd \xhh 反斜杠字符 单引号字符 双引号字符 空值 1到3位8进制数所代表的字符 1到2位16进制数所代表的字符
合集下载

c语言的数据类型、运算符和表达式

c语言的数据类型、运算符和表达式

数据类型、运算符和表达式一、C 语言的基本数据类型数据是程序处理的对象。

C 中将数据分为不同的数据类型,任何数据都属于某一种特定的数据类型。

数据类型的作用有两个:一是指明为数据分配多大的存储空间和规定了数据的存储结构,进而规定了数据的取值范围;二是规定了数据所能进行的操作。

C 的数据类型分为基本数据类型和构造类型。

基本数据类型是系统定义的,用户可以直接使用。

构造类型由用户自行定义。

C 的数据类型如图所示。

C 标准没有规定各类数据所占用内存位数。

所以不同c 编译系统的各类数据所占用内存位数是不一样的。

上机使用时,应注意使用的c 编译系统的具体规定。

Turbo C 基本类型 所占位数 数的范围 [signed] char 8 -128~127 unsigned char 8 0~255 [signed]int 16 -32768~32767 short [int] 16 -32768~32767long [int] 32 -2147483648~2147483647 unsigned [int] 16 0~65535 unsigned short [int] 16 0~65535 unsigned long [int]320~4294967295C++数据类型基本类型字符型(char) 空类型(void)整型短整型(short int) 无符号整型(unsigned int)长整型(long int)基本整型(int) 实型(浮点型) 双精度型(double)单精度型(float) 指针构造类型枚举(enum) 联合(union)结构体(struct)数组float 32 约6位有效数字double 64 约12位有效数字在Visual C++中:char:1 Byteint:4 Byteshort:2 Bytelong:4 Bytefloat:4 Bytedouble:8 Byte二、常量常量:整型常量、实型常量、字符常量、字符串常量、符号常量1.整型常量C语言程序中可以使用十进制、八进制和十六进制来表示整型常量。

第2章_数据类型、运算符和表达式《C语言程序设计(第三版)》-电子教案

第2章_数据类型、运算符和表达式《C语言程序设计(第三版)》-电子教案

2.2 标识符、常量与变量

符号常量
【例2-1】输入圆的半径,计算周长和面积。 #define PI 3.14159 void main() { float r,c,s; scanf("%f",&r); c=2*PI*r; s=PI*r*r; printf("r=%f,c=%f,s=%f\n",r,c,s); }

以下是合法的整型常量:

2.2 标识符、常量与变量

实型常量

实型常量只能用十进制形式表示 表示形式:


小数形式。由数字序列和小数点组成,如 3.1415926、-0.15、.15、2.等都是合法的实型 常量。 指数形式。由十进制数加上阶码标志“e”或 “E”及阶码组成,如3.14e-4或3.14E-4表示 3.14×10-4。
2.2 标识符、常量与变量

2.2.3 变量


在程序运行过程中,其存储的值可以被改变的量称 为变量 变量必须通过标识符进行说明,称为变量名。 变量名和内存单元地址存在映射关系,程序可以通 过变量名寻址,从而访问其存储的数据。
2.2 标识符、常量与变量

变量的定义和说明

数据类型 变量名1[,变量名2,…,变量名n];
long型转换成float型时由原来可达10位整数变成只有7位有效数字精度丢失但由于数的范围扩大了数据类型从较低级提升到较高级随着竞争日益激烈酒店嘴中的肥肉被大肆抢夺各大酒店在这场竞争中几乎溃不成军
21世纪高等学校精品规划教材
第2章 数据类型、运算符 和表达式



掌握C语言的基本数据类型 掌握标识符、关键字、常量和变量的使用 掌握运算符、表达式以及数据类型之间的转换 等 掌握简单数据的输入输出

第2章 数据类型和表达式

第2章 数据类型和表达式

„A‟——字符常量 “A”——字符串常量
C程序设计与应用教程 2.2 常量
2.2.5 符号常量 符号常量,即用一个符号(标识符)来代表一个常量。 1.宏定义 2.const限定
C程序设计与应用教程 2.2 常量
2.2.5 符号常量 1.宏定义 宏定义是用指定的标识符来代表一个字符序列
一般形式为:
C程序设计与应用教程 2.2 常量
2.2.3 字符常量
实际上无论是可显示字符还是不可显示字符,都可以 用八进制或十六进制的ASCII码值来表示,表示形式如下: 八进制形式:\nnn,其中nnn表示1~3位的八进制数。
例如,'\n'可以表示为'\15'。
十六进制形式:\xnn(x只能小写,不能大写),其中nn 表示1~2位的十六进制数。
2.3.1 C标识符及其命名 2.标识符的命名
表2-4 一些常用的匈牙利命名法前缀 数据类型 前缀 例子
char
int long string int array char *
c
i l sz ai psz
cInChar
iReturnValue lNumRecs szInputString aiErrorNumber pszInputString
将一个数据存储在变量中有多种实现方式:
③ 利用后面介绍的输入函数scanf( )给变量赋 值。在程序运行期间,暂停程序的运行,等待用户 从键盘输入一个数据,使得该变量获得一个值。 例如:
int x;
scanf(“%d”,&x);
C程序设计与应用教程
2.4
简单的输入输出
输入输出是对计算机主机而言 的。所谓输入,是指从输入设备 (如键盘)向计算机输入待处理数 据的过程;所谓输出,是指计算机 将处理的结果向外部输出设备(如 显示器、打印机等)输出的过程。

C语言程序设计二

C语言程序设计二

int x=10, y=10, z=10 ;
//不能写成int x=y=z=10;
2.2.3 标准函数

C编译系统提供的库函数
− 包括: 输入输出函数、数学函数、字符和字符串函数等。

数学函数 − sin(x) − cos(x) − exp(x)
− log(x)
− log10(x) − fabs(x)
空类型
一种无返回 值函数的数 据类型。 void
自定义
用新的类型 名替代已有 类型名使用。 用typedef 定义
C语言的基本数据类型 整型: 包括有、无符号的基本整型、短整型、长整型 实型: 包括单精度实型、双精度实型 float,double 字符型: 用于表示和存储ASCII字符。 char
2.2
−无符号整数: 用后缀 U/u 表示。
017u, 0xfdbU
−无符号长整数: 用后缀 UL/ul 表示。
15uL
2. 实型常量——浮点数

实型常量又称实数, 指带有小数部分的数。C语言中的实数 是以十进制表示的, 有两种表示形式:
−十进制小数形式:
由数字、数符和小数点组成。
例:
0.123, .123, 123. ,0.0 , -2.5,…
( 存放的是字符的ASCII码值) 字符数据与整型数据可相互赋值,直接运算。 可以把字符变量按整型量输出, 也允许把整型量按 字符量输出。


【例2.4】字符型变量的使用 #include <stdio.h> void main( ) { int a=„b‟; char c1=97; c1=c1-32;
第二章
数据类型、运算符和表达式
§2.1 数据与数据类型 §2.2 常量、变量和标准函数 §2.3 基本运算符及其表达式

chap2 基本数据类型、操作符和表达式

chap2 基本数据类型、操作符和表达式

The latter form takes more space, but is convenient for adding a comment to each declaration for subsequent modifications. — K&R:P39
2.2.2 整型变量
整型变量在计算机内存中一般占两个字节或四个 字节。我们可以用sizeof(int)来测试。 用以说明整型变量的关键字(也称为数据类型符) 为int。定义变量数据类型语句的一般格式为: 数据类型符 变量名1,变量名2,… C语言规定,每个变量在使用前,都必须先定义。 int a,b;
— K&R:P36
The value of an integer can be specified in octal or hexadecimal instead of decimal. A leading 0 (zero) on an integer constant means octal; a leading 0x or 0X means hexadecimal. For example, decimal 31 can be written as 037 in octal and 0x1f or 0x1F in hex. Octal and hexadecimal constants may also be followed by L to make them long and U to make them unsigned: 0XFUL is an unsigned long constant with value 15 decimal.
There are some restrictions on the names of variables and symbolic constants. Names are made up of letters and digits; the first character must be a letter. The underscore ``_'' counts as a letter; it is sometimes useful for improving the readability of long variable names. Don't begin variable names with underscore, however, since library routines often use such names. Upper and lower case letters are distinct, so x and X are two different names.

2 C语言 第二章数据类型、表达式

2 C语言 第二章数据类型、表达式

说明
在整型常量尾部加上字母1或 时 在整型常量尾部加上字母 或L时,则 表示长整型常量.比如: 表示长整型常量.比如:18L或18l 或 整型(int)常量的值在 32768~32767之间 常量的值在 整型 之间 长整型(long int)常量的值在 长整型 常量的值在 2147483648 ~ 2147483647之间 之间
三位八进制 001 000 001 二进制 ( (用十进制表示为65) 65)
A' 如 \ 101 –– 表示字符'A' 又: \ x hh
用1到2位16进制数表示的 到 位 进制数表示的 进制数表示的ASCII码对应的字符 码对应的字符
如 \ x 41–– 表示字符'A'
0100 0001 二进制 (用十进制表示为65)
注意: 注意: 实型变量的有效数字的长度视机器而定 例如: 例如: pc机, 单精度一般为7位, 双精度15位 于是: float a; a=123456.789 则实际赋值a←123456.7 单精度表数范围: 单精度表数范围 10–38~1038 双精度表数范围: 双精度表数范围 10–308~10308 实数可以赋给float或double型变量.
对于较大或较小的数,可用指数形式 0.0000126 1260000 1.26E –5 1.26E+6 或1.26E6
' E ', 'e ' 均可, 表示以10为基数.E或e之前必须要 有数字,称为尾数部分或数码部分.规范化的尾数是将 小数点固定在第一位有效数字之后.ddd称为指数,指数 最多可达3位整数.
2.4.2 实型变量
分为单精度型 双精度型 单精度型与双精度型 单精度型 双精度型. 例如: 例如: float x, y, z ; 定义x, y, z为单精度变量. double a, b, c ; 定义a, b, c为双精度变量. 一般地: 单精度占4字节内存单元 字节内存单元; 一般地 单精度占 字节内存单元 双精度占8字节内存单元 双精度占 字节内存单元. 字节内存单元

第2章 数据类型%2C运算符与表达式


字符型 ‘a‟,
„b‟,‘2‟
2013-7-5
第4页
运行结果: total=300 【例2.1】在程序中使用符号常量 #define PRICE 30 #include <stdio.h> void main ( ) 如再用赋值语句给PRICE赋值 PRICE=40;/* 错误,不能给符 { 号常量赋值*/ int num, total; int PRICE; /* 错误,PRICE不 num=10; 是变量,不能指定类型 */ total=num * PRICE; printf(″total=%d\n″,total); } 符号常量: 用一个标识符代表一个常量。 符号常量的值在其作用域内不能改变, 也不能再被赋值。
2013-7-5
第19页
2.3
整型数据
2.3.2 整型变量 • 整数类型的有关数据(Turbo C 2.0)
类型 基本型 类型说明符 int 长度 2字节 数的范围 -32768~32767
短整型
长整型 无符号整型
short
long unsigned
2字节
4字节 2字节 4字节
-215~215-1
短整型
长整型 无符号整型
short
long unsigned
2字节
4字节 2字节 4字节
-215~215-1
-231~231-1 0~(232-1) 0~65535 0~(232-1)
无符号短整型 unsigned short 2字节 无符号长整型 unsigned long
2013-7-5
第21页
2013-7-5 第22页
2.3
整型数据
数据在内存中以二进制形式存放。 如: int i; /* 定义为整型变量 */

第二章 C语言的基本数据类型及运算

行绝对值相减
解决的方法是: 使用反码或补码的表示方法(按前述
表示的编码称为原码),即能将减法一律 转换为加法。
2020/12/11
原码、反码和补码
11
正数:原码、反码、补码相同
– 符号位为0,数值为对应的二进制数。 +109
[01101101]原 = [01101101]反 = [01101101]补
• 指数只能是整数,而尾数则可以是整数也可以是 小数 ,无论指数或尾数均不能省略 例如:1e、E.5、E-3 非法
• 实型常量的类型:默认为double型,后面加F (或f),则强调表示该数是float类型 例如:3.5f、1e2F
2020/12/11
3. 字符型常量
22
可视字符常量 – 单引号括起来的单个可视字符 例如:'a'、'A' 、'+' 、'3'、' ' 等
例如: #define LEN 2.5
定义符号常量
main( )
{ float a,b;
a= 2*3.14 *LEN;
使用符号常量
b=3.14*LEN*LEN;
printf("a=%f,b=%f\n",a,b);
}
编译前系统进行替换
2020/12/11
5. 符号常量
25
main( )
{ float a,b;
负数:
– 原码符号位为1,数值为绝对值的二进制
数。
-109 [11101101]原
– 反码符号位为1,数值为绝对值的二进制
数各位变反。 -109 [10010010]反
– 补码符号位为1,数值为绝对值的二进制

C语言第2章 数据类型及运算符

C/C++程序设计第2 章数据类型及表达式计算机学院C/C++程序设计课程组C/C++程序设计第2章主要内容本章主要介绍:基本数据类型和存储类型的说明方法,以及基本运算符的运算规则和表达式的构成方法,为后续章节的学习奠定一个基础。

C/C++程序设计2.1 C 语言的数据类型使用高级语言编写程序,主要工作有两项:一是描述数据,二是描述数据加工的方法。

数据类型图 2.1C 语言的数据类型基本类型整型实型字符型带符号长整型(简称长整型)带符号整型无符号整型无符号整型无符号短整型无符号长整型单精度型双精度型空类型构造类型指针类型枚举类型数组类型结构体类型共用体类型C/C++程序设计2.2 常量常量是程序运行过程中其值不发生变化的数据。

2.2.1 整型常量表2.1 整型数据的表示方式2.2.2 实型常量3.14、.9999、-3.14159、834.、–0.666 、6.89E-52.2.3 字符常量’x’,’a’,’A’,’b’,’$’,’#’ ,printf("\tab\rcd\n\’ef\\g");2.2.4 符号常量#define 符号常量字符串#define PI 3.14159C/C++程序设计【例2.1】求一个圆柱体体积,用符号常量代替π。

#include <stdio.h>#define PI 3.14159 /*定义PI为符号常量*/void main(){float r,h,v;scanf("%f,%f",&r,&h);v=PI*r*r*h; /* PI相当于3.14159,参与运算*/printf("Volume=%f",v);}运行时输入:3,2↙运行结果为: Volume=56.548618C/C++程序设计2.2.5 字符串常量"\tab\rcd\n\’ef\\g“"I am a student" 、"x"、""注意:’\0’和’0’不同,’\0’是编码为0的字符,而’0’则是数字0,其编码为48。

C语言程序设计第2章-1数据类型、运算符和表达式

1、按运算符的功能分成:算术运算符、关系运算符、逻辑运算 符、赋值运算符、位运算符、条件(tiáojiàn)运算符、自增和自减 运算符、逗号运算符、指针运算符、强制类型转换运算符、 分量运算符、下标运算符、求字节数运算符、函数调用运算 符等等。
2、 C 语言的运算符的优先级与结合性
3、表达式:由操作数和运算符组成的序列。
5
精品文档
⒉ 真值: 带符号位的机器数对应的数值称为机器数的真值。 (10100011)2= -35
⒊ 无符号数:当计算机字长的所有二进位都用来表示(biǎoshì)数值时,称 为无符号数。
2.2.2 原码、反码和补码
⒈ 原码
整数 X 的原码指:其数符位 0 表示正,1 表示负,其数值部分
就是 X 的绝对值的二进制表示。
2.1 常用 的进位制 (chánɡ yònɡ)
2.1.1 二进制、八进制和十六进制(shíliùjìn zhì)数
3
精品文档
2.1.2十、二进制、八进制和十六进制数之间的换算
⒈ 二、八、十六进制数 → 十进制数的换算采用按权展开法。
(2AB.F)16 = 2χ162+10χ161+11χ160+15χ16-1 = 683.93 ⒉ 十进制数 → 二进制数的换算整数部分(bù fen)采用除以二取余直到商
19
精品文档
2.5.1 算术运算符与算术表达式
⒈ 基本的算术运算符:
14
精品文档
3.字符常量
字符常量是用单撇号括起来的单个字符或转义字符,
如: ‘a’, ‘9’, ‘&’, ‘\n’, ‘\’’, ‘\101’。
字符常量的值为该字符的ASCII码值,如 ‘a’值为97, ‘\n’
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档