C++复习题

合集下载

《C语言》总复习题

《C语言》总复习题

《C语言》课程综合复习资料一、单项选择1. 若有如下语句: int *p1,*p2; 则其中int所指的是(D )A. p1的类型B. *p1和*p2的类型C. p2的类型D. p1和p2所能指向变量的类型2. 下列程序段的输出结果是(C )x=9; while(x>7) {printf(“*”);x--;}A. ****B. ***C. **D. *3. 下列变量的定义及赋值正确的是(C)A. int i=0;j;B. char c=”A”;C. double x,y,z; x=y=z=100;D. float a=b=100;4. 设有语句:int x=10;x = x -= x - x;,则执行语句后,x的值为(B )A. 30B. 20C. 10D. 405. 设有语句:float x=1,y; y=x 3/2; 则y的值是(C )A. 1B. 2C. 2.0D. 2.56. 设有如下定义和执行语句,其输出结果为(A )int a=3,b=3; a = --b + 1; printf(“%d %d”,a,b);A. 3 2B. 4 2C. 2 2D. 2 37. 设有两字符串“Beijing”、“China”分别存放在字符数组str1[10],str2[10]中,下面语句中能把“China”连接到“Beijing”之后的为(C )A. strcpy(str1,str2);B. strcpy(str1, “China”);C. strcat(str1,“China”)D. strcat(“Beijing”,str2);8. 设有定义语句:char str[][20]={""Hello"",""Beijing""},*p=str; 则printf(""%d\n"",strlen(p+20)); 输出结果是(C )A. 0B. 5C. 7D. 209. 设有定义int a[ ]={1,5,7,9,11,13},*p=a 3;则*(p-2),*(a 4)的值是(A )C. 5 9D. 有错误10. 设有定义:int x=0,y=1,z=1;则运行表达式:x=y >z--后,x,y,z的值分别是(D )A. 1,1,1B. 1,2,0C. 0,1,1D. 0,2,011. 设有定义:int x=12,n=5; 则表达式x%=(n%2) 的值为(A )A. 0B. 1C. 2D. 312. 设有定义int a=3,b=4,c=5; ,则以下表达式中,值为0的表达式是(D )A. a&&bB. a<=bC. a||b c&&b-cD. !((a<b)&&!c||1)13. 设有定义int a[ ]={1,5,7,9,11,13}, *p=a 3; 则*(p-2) , *(a 4) 的值是(A )A. 5 11B. 1 9C. 5 9D. 有错误14. 设有定义char *p=“abcde\0fghjik\0”; 则printf(“%d\n”,strlen(p));输出结果是(D )A. 12B. 15C. 6D. 515. 设有int x=11;则表达式(x *1/3)的值是(A )A. 3B. 4C. 11D. 1216. 设a=3,b=4,c=-5,则逻辑表达式:a || b c && b==c 的值是(A )A. 1B. 0C. 非0D. 语法错17. 若有以下定义:int a[10],*p=a; 则*(p+3)表示的是(B )A. 元素a[3]的地址B. 元素a[3]的值C. 元素a[4]的地址D. 元素a[4]的值18. 若有以下定义:char s[20]= "programming",*ps=s;则不能代表字符g的表达式是(A )A. ps 3D. ps =3,*ps19. C语言中,函数返回值的类型是由(D )A. return语句中的表达式类型决定B. 调用函数的主调函数类型决定C. 调用函数时的临时类型决定D. 定义函数时所指定的函数类型决定20. C语言提供的合法关键字是(D )A. swicthB. chaC. CaseD. default二、读程序题1. "#include <stdio.h>void main(){ int a=4,x=3,y=2,z=1;printf(""%d\n"",(a<x ? a : z<y ? z : x)); }"2. "#include <stdio.h>void main(){ int x=12,y=0;if(x>=0){ if(x>0) y=10; }else y=-10;printf(“y=%d\n”,y);}"3. "#include <stdio.h>void main(){ int k=1;switch(k){ case 0: printf(""A""); break;case 1: printf(""B"");case 2: printf(""I"");case 3: printf(""G""); break;default: printf(""E"");}}"4. "#include <stdio.h>#define S(x) x*xvoid main(){int a,k=3,m=1;a=S(k+m);printf(""%d"",a);}"5. "#include <stdio.h>int fun(int a, int b){ if(a>b) return(a);else return(b);}void main(){ int x=3, y=8, z=6, r;r=fun(fun(x,y), 2*z);printf(""%d\n"", r);}"6.#include <stdio.h&>void main(){ int k=4,n=0;for(;n<k;){ n++;if(n%3!=0) continue;k- -;}printf(""%d,%d\n"",k,n);}三、编程题1. 写一个判断素数的函数。

