《2022年电大面向对象程序设计期末复习题 .pdf》由会员分享,可在线阅读,更多相关《2022年电大面向对象程序设计期末复习题 .pdf(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 / 11 一、单选题,在括号内填写正确的选项编号 每小题 2 分,共 20 分) 1.对象是构成现实世界的一个独立单位,它具有自己的静态特征和( )特征。A.颜色 B.动态 c.状态 D 重量2.使用 JDK 编译 Java 程序时使用的命令是 ( )。A. java B. javac C. appletviewer D javadoc 3.包含 主方法的类被称为主类,主方法的存储控制属性应定义为 ()。A. final B. abstract C. short Do static 4.在类 的定义中,若需要把一个属性或方法定义为类成员,而不是实例成员,则使用的修饰符为( )。A. con
2、st B. final C. static D public 5.JaV3 语言中规定的转义字符,以()字符作前缀。A. B.I C. / D. 6.把对象的属性和服务组合成一个独立的整体,尽可能隐蔽其内部的细节,这称为对象的()。A.封装性 B.多态 性 C.继承性 D.开放性7.具有 ()访问权限的成员能够被本类和其他任何类中的成员所访问。A. public B. protectd C. private D.缺省8.在类定义首部的语法格式中, ()不能作为其中的修饰符。A. public B. protectd C. extends D. abstract 9.下面的关键字 ( )与异常处
3、理无关。A. throwB. throws C. import D. finally 10.下面 ( )既可以作为流的数据源,又可以作为流的目的地。A.键盘 B.磁盘文件c.显示器 D.扫描仪二、是非判断题,在每小题后面括号内打上对号、/表示叙述正确,打上叉号表示叙述错误11. Java既支持类的单继承,又支持类的多重继承。 ( ) 12.在一个派生类中,能够定义与上层父类中的成员具有相同名称的成员。 ( ) 13.派生类可以直接访问从父类中继承下来的所有成员。 ( ) 14.在 Java语言中,可以把实现了一个接口的类对象,赋给这个接口的引用对象。 ( ) 15.在一个抽象类中,不允许包含任
4、何成员变量和构造方法。 ( ) 16.接口中的成员方法都默认具有pu blic 和 abstract 的修饰属性。 ( ) 17.在 Java语言中,一个类不能被定义在另一个类之中,类与类之间没有包含关系。 ( ) 18.在 Java语言中,声明包语句可以出现在一个Java程序文件的任何位置。 ( ) 19.向量类 Vector 中的 size()方法能够返回调用向量中当前保存的元素的个数。( ) 20. FileWriter 类的构造函数的参数不是一个文本文件名。 ( ) 21.输入流类 (InputStream) 和输出流类 ( OutputStream) 是用来处理字符流的抽象基类。 (
5、) 22. DatalnputStream 类的文件流能够从二进制文件中读出基本类型的数据。 ( ) 23. 在图形用户界面中,原子组件是不能同用户进行交互的组件。 ( ) 24. 在 Java程序中,既允许创建单个线程,也允许创建多个线程。 ( ) 25.如果在派生类的构造方法的定义中没有明确调用父类的构造方法,则系统在执行派生类的构造方法时将隐含调用父类的元参构造方法。( ) 三、填空题,在横线上填写正确的内容(每空 1 分,共 15 分 26.Java 语言中的逻辑类型的关键字为,它的两种取值分别为关键宇 true 和 false。27. 用于修饰类的成员具有公有访问属性的关键字为28.
6、 假定整数变量x 的值为 10,则执行y=2 * x+ 赋值后, y 的值为。29. 类中的方法不需要给定返回值类型。30. 当类中的成员定义采用static 关键宇修饰时,则称该成员为类的 (静态 /实例 ) 成员。31.类中的成员方法也可以使用关键字进行修饰,表示该方法不能被子类所重新定义。32.在方法调用的参数传递中,若为 (按值 /引用 ) 传递,方法体中对形参内容的修改不影响实参的值。33. 定义一个终结类时需要在类首部的关键字class前使用修饰符。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 11 页2 / 11 34.
7、 假定一个字符串对象x 的值为 abc ,则 x. concat(def 勺的值为。35. 假定要访问维数组 X 中的第 k 个元素,则对应的元素 (下标变量 )表示为。36. 基本数据类型boolean 对应的包装类为。37.在 Java语言中,程序运行时发生的运行错误又分为致命性的严重错误和非致命性的-般错误两种,异常属于错误。38.Java 语言中的System. out 表示标准 (输入 /输出 ) 流。39. 对于原子组件,根据功能的不同,可以被分为类。40. 每个线程具有四种基本状态 :就绪状态、死亡状态和阻塞状态。四、写出下列每个程序编译和运行后的输出结果41. public c
8、lass XXK public static void main(String args) int x , y=O 。 for(x=l 。 xlO 。 x+十 ) ifCx%2=0) y+=x祷 x。System. out. println(y= +y) 。42. public class XXK2 private final int a 。public XXK2(int a) this. a=a。) public int f1 (int x) if(x%2= =1) return a+x。else return a-x。public static void main(String args)
9、 XXK2 x=new XXK2(3)。int y= x. f1(l() 。System. out. println(y=+y)。43. class Rectangle private int a ,b 。public RectangleCint aa , int bb) a=aa。 b=bb。 public int areaO return a势 b。 public int girthO return 2券(a 十 b) 。 public class XXK3 extends Rectangle private Int c。public XXK3(int aa , int bb , int
10、cc) super(aa,bb)。 c=cc。 public int volumeO return areaO赞 c。 public int arrisLengthO return 2替 girthO+4 祷 c。 public static void main(Stri吨口 args) XXK3 x=new XXK3 (l ,3,5) 。int yl = x. volumeO 。int y2 = x. arrisLength() 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 11 页3 / 11 System. Olit. pri
11、ntln(y1 +, +y2)。44. public class XXK4 public static void main(String args) int 口丁 a= 凹,5,剖, 3 , 6,9,4 ,5,6 。int 8=0 。orCint i=O 。 ia.length 。 i 十十) or(int j=O 。 jai.length 。 j+ 十) 自+ = aijJ 。System.out.printirk5=十 s) 45. class ABC inta ,b。public ABCCint a , int b) this. a=的 this. b=b。 public int com
12、pareToCABC x) return a祷 b-x. a祷 x. b。 public class XXK5 public static void mainCStringJ args) int JJd=3 ,肘,饨, 6 ,5 ,6 ,2 ,9 ,饵,7 。ABC 口 arznew ABC5j 。int i,k=O 。for (i=O 。 id.length 。 i+) ariJ= new ABCCdiJOJ,d i 丁 lJ ) 。forCi=l 。 iar.length 。 i+) if(ari. compareToCark.O) k=i。System. out. printlnCk=
13、+ k) 。一、单选题,在括号内填写正确的选项编号1. B 2.B 3.D 4.C 5.D 6.A 7.A 8.B 9.C 10.B 二、是非判断题,在每小题后面括号内打上对号J表示叙述正确,打上叉号表示叙述错误11. X(错 ) 12. .J(对) 13. X( 错) 14. .J(对) 15. X( 错) 16. .J(对) 17. X( 错 ) 18. X( 错) 19. .J(对) 20. X( 错) 21. X( 错 ) 22. .J(对) 23. X( 错) 24.、 J(对) 25. .J(对) 三、填空题,在横线上填写正确的内容精选学习资料 - - - - - - - - -
14、名师归纳总结 - - - - - - -第 3 页,共 11 页4 / 11 26. boolean 27. public 28. 20 29. 构造 30.静态 31. final 32. 按值 33. final 34. abcdef 35. xk一 lJ 36. Boolean 37.一般 38.输出 39. 3 40. 运行状态四、写出下列每个程序编译和运行后的输出结果41. y=120 42. y= 一 7 43. 15 , 36 44. s=48 45. k=2 一、单项选题1设 x 和 y 均为 bool 量,则 x & y为真的条件是 ( )。A. 它们均为真 B. 其中一个为
15、真 C. 它们均为假 D. 其中一个为假2. 在下面循环语句中循环体执行的次数为()。 int i=0,s=0。 while(sGetValue() D. x.GetValue()9. C+的继承性允许派生类继承基类的()。 A. 部分特性,并允许增加新的特性或重定义基类的特性 B. 部分特性,但不允许增加新的特性或重定义基类的特性 C. 所有特性,并允许增加新的特性或重定义基类的特性 D. 所有特性,但不允许增加新的特性或重定义基类的特性10. 假定 AB为一个类,则执行“AB x 。”语句时将自动调用该类的( )。 A. 带参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值重载
16、函数11. 定义 p 并使 p 指向动态空间中的包含30 个整数的数组所使用的定义语句为()。 A. int *p=new int30。 B. int *p=new int(30)。 C. int *p=new 30。 D. *p=new int30。12. 假定有“ struct BOOKchar title40。 float price。 。 BOOK *book=new BOOK。”,则正确的语句为()。A. strcpy(book-title,” Wang Tao” ) 。 B. strcpy(book.title,” Wang Tao” ) 。 C. strcpy(*book.tit
17、le,” Wang Tao” ) 。 D. strcpy(*book)-title,” Wang Tao” ) 。13. 假定有定义“int b10。 int *pb。”,则不正确的赋值语句为()。 A. pb=b 。 B. pb=&b0 。 C. pb=new int 。 D. pb=b5 。14. 假定指针变量p 定义为“ int *p=new int(100)。”,要释放p 所指向的动态内存,应使用语句()。 A. delete p。 B. delete *p。 C. delete &p。 D. delete p。 15. 软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误
18、或不足时进行相应的软件更新的难易程度叫做软件的()。 A. 可维护性 B. 可复用性 C. 兼容性 D. 正确性 16.若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字()放在函数原型或函数头的前面。A. in B. inline C. inLine D. InLiner 17. 在关键字public后面定义的成员为类的()成员。 A. 私有 B. 公用 C. 保护 D. 任何18. 假定AA 为一个类,a() 为该类公有的函数成员,x 为该类的一个对象,则访问x 对象中函数成员a() 的格式为()。 A. x.a B. x.a() C. x-a D. x-a() 19. 假定 A
19、A为一个类, int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为()。 A. int AA:a() B. int AA:a() C. AA:a() D. AA:int a() 20. 在多文件结构的程序中,通常把类的定义单独存放于()中。 A. 主文件 B. 实现文件 C. 库文件 D. 头文件二、填空题精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 11 页5 / 11 1. 假定 x=5,y=6,则执行表达式y+=x- 计算后, x 和 y 的值分别为 _ 和_ 。2. 执行 char *p=new cha
20、r( a ) 操作后, p 所指向的数据对象的值为_。3. 变量 v 定义为“ double v=23.4。”,要使指针pv 指向 v,则定义pv 的语句为 _ 。4. 若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上_ 和两个冒号分隔符。5. 假定用户只为类AB 定义了一个构造函数AB(int aa, int bb=0) a=aa。 b=bb 。 ,则定义该类的对象时,其实参表中至少带有 _ 个实参。6假定用户没有给一个名为AB的类定义析构函数,则系统为其定义的析构函数为_。7. 一个二维字符数组a1020能够存储 _个字符串,每个字符串的长度至多为_
21、。8. 重载一个函数的条件是:该函数必须在参数的个数或参数对应的_ 上与其它同名函数不相同。 9. 一个指针类型的对象占用内存的_个字节的存储空间。10. 假定一个数据对象为int*类型,则指向该对象的指针类型为_。 11假定 p 所指对象的值为25,p+1 所指对象的值为42,则 *+p 的值为 _。 12假定 p 所指对象的值为25,p+1 所指对象的值为42,则执行 *(p+) 或*p+运算后, p 所指对象的值为_。13. 一个数组的数组名实际上是指向该数组_ 元素的指针,并且在任何时候都不允许_ 它。14重载一个函数的条件是:该函数必须在参数的_或参数对应的_上与其它同名函数不相同。
22、15. 指针变量pv 和 pc 定义为“ void *pv =” Hello, word!” 。 char *pc。”,要将pv 值赋给 pc,则正确的赋值语句是 pc=_pv 。16. 若 p 指向 x,则 _与 x 的表示是等价的。17. 假定 p 为指向二维数组int d46的指针,则p 的类型为 _。18. 若 y 是 x 的引用,则对y 的操作就是对_的操作。19. 执行 char *p=new char( a ) 操作后, p 所指向的数据对象的值为_。20. 执行 _操作将释放由p 所指向的动态分配的数据空间。三、程序填充题,根据题意在横线上填写合适的内容。2、已知一维数组类AR
23、RAY 的定义如下,ARRAY 与普通一维数组区别是:其重载的运算符 要对下标是否越界进行检查。class ARRAY int *v。 /指向存放数组数据的空间int s。 /数组大小public: ARRAY(int a, int n)。 ARRAY()delete v。 int size() return s。 int& operator(int n)。 。_(1)_ operator(int n) / 的运算符成员函数定义 if(n0 | _(2)_) cerr下标越界! 。 exit(1)。 return _(3)_。 (1)(2)(3) 3类 A的定义class A char *a。
24、public: A() a=NULL 。 A(char *aa) a=_(1)_ charstrlen(aa)+1。strcpy(a,aa)。 _(2)_ /定义析构函数,删除a 所指向的动态存储空间 。(1) (2) 4. 已知一个类的定义如下:#include class AA int a10。int n。public: void SetA(int aa, int nn)。 /用数组 aa 初始化数据成员a, /用 nn 初始化数据成员n 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 11 页6 / 11 int MaxA()。
25、/从数组 a 中前 n 个元素中查找最大值void SortA()。 /采用选择排序的方法对数组a 中前 n 个元素 /进行从小到大排序 void InsertA()。/ 采用插入排序的方法对数组a 中前 n 个元素进行从小到大排序void PrintA()。 /依次输出数组a 中的前 n 个元素 。该类中 MaxA() 函数的实现如下,请在标号位置补充适当的内容。int _(1)_ int x=a0。for(int i=1。 ix) _(2)_。_(3)_ 。 (1) (2) (3) 四、理解问答题,写出程序运行结果或程序(或函数)所能实现的功能。1. #include void main(
26、) int i,s=0。 for(i=2。i=30 。i+=2) s+=i*i。 couts=sendl。 函数功能:2. #include double f1(int n) double sign=1,s=1。for(int i=2。ia 。coutf1(a)endl。 函数功能:3.#include class A int a,b。 public: A() a=b=0。 A(int aa, int bb) a=aa。 b=bb 。 int Sum() return a+b。 int* Mult() int *p=new int(a*b)。 return p。 。 void main() A
27、 x(4,5), *p。 p=new A(2,3)。 coutx.Sum() *(x.Mult()endl。 coutSum() Mult()endl。 运行结果:4. #include void main() int a10=76,83,54,62,40,75,90,92,77,84。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 11 页7 / 11 int b4=60,70,90,101。int c4=0。for(int i=0。i=bj) j+。cj+。 for(i=0。 i4 。i+) coutci 。coutendl 。 运
28、行结果:五、编程题根据下面类中拷贝构造函数的原型写出它的类外定义。 class Array int *a。 /指向动态分配的整型数组空间 int n。 /记录数组长度 public: Array(int aa, int nn)。 /构造函数,利用aa 数组长度nn 初始化n, /利用 aa数组初始化a 所指向的数组空间 Array(Array& aa)。 /拷贝构造函数 。参考答案一、单选题1. A 2. C 3. B 4. C 5. D 6.D 7.A 8.D 9. C 10. B 1 1. A 12. A 13.D 14. A 15. B 16. B 17. B 18. B 19. A 2
29、0. D 二、填空题1. 4 11 2. a 3. double *pv=&v。 4. 类名 5. 1 6.AB() 7.10 19 8. 类型 9. 4 10. int* 11.12 12. 42 13. 第一个、修改 14. 个数 ( 或数目 ) 类型 15. char * 16. *p 17. int(*)6 18. x 19. a 20. delete p 三、程序填充题,根据题意在横线上填写合适的内容。 1.(1) i=s (3) vn (或*(v+n) 3. (1)new (2)A() delete a。4. (1) AA:MaxA() (2) x=ai (3) return x
30、四、理解问答题,写出程序运行结果或程序(或函数)所能实现的功能。1. 计算并输出22+42+62+302的值。2. 计算并输出1+aiii22)1(的值,其中a 的值由键盘输入。3. 9 20 5 6 4 2 1 52五、编程题 1、 Array:Array(Array& aa) n=aa.n 。a=new intn。for(int i=0。 in 。 i+) ai=aa.ai。 一、单项选择题(每小题 2分,共 20分) 1.设X和Y均为 boot量,则 xY 为假的条件是( A.它们均为真B.其中一个为真 C.它们均为假 D.其中一个为假2.假定一个二维数组的定义语句为“inta34 _
31、3,4,2,8,6。 ,则元素 a12 的值为 ( A. 2 B. 4 C. 6 D. 8 3.假定 P是具有 int 、类型的指针变量,则给P赋值的正确语句为( A. p=newintint 关关 B.p=rew int C. p=new D. p =new int10 4.软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进行相应的软件更新的难易程度叫做软精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 11 页8 / 11 件的 ( A.可维护性 B.可复用性 C.兼容性 D. 正确性5.若需要把一个类外定义的
32、成员函数指明为内联函数,则必须把关键字( )放在函数原型或函数头的前面。A. in B. Inline C. inline D. InLiner 6.在一个用数组实现的队列类中,假定数组长度为MS ,队首元素位置为first,队列长度为length ,则队尾的后一个位置为( A.l ength+1 B. f irst-length C (first-f-length一I)0oMS D. ( first-f-length)0 oM S 7.假定一个类的构造函数为“A(inta a,in tb b) a=aa。b =aa* b b 。 ,则执行“A x(4,) 。”语句后,x. a和x. b 的值
33、分别为( )。A. 4和 5 B. 5 和 4 C. 4和20 D. 20 和5 8.假定 AB 为一个类,则执行“AB * p=new AB(1,2)。”语句时共调用该类构造函数的次数为( A. 0 C.2 B. 1 D. 3 9.一个类的成员函数也可以成为另一个类的友元函数,这时的友元声明( )类域的限A.需加上 B.不需加上 C.可加可不加 D.取消10.队列具有 ( )的操作特性。A.先进先出 13.先进后出 C.进出无序 D.仅进不出二、填空题 (每小题 2分,共 20分) 1.多行注释的开始标记符为。2.假定 x=5,y=6 ,则表达式 x- + * - - Y的值为。3. 假 定
34、 x是一个逻辑量,则 xa乙true的值与 x的值。4. 含 随 机函数的表达式 rand()% 20 的值在 0至的整数区间内。5. 程 序 的编译是以为单位进行的。6. 一 个 数组的实际上是指向该数组的第一个元素的指针,并且在任何时候都不允许修改它。7. 指 针变 量pv和pc定义为“ void -pv = Hello,w ord!。c har p c 。 ,要将 pv值赋给 pc,则正确的赋值语句是pc=( ) Pv o 8一 个 类的 函数通常用于实现释放该类对象中指针成员所指向的动态存储空间的任务。9. 假 定 用户为类 AB定义了一个构造函数“AB(inta a) 。a(aa),
35、 ,则是该类的数据成员。10 .在 多 文件 结构 的程 序 中,通 常 把含 有 main ) 函数 的文件 称 为该 程 序 的。三、程序填充题。根据题意在横线上填写合适的内容。(每小题 6分,1.采用辗转相除法求出两个整数的最大公约数。# inc lu de vo id main() IIlt 8 ,h cout+ 请输人两个正整数:。cin。 a。 b while(a 二 0bab while(b) int r r=a%b 。,/分别修改 a和b的值cout+ a+ endl,/ 输出最大公约数2.用插入排序方法对table指针数组中 size个指针所指向的字符串进行按升序排序的算法。
36、void sort(char*table 仁, int size) for(inti =1 。i=0 。j一一 ) if(strcmp(p , tablej)1 A()a =NULL。A(char ,aa) /定义无参构造函数,使a为空指针a charstrlen(aa)+1 strcpy(a,aa)。 刀用 as所指字符串初始化a所指向的动态存储空间 / 定义析构函数,删除a所指向的动态存储空间4.类Goods的定义class pnvate: ch arN ame20 。 /商品名称int W eight 。 /商品重量sta ticin tt otalWeight 。/同类商品总重量pub
37、lic: Go ods char s tr,intw ) /构造函数str cp y CN a m e , str)。Weight=w 。totalW eight 十“ Weight 一Goods()totalWeight 一=Weight 。char二 GetN() / 返回商品名称int GetW )return weight。 static int GetTotalWeight()/定义静态成员函数返回总重量四、理解问答题,分别写出前2小题的程序运行结果和指出后2小题的程序或函数功能。(每小题 6分,共 24分) 1.#include const intT= 6 void main()
38、int i,j ,k=0。for(i=1 。i=T 。i十=2) for(j=2 。j=r 。 +=2) k+ 十。coot+ k=+ k+ endl 运行结果 : 2. # include C1aSS CE private int a, b intg etmax()return (ab?a :1) 。public int c void SetValue(int xl,int x2,int x3) a=x1。h= x2。c= x3 int GetMax() 。int CE:(=etMax() 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,
39、共 11 页10 / 11 int d=getmax() 63 return (dc? d:c) void main() int x = 5 , y=12,z=8。CE ex。ex. SetValue(x,y,z) 。coutGex. GetMax)Gendl 运行结果 : 3.井 in cl ud e void main( ) int t,p= 1。int N 。cout+ “输人一个正整数:”。cinN 。for(i 气l。i=N 。i十+)A*=i 。cout+ N!=+ p+ endl 程序功能 : 4. intf(char 、 S) lnl 1= while( s 十一 1-) i+
40、 十return 函数功能 : 五、编程题 (每小题 6分,共 12分) 1. 编 写 一个函数,分别求出由指针a所指向的字符串中包含的每种十进制数字出现的次数,把统计结果保存在数组b的相应元素中,该函数的原型声明如下: vo id f un (charx a ,1Tlt b ) 。2. 根 据 下面类中 Comparel3ig 函数成员的原型和注释写出它的类外定义。cla ss A A tn t * a 。rn t n 。in tM S 。pu bli c: vo id I n itA A (i nt a s,intn n,intm s) if(nn,m s)cout CError! 中的
41、n值大则返回一1 一、单项选择题(每小题 2分,共 20分) 1. C 2 . C 3. )3 4.A 5 . 13 6. D 7 . C 8.B 9. A 1 0. A 二、填空题 (每小题 2分,共 20分) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 11 页11 / 11 1./* 2.35 3. 相同 4.19 5. 文件 6.数组名 7.Char * 8. 析构 9_ a 10.主文件三、程序填充题.根据题意在横线上填写合适的内容。(每小题 6分,共 24分 ) 评分标准 :每空 3分1. a二b h= r 2.abl
42、e.J p 3. new 一A()delete a 。 4.return Name return totalW eight 四、理解问答题,分别写出前2小题的程序运行结果和指出后2小题的程序或函数功能。1. k=9 2. 12 3. 计 算 并输出 N阶乘的值,其中 N值由键盘输人。 4. 求 出 并返回字符指针参数 s所指向的字符串长度。五、编程题 (每小题 6分,共 12分) 评 分标 准 :按编程完整程度酌情给分。1.v oi d f un(char*a ,intb ) m t for(i=0 。i=0 &. jh. n) k=b. n 。 else k=n。for(inti =0 。i b.a i)r eturn1 。els ei f(a 仁ib.a i)return一1 if(k=n&k=b. n) return 0。else if(kn) return 1 。else return一1。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 11 页