c语言习题

c语言习题

二.填空题 1.在C语言中(以16位PC机为例),一个char数据在内存中所占字节数为 _1B__,其数值范围为 0~127 ;一个int数据在内存中所占字节数为 2B ,其数值范围为-32768~32767 ;一个long数据在内存中所占字节 数为 4B ,其数值范围为 -2147483648~2147483647 ;一个float 数据在内存中所占字节数为 4B ,其数值范围为 -3.4*1038~-3.4*10-38, 3.4*10-38~3.4*1038 。 2.C语言的标识符只能由大小写字母,数字和下划线三种字符组成,而且 第一个字符必须为 字母 。 3.字符常量使用一对 单引号 界定单个字符,而字符串常量 使用一对 双引号 来界定若干个字符的序列。
3.函数体一般包括( 变量定义序列 ) 和( 执行语句序列
二.判断题 1.一个C程序的执行总是从该程序的main函数开始,在main函数最后结 束。 【 √ 】 2.main函数必须写在一个C程序的最前面。 【 × 】 3.一个C程序可以包含若干的函数。【 √ 】 4.C程序的注释部分可以出现在程序的任何位置,它对程序的编译和运 行不起任何作用。但是可以增加程序的可读性。【 √ 】 5.C程序的注释只能是一行。【 × 】 6.C程序的注释不能是中文文字信息。【 × 】 8.可以使用Turbo C来编译和连接一个C程序。【 √ 】 9.可以使用Turbo C来运行一个C程序。【√ 】 10.可以使用Turbo C来实时调试(即动态调试)一个C程序。【 √ 】 三.简答题 1. 写出一个C程序的基本结构。 预处理命令序列 void main() { 变量定义序列 执行语句序列 } 2. 简要叙述使用Turbo C 2.0编译和运行一个程序的步骤。 1)编辑源程序,以扩展名.c存盘。

C期末考试复习题(答案)

C期末考试复习题(答案)

C期末考试复习题(答案)C语言复习题一、单项选择题1、C语言源程序文件经过C编译程序编译连接之后生成一个后缀为( C )的文件。

A).c B).obj C).exe D).bas2、)完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为( B )A)连接、编译B)编译、连接 C)连接、运行D)运行3、关于C语言的叙述中,不正确的是(D)A)C程序可由一个或多个函数组成B)C程序必须包含一个main ()函数C)C程序的基本组成单位是函数D)注释说明只能位于一条语句的后面4、一个C程序的执行是从(A )。

A) 本程序的main函数开始,到main函数结束B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C) 本程序的main函数开始,到本程序文件的最后一个函数结束D) 本程序文件的第一个函数开始,到本程序main函数结束5、以下正确的叙述是(C )A) 在C语言中,main函数必须位于文件的开头B) C语言每行中只能写一条语句C) C语言本身没有输入、输出语句D) 对一个C语言进行编译预处理时,可检查宏定义的语法错误6、下列选项中,不能用作标识符的是( D)。

A) _1234_ B) _1_2 C) int_2_ D) 2_int_7、常数的书写格式决定了常数的类型和值,0x1011是( C )A)8进制整型常量B)字符常量 C)16进制整型常数D)2进制整型常数8、以下4组用户定义标识符中,全部合法的一组是( A )A)_total clu_1 sum B)if -max turbC)txt REAL 3COM D)int k_2 _0019、_( D )是合法的用户自定义标识符。

A) b-b B)float C)123a D) _isw10、以下选项中不正确的整型常量是( C )。

A) 12L B) -10 C) 1,900 D) 123U11、表达式( C )的值是0。

C语言复习题(含答案)

C语言复习题(含答案)
int a,b,c;
a=10;b=50;c=30;
if (a>b) c=%d”,a,b,c);
A、a=10,b=50,c=10B、a=10,b=30,c=10
C、a=50,b=30,c=10 D、a=50,b=30,c=50
14、在C语言中,当while语句构成的循环的条件为D时,结束循环。
A、5 B、3
C、101 D、11
22、当说明一个结构体变量时系统分配给它的内存是A。
A、各成员所需内存量的总和
B、结构中第1个成员所需内存量
C、成员中占内存量最大者所需的容量
D、结构中最后一个成员所需内存量
23、使用共用体union的目的是A。
A、将一组数据作为一个整体,以便与其中的成员共享同一存空间
A、ASCII代码值B、BCD代码值
C、内码值D、十进制代码值
12、以下程序段C。
int x=2,y=3;
printf( x>y? ”****=%d”: “###y=%d”,x,y);
A、输出控制格式错误B、输出为:****x=2
C、输出为:###y=2D、输出为:###y=3
13、以下程序的输出为B。
for (I=0; I<4; I++) a[I]=*p++;
printf(“%d\n”,a[2]);}
上面程序的输出结果是B。
A、6 B、8 C、4 D、2
19、在C语言中,如果对函数类型未加显示说明,则函数的隐含类型是A。
A、intB、charC、voidD、double
20、在C语言中,当函数调用时A。
{int I,s,n;
s=1;
printf(“enter n: “);

c语言复习题

c语言复习题

A. 6 B. 7 C. 11 D. 12
(10) 合法的数组定义是( )。 A
A. char a[ ]= "string " ; B. int a[5] ={0,1,2,3,4,5}; C. char a= "string " ; D. char a[ ]={0,1,2,3,4,5}
A. int a[7]; B. #define N 5 long b[N]; C. char c[5]; D. int n,d[n];
(4) 对字符数组进行初始化,( )形式是错误。 B
A. char c1[ ]={'1', '2', '3'}; B. char c2[ ]=123; C. char c3[ ]={ '1', '2', '3', '\0'}; D. char c4[ ]="123";
2、若x和n都是int型变量,且x的初值为12,n的初值为5,则计算表达式x%=(n%=2)后x的值为 0 。
3、设 c='w',a=1,b=2,d=-5, 则表达式 'x'+1>c, 'y'!=c+2, -a-5*b<=d+1, b==a=2的值分别为 1 、 0 、 1 、 1 。
(8) 设有定义:char s[12] = "string" ; 则printf( "%d\n",strlen(s)); 的输出是( )。 A
A. 6 B. 7 C. 11 D. 12
(9) 设有定义:char s[12] = "string"; 则printf("%d\n ", sizeof(s)); 的输出是( )。 D

C复习题

C复习题

一、填空题(每空2 分,共 20 分)1.数据结构分为逻辑结构与()。

2.在面向对象方法中,对象之间进行通信的构造称为()。

3.衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准,其()是度量一个模块功能强度的一个相对指标。

4.一名学生只能住一间宿舍,一间宿舍可住多名学生,则实体“宿舍”与实体“学生”的联系属于()的联系。

5.数据模型包括数据结构、()和数据条件。

6.若有定义:int a=10,b=8,c=4;然后顺序执行下列语句后,变量a中的值是()。

c=(b-=(a-4));a=(c%2)+(b-1);1.C语言中,用关键字()定义基本整型变量,用关键字(),定义单精度实型变量,用关键字()定义字符型变量。

2.表达式3*20/4%10的计算结果是()。

3.复合语句是将多个语句用()括起来组成一个语句。

4.程序中使用putchar( )函数和getchar( )函数,在程序的开头必()。

5.C语言的预处理语句以()开头。

6.goto语句为(),当程序执行到该语句时,转向指定位置执行。

7.return语句的功能是使程序控制从被调用函数返回到()中。

1.一个算法应具有的特点有:()、()、有零个或多个输入、有一个或多个输出、有效性。

2.在程序执行过程中,其值不发生改变的量称为(),其值可变的量称为()。

3.若有定义:int m=5,y=2;则执行表达式y+=y-=m*=y后的y值是()。

4.在三种正规循环中,当条件表达式的值为()时,就结束循环。

5.C语言中函数的参数分为()和()。

1.程序的三种基本结构为()、()和()。

2.在C语言中,用()表示语句的结束。

3.语句printf("%%d%d",123);将输出:()。

4.逻辑运算的结果值是()或()。

5.数组 int a[3][4];共定义了()个数组元素。

6.在C语言中,正确的标识符是由()组成的,且由()开头的。

c语言复习题(49题)

c语言复习题(49题)

以下作业编程练习,每个主题至少选择4道题作为作业题(各主题中所列题目不足4题的按实际数量选做)。

每次作业计2分,作为平时成绩。

另外,此练习题作为C 语言上机考试的考题来源之一(共49题)。

一、 顺序结构程序设计========================================1 已知三角形的三边长为a ,b ,c ,计算三角形面积的公式为: area = ))()((c s b s a s s ---,s =)(21c b a ++ 要求编写程序,从键盘输入a ,b ,c 的值,计算并输出三角形的面积。

2 编程从键盘输入圆的半径r ,计算并输出圆的周长和面积。

二、 选择结构程序设计==========================================1 从键盘任意输入一个年号,判断它是否是闰年。

若是闰年,输出“Yes ”,否则输出“No ”。

已知符合下列条件之一者是闰年:能被4整除,但不能被100整除。

能被400整除。

2 通过键盘输入一个字符,判断该字符是数字字符、大写字母、小写字母、空格还是其他字符。

3 华氏和摄氏温度的转换公式为C =5/9×(F -32)。

其中,C 表示摄氏温度,F 表示华氏温度。

要求:华氏0℉~300℉,每隔20℉输出一个华氏温度对应的摄氏温度值。

4 编程判断输入整数的正负性和奇偶性。

5 编程计算分段函数e 1exx y -⎧⎪=⎨⎪-⎩ 000x x x >=< 输入x ,打印出y 值。

流程图如图1-2所示。

6 输入三角形的三条边a ,b ,c ,判断它们能否构成三角形。

若能构成三角形,指出是何种三角形(等腰三角形、直角三角形、一般三角形)。

7 在屏幕上显示一张如下所示的时间表:*****Time*****1 morning2 afternoon3 nightPlease enter your choice:操作人员根据提示进行选择,程序根据输入的时间序号显示相应的问候信息,选择1时显示"Good morning", 选择2时显示"Good afternoon", 选择3时显示"Good night",对于其他选择显示"Selection error!",用switch 语句编程实现。

C语言复习题

C语言复习题

1. 若有定义:long int j,*p;,则操作j=(long int)p;是合法操作。

√ ×正确2. 设有说明int(*ptr)[M];其中ptr是指向含有M个整型元素的一维数组的指针。

()√ ×正确3. 对同一类型的两个指针变量而言,一个变量向另外一个变量赋值的结果是使得两个指针指向同一个对象。

√ ×正确4. 定义一个指向某种类型函数的指针后,就可以讲任何函数的首地址赋给这个指针变量。

√ ×错误正确答案为×5. 可以将一个整型指针变量的值赋给一个实型指针变量,但可能引起符号位扩展。

√ ×错误正确答案为×6. 可以将一个实型指针变量的值赋给一个整型指针变量,但可能影响指针的精度。

√ ×错误正确答案为×7. 由于指针的数据类型实际上是指定指针所能指向对象的数据类型,所以不通数据类型的指针变量不能相互赋值。

√ ×正确8. 函数中使用指针变量作为形式参数,就有可能在被调函数中操作主调函数中的实参。

√ ×正确9. 若有定义:int a[5],*p;,则操作p=a;是合法的操作。

√ ×正确10. 若有定义:int a[5],*p;,则操作p=&a[2];是合法的操作。

√ ×正确11. 若有定义:int a[5][5],*p;,则操作p=a;是合法操作。

√ ×错误正确答案为×12. 若有定义:int a[5][5],*p;,则操作p=*a;是合法操作。

√ ×正确13. 若有定义:int a[5][5],*p;,则操作p=a[0];是合法操作。

√ ×正确14. 若有定义:int a[5][5],*p;,则操作p=&a[0][0];是合法操作。

√ ×正确15. 若有定义:int a[5][5],(*p)[5];,则操作p=a;是合法操作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、单项选择题(本大题共20小题,每小题1分,共20分)1. 静态成员函数没有()A. 返回值B. this指针C. 指针参数D. 返回类型2. 在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是()A. 友元函数B. 虚函数C. 构造函数D. 析构函数3. 所有在函数中定义的变量,都是()A. 全局变量B. 局部变量C. 静态变量D. 寄存器变量4. 假定AB为一个类,则执行“AB a(2), b[3],*p[4];”语句时调用该类构造函数的次数为()A. 3B. 4C. 5D. 95. 如果表达式++a中的“++”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为()A. a.operator++(1)B. operator++(a)C. operator++(a,1)D. a.operator++()6. 已知f1和f2是同一类的两个成员函数,但f1不能直接调用f2,这说明()A. f1和f2都是静态函数B. f1不是静态函数,f2是静态函数C. f1是静态函数,f2不是静态函数D. f1和f2都不是静态函数7. 一个函数功能不太复杂,但要求被频繁调用,则应把它定义为()A. 内联函数B. 重载函数C. 递归函数D. 嵌套函数8. 解决定义二义性问题的方法有()A. 只能使用作用域分辨运算符B. 使用作用域分辨运算符或成员名限定C. 使用作用域分辨运算符或虚基类D. 使用成员名限定或赋值兼容规则9. 在main函数中可以用p.a的形式访问派生类对象p的基类成员a,偶中a是()A. 私有继承的公有成员B. 公有继承的私有成员C. 公有继承皀保护成员D. 公有廧承的公有成员10. 在C++中不返回任何????数应该说明为()A. intB. charC. voidD. double11. 若Sample类中的一个成员函数说明如下:void set(Sample& a),则Sample& a的含义是()A. 指向类Sample的名为a的指针B. a是类Sample的对象引用,用来作函数Set()的形参C. 将a的地址赋给变量SetD. 变量Sample与a按位与的结果作为函数Set的参数12. 要实现动态联编必须()A. 通过成员名限定来调用虚函数B. 通过对象名来调用虚函数C. 通过派生类对象来调用虚函数D. 通过对象指针或引用来调用虚函数13. 在派生类中定义虚函数时,可以与基类中相应的虚函数不同的是()A. 参数类型B. 参数个数C. 函数名称D. 函数体14. 实现两个相同类型数加法的函数模板的声明是()A. add(T x,T y)B. T add(x,y)C. T add(T x,y)D. T add(T x,T y)15. 下列不是描述类的成员函数的是()A. 构造函数B. 析构函数C. 友元函数D. 拷贝构造函数16. 继承机制的作用是()A. 信息隐藏B. 数据封装C. 定义新类D. 数据抽象17. 已知:p是一个指向类A数据成员m的指针,A1是类A的一个对象。

如果要给m赋值为5,正确的是()A. A1.p=5;B. A1->p=5;C. A1.*p=5;D. *A1.p=5;18. 如果采用动态多态性,要调用虚函数的是()A. 基类对象指针B. 对象名C. 基类对象D. 派生类名19. 若有以下定义,则说法错误的是()int a=100,*p=&a;A. 声明变量p,其中*表示p是一个指针变量B. 变量p经初始化,获得变量a的地址C. 变量p只可以指向一个整型变量D. 变量p的值为10020. C++语言建立类族是通过()A. 类的嵌套B. 类的继承C. 虚函数D. 抽象类二、填空题(本大题共20小题,每小题1分,共20分)1. 假设int a=1,b=2;则表达式(++a/b)*b--的值为___。

2. 复制构造函数使用___作为形式参数。

3. 通过C++语言中的___机制,可以从现存类中构建其子类。

4. 静态成员函数、友元函数、构造函数和析构函数中,不属于成员函数的是___。

5. 在下面的类定义中,私有成员有___。

class Location{int X,Y;protected:int zeroX,zerxY;int SetZero(intzeroX, intzeroY);private:int length,height;public:void init(int initX,int initY);int GetX();int GetY();};6. 在C++程序设计中,建立继承关系倒挂的树应使用___继承。

7. C++支持的两种多态性分别是___多态性和运行多态性。

8. C++中语句const char * const p=“hello”;所定义的指针p和它所指的内容都不能被___。

9. 在C++中,定义虚函数的关键字是___。

10. 采用私有派生方式,基类的public成员在私有派生类中是___成员。

11. 对赋值运算符进行重载时,应声明为___函数。

12. 在C++中有两种参数传递方式即值传递和___传递。

13. 预处理命令以___符号开头。

14. 在构造函数和析构函数中调用虚函数时采用___。

15. C++是通过引用运算符___来定义一个引用的。

16. 如果要把类B的成员函数void fun()说明为类A的友元函数,则应在类A中加入语句___。

17. 如果要把PI声明为值为3.14159类型为双精度实数的符号常量,该声明语句是___。

18. 在C++四个流对象中,___用于标准屏幕输出。

19. 执行下列代码int a=32;double c=32;cout.setf(ios::hex);cout<<"hex:a="<<a<<",c="<<c<<endl;cout.unsetf(ios::hex);程序的输出结果为___。

20. 已知有20个元素int类型向量V1,若用V1初始化为V2向量,语句是___。

三、改错题(本大题共5小题,每小题4分,共20分)1. #include <iostream.h>class A{ private:public:A(int i){x=i;}A(){x=0;}friend int min(A&,A&);};int min(A & a,A &b){ return (a.x>b.x)?a.x:b.x; }void main(){ A a(3),b(5);cout<<a.min(a,b)<<endl;}2. #include <iostream.h> class shapevirtual int area(){return 0;}};class rectangle:public shape{public:int a, b;void setLength (int x, int y) {a=x;b=y;} int area() {return a*b;}};void main(){rectangle r;r.setLength(3,5);shape s1,*s2=&r;cout <<r.area() <<endl;s2=s1;cout <<s2.area()<<endl;}3. 下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。

#include <iostream.h>template <class T>class A{private:T x,y,s;public:A(T a,T b){x=a,y=b;s=x+y;}void show(){cout<<"x+y="<<s<<endl;}};void main(){ A <int>add(10,100);add.show();}4. 生成具有n个元素的动态数组。

#include <iostream.h>void main(){int n;cin>>n;int a[n];a[0]=2;cout<<a[0]<<endl;}5. #include <iostream.h>class Apublic:virtual void fun()=0;A(int a){i=a;}};class B:public A{int j;public:void fun(){cout<<"B::fun()\n"; }B(int m,int n=0):A(m),j(n){} };void main(){A *pa;pa=&b;}四、完成程序题(本大题共5小题,每小题4分,共20分)1. 在下面程序横线处填上适当字句,以使该程序执行结果为:50 4 34 21 100 7.1 8.1 9.1 10.1 11.1#include <iostream.h>template <class T>void f (__________){__________;for (int i=0;i<n/2;i++)t=a[i], a[i]=a[n-1-i], a[n-1-i]=t;}void main (){int a[5]={10,21,34,4,50};double d[6]={11.1,10.1,9.1,8.1,7.1}; f(a,5);f(d,6);for (int i=0;i<5;i++)cout <<a[i]<< "";cout <<endl;for (i=0;i<6;i++)cout << d[i] << "";cout << endl;}2. 完成下面类中成员函数的定义。

#include <iostream.h>#include <iomanip.h>class Arr{protected:float *p;int n;//数组大小(元素个数)public:Arr(int sz=10){ n=sz;p=new float[n];}~Arr(void){_________}int Getn(void) const{return n;}float & operator[](int i) {________}void Print();};void Arr::Print(){int i;for(i=0;i< this->Getn();i++) {if (i%10==0)cout << endl;cout<<setw(6)<<p[i];}cout<<endl;}void main(){Arr a(20);for (int i=0;i<a.Getn();i++)a[i]=i* 2;a.Print();}3. 下面是一个输入半径,输出其面积和周长的C++程序,在下划线处填上正确的语句。

相关文档
最新文档