1、VB笔试模拟试卷 15及答案与解析 1 在计算机中,算法是指 _。 ( A)查询方法 ( B)加工方法 ( C)解题方案的准确而完整的描述 ( D)排序方法 2 栈和队列的共同点是 _。 ( A)都是先进后出 ( B)都是先进先出 ( C)只允许在端点处插入和删除元素 ( D)没有共同点 3 已知二叉树 BT的后序遍历序列是 dabec,中序遍历序列是 debac,它的前序遍历序列是 _。 ( A) cedba ( B) acbed ( C) decab ( D) deabc 4 在下列几种排序方法中,要求内存量最大的是 _。 ( A)插入排序 ( B)选择排序 ( C)快速排序 ( D)归并
2、排序 5 在设计程序时,应采纳的原则之一是 _。 ( A)程序结构应有助于读者理解 ( B)不限制 goto语句的使用 ( C)减少或取消注解行 ( D)程序越短越好 6 下列不属于软件调试技术的是 _。 ( A)强行排错法 ( B)集成测试法 ( C)回溯法 ( D)原因排除法 7 下列叙述中,不属于软件需求规格说明书的作用的是 _。 ( A)便于用户、开发人员进行理解和交流 ( B)反映出用户问题的结构,可以作为软件开发工作的基础和依据 ( C)作为确认测试和验收的依据 ( D)便于开发人员进行需求分析 8 在数据流图 (DFd)中,带有名字的箭头表示 _。 ( A)控制程序的执行顺序 (
3、 B)模块之间的调用关系 ( C)数据的流向 ( D)程序的组成成分 9 SQL语言又称为 _。 ( A)结构化定义语言 ( B)结构化控制语言 ( C)结构化查询语言 ( D)结构化操纵语言 10 视图设计一般有 3种设计次 序,下列不属于视图设计的是 _。 ( A)自顶向下 ( B)由外向内 ( C)由内向外 ( D)自底向上 11 下列可以打开立即窗口的操作是 _。 ( A) Ctrl+D ( B) Ctrl+E ( C) Ctrl+F ( D) Ctrl+G 12 如果在立即窗口中执行以下操作 ( CR是回车键 ): a=8 CR b=9 CR print a b CD 则输出结果是
4、_。 ( A) -1 ( B) 0 ( C) False ( D) True 13 当一个工程含有多个窗体时,其中的启动窗体是 _。 ( A)启动 Visual Basic时建立的窗体 ( B)第一个添加的窗体 ( C)最后一个添加的窗体 ( D)在 “工程属性 ”对话框中指定的窗体 14 决定一个窗体有无控制菜单的属性是 _。 ( A) MinButtom ( B) Caption ( C) MaxButton ( D) ControlBox 15 下列可作为 Visual Basic变量名的是 _。 ( A) A#A ( B) 4A ( C) ? xy ( D) constA 16 执行如
5、下语句: a=InputBox(“Today“,“Tomorrow“,“Yesterday“, “Day before yesterday“,5) 将显示一个对话框,在对话框的输入区中显示的信息是 _。 ( A) Today ( B) Tomorrow ( C) Yesterday ( D) Day before yesterday 17 决定控件上文字的字体、字形、大小、效果的属性是 _。 ( A) Text ( B) Caption ( C) Name ( D) Font 18 下列程序段的显示结果为 _。 x=0 Print x-1 x=3 ( A) -1 ( B) 3 ( C) 2 (
6、 D) 0 19 设 A=“12345678“,则表达式 Val(Left(A, 4)+Mid(A, 4, 2)的值为 _。 ( A) 123456 ( B) 123445 ( C) 8 ( D) 6 20 在窗体上画一个名称为 List1的列表框,一个名称为 Label1的标签。列表框中显示若干城市的名称。当单 击列表框中的某个城市名时,在标签中显示选中城市的名称。 下列能正确实现上述功能的程序是 _。 ( A) Private Sub List1_Click() Label1.Caption=List1.ListIndex End Sub ( B) Private Sub List1_Cl
7、ick( ) Label1.Name=List1.ListIndex End Sub ( C) Private Sub List1_Click( ) Label1.Name=List1.Text End Sub ( D) Private Sub List1_Click() Label1.Caption=List1.Text End Sub 21 以下关于菜单的叙述中,错误的是 _。 ( A)在程序运行过程中可以增加或减少菜单项 ( B)如果把一个菜单的 Enabled属性设置为 False,则可删除该菜单项 ( C)弹出式菜单在菜单编辑器中设计 ( D)利用控件数组可以实现菜单项的增加或减少
8、22 表达式 Abs(-5)+Len(“ABCDE“)的值是 _。 ( A) 5ABCDE ( B) -5ABCDE ( C) 10 ( D) 0 23 在程序代码中将图片文件 mypic.jpg装入图片框 Picture1的语句是 _。 ( A) Picture1.Picture=“mypic.jpg“ ( B) Picture1.Image=“mypic.jpg“ ( C) Picture1.Picture=LoadPicture(“mypic.jpg“) ( D) LoadPicture(“mypic.jpg“) 24 在列表框中当前被选中的列表项的序号是 由下列哪个属性表示 _。 (
9、A) List ( B) Index ( C) Listindex ( D) Tabindex 25 设有语句 Open“c: Test Dat“ ForOutput As#1 则以下错误的叙述是_。 ( A)该语句打开 C盘根目录下一个已经存在的文件 Test.Dat ( B)该语句在 C盘根目录下建立一个名为 Test.Dat的文件 ( C)该语句建立的文件的文件号为 1 ( D)执行该语句后,就可以通过 Print#语句向文件 Test.Dat中写 入信息 26 在窗体上面画一个名称为 TxtA的文本框,然后编写如下的事件过程: Private Sub TxtA_KeyPress(Key
10、ascii as integer) End Sub 若焦点位于文本框中,则能够触发 KeyPress事件的操作是 _。 ( A)单击鼠标 ( B)双击文本框 ( C)鼠标滑过文本框 ( D)按下键盘上的某个键 27 要获得当前驱动器应使用驱动器列表框的哪个属性 _。 ( A) Path ( B) Drive ( C) Dir ( D) Pattern 28 下列程序段的执行结果为 _。 K=0 For I=1 To 3 A=IIK Print A; Next I ( A) 1 1 1 ( B) 1 4 9 ( C) 0 0 0 ( D) 1 2 3 29 下列程序段的执行结果为 _。 A =
11、“abcd“ B = “bcde“ E = Right(A, 3) F = Mid(B, 2, 3) If E F Then Print E+F Else Print F+E ( A) cdebcd ( B) cdd ( C) cdcd ( D) bcdcde 30 下列程序段的执行结果为 _。 X=2 Y=1 If X*Y 1 Then Y=Y-1 Else Y=-1 Print Y-X 0 ( A) True ( B) False ( C) -1 ( D) 1 31 下列程序段的执行结果为 _。 For x=5 To 1 Step-1 For Y=1 To 6-x Print Tab(Y+
12、5); “*“; Next Y Print Next x ( A) * * * * * ( B) * * * * * ( C) * * * * * ( D) * * * * * 32 下列程序段的执行结果为 _。 Dim A(10), B(5) For i=1 To 10 A(i)=i Next i For j=1 To 5 B(j)=j*20 Next j A(5)=B(2) Print“A(5)=“;A(5) ( A) A(5)=5 ( B) A(5)=10 ( C) A(5)=20 ( D) A(5)=40 33 可以在窗休模块的通用声明段中声明 _。 ( A)全局变量 ( B)全局常量
13、 ( C)全局数组 ( D)全局用户自定义类型 34 单击命令按钮时,下列程序代码的执行结果为 _。 Public Sub Procl(n As Integer, By Val m As Integer) n=n Mod i() m=m/10 End Sub Private Sub Command1 CliCk() Dim x As Integer, y As Integer x=12: y=34 Call Procl(x, y) Print x; y End Sub ( A) 12 34 ( B) 2 34 ( C) 2 3 ( D) 12 3 35 设在工程中有一个标准模块,其中定义了如下
14、记录类型 Type Books Name As String * 10 TelNum As String * 20 End Type 在窗体上画一个名为Command1的命令按钮,要求当执行事件过程 Command1_Click时, 在顺序文件Person.txt中写入一条记录。下列能够完成该操作的事件过程是 _。 ( A) Private Sub Command1 CliCk() Dim B As Books Open“c:Person.txt“ For Output As #1 B.Name=InputBox(“输入姓名 “) B.TelNum=InputBox(“输入电话号码 “) Wr
15、ite #1, B.Name, B.TelNum Close #1 End Sub ( B) Private Sub Command1_Cliok() Dim B As Books Open“c: Person.txt“For Input AS #1 B.Name=InputBox(“输入姓名 “) B.TelNum=InputBox(“输入电话号码 “) Print #1, B.Name, B.TelNum Close #1 End Sub ( C) Private Sub Command1_Click() Dim B As Books Open“c: Person.txt“ For Out
16、put As #1 B.Name=InputBox(“输入姓名 “) B.TelNum=InputBox(“输入电话号码 “) Write #1, B Close #1 End Sub ( D) Private Sub Command1_Click() Dim B As Books Open “c: Werson.txt“ For Input As #1 Name=InputBox(“输入姓名 “) TelNum=InputBox(“输入电话号码“) Print #1, Name, TelNum Close #1 End Sub 36 在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以
17、分为三种:前序遍历、【 】遍历和后序遍历。 37 结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、【 】和限制使用 goto语句。 38 软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过 测试数据和【 】的设计来实现。 39 数据库系统的三级模式分别为【 】模式、内部级模式与外部级模式。 40 数据字典是各类数据描述的集合,它通常包括 5个部分,即数据项、数据结构、数据流、【 】和处理过程。 41 以下语句的输出结果是【 】。 S$=“China“ S$=“Beijing“ print S$ 42 窗体、图片框或图像框中的图形通过对象的【 】属性设置。 43
18、阅读以下程序: Private Sub Form_click() Dim k,n,m As integer n=10 m=1 k=1 Do While k =n m=m+2 k=k+1 Loop Print m End Sub 单击窗体程序的执行结果是【 】。 44 程序执行结果 S的值是【 】。 Private Sub Command1_Click() i=0 Do i=i+1 s=i+s Loop Until i =4 Print s End Sub 45 设有如下的 Visual Basic表达式: 5 * x 2-3 * x-2 * Sin(A)/3,它相当于代数式【 】。 46 在窗
19、体 (Name属性为 Form1)上画两个文本框 (其 Name属性分别为 Text1和Text2)和一个命令按钮 (Name属性为 Command1),然后编写如下两个事件过程: Private Sub Command1_Click() A=Text1.Text+TextText Print A End Sub Private Sub Form_Load() Text1.Text=“ TextText=“ End Sub 程序运行后,在第一个文本框 (Text1)和第二个文本框 (Text2)中分别输入 123和 321,然后单击命令按钮,则输出结果为【 】。 47 以下程序的功能是:从键盘
20、上输入若干个数字,当输入负数时结束输入,统计出若干数字的平均值,输出结果。请填空。 Private Sub Form_click() Dim x, y As Single Dim z As Integer x=InputBox(“Enter a score“) Do while【 】 y=y+x z=z+1 x=InputBox(“Enter a score“) Loop If z=0 Then z=1 End If y=【 】 Print y End Sub 48 文件根据数据性质,可分为【 】文件和【 】文件。 49 下面的程序用 “冒泡 ”法将数组 a中的 10个整数按升序排列,请将程序
21、补充完整。 Option Base 1 Private Sub Command1_Click() Dim a a=Array(678, 45, 324, 528, 439, 387, 87, 875, 273, 823) For i=【 】 For j=【 】 If a(i)【 】 a(j)Then a1=a(i) a(i)=a(j) a(j)=a1 End If Next j Next i For i=1 To 10 Print a(i) Next i End Sub VB笔试模拟试卷 15答案与解析 1 【正确答案】 C 【试题解析】 计算机算法是指解题方案的准确而完整的描述,它有以下几个
22、基本特征:可行性、确定性、 有穷性和拥有足够的情报。 2 【正确答案】 C 【试题解析】 栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“后进先出 ”的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种 “先进先出 ”的线性表。 3 【正确答案】 A 【试题解析】 二叉树 BT的后序遍历序列为 dabec,故 BT的根结点为 c(后序遍历序列的最后一个结点为数的根结点 );而 BT的中序遍历序列是 debac,即遍历序列中最后一个结 点为跟结点,说明 BT的右子树为空。由 BT的的后序遍历序
23、列和中序遍历序列可知 BT的左子树 (LST)的后序遍历序列和中序遍历序列分别为dabe和 deba(树是递归定义的 ):故 LST的根结点是 e,在由 LST的中序遍历序列可知其左子树为 do因此 BT的前序遍历序列为 cedba。 4 【正确答案】 D 【试题解析】 快速排序的基本思想是,通过一趟排序将待排序记录分割成独立的两部分,其 中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录继续进行排序,以达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基本思想是:扫描整个线性表,从中选出最小的元素,将它
24、交换到表的最前面 (这是它应有的位置 ),然后对剩下的子表采用同样的方法,直到表空为止;归并排序是将两个或两个以上的有序表组合成一个新的有序表。 5 【正确答案】 A 【试题解析】 滥用 goto语句将使程序流程无规律,可读性差:添加的注解行有利于对 程序的理解,不应减少或取消;程序的长短要依照实际需要而定,并不是越短越好。 6 【正确答案】 B 【试题解析】 调试的关键在于推断程序内部的错误位置及原因。主要的调试方法有强行排错法、回溯法和原因排除法。 7 【正确答案】 D 【试题解析】 软件需求规格说明书 (SRS, SoftwareRequirementSpecification)是需求分
25、析阶段的最后成果,是软件开发中的重要文档之一。它有以下几个方面的作用: 便于用户、开发人员进行理解和交流; 反映出用户问题的结构,可以作为软件开发工 作的基础和依据; 作为确认测试和验收的依据。 8 【正确答案】 C 【试题解析】 数据流相当于一条管道,并有一级数据 (信息 )流经它。在数据流图中,用标有名字的箭头表示数据流。数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,并且可以从外部实体流向系统或从系统流向外部实体。 9 【正确答案】 C 【试题解析】 结构化查询语言 (Structured Query Language,简称 SQL)是集数据定义、数据操纵和数据控制功能于
26、一体的数据库语言。 10 【正确答案】 B 【试题解析】 视图设计一般有 3种设计次序,它们分别是自顶向下、自底向上和由内向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以单独使用也可混合使用。 11 【正确答案】 D 【试题解析】 浏览 Visual Basic开发环境的视图菜单,可以发现显示立即窗口的快捷键组合为 Ctrl+G。 12 【正确答案】 C 【试题解析】 因 a b不成立 (8 9),故表达式的值为 False。立即窗口中输出值即为 False。 13 【正确答案】 D 【试题解析】 在 “工程 -属性 ”对话框中可以指定工程的启动对象 (可以是窗体
27、、Sub Main()。 14 【正确答案】 D 【试题解析】 ControlBox属性:返回或设置一个值,说明运行时是否在窗体上显示控制菜单栏。 MinButtom属性:决定窗体是否有最小化按钮,值为 True或 False。 MaxButton属性:决定窗体是否有最大化按钮,值为 True或 False。 Caption属性:返回或设置对象在标题栏中或图标下面的文本。 15 【正确答案】 D 【试题解析】 变量名的命名必须遵守几个规定 : 变量名必须以字母开头,而不能以数字或其他字符开头。 变量名的其余部分可以包含字母、数字和 /或下划线字符,而不允许有空格、句号或其他停顿符号。 变量名不
28、能超过 255个字符。 变量名不能是 Visual Basic的保留字。 16 【正确答案】 C 【试题解析】 InputBox函数的功能是显示一个对话框,该对话框能接收用户输入的数据。 语法 InputBox(prompt, title, default, xpos, ypos, helpfile, context) InputBox函数的 语法具有以下几个命名参数: 部分 描述 Prompt 必需的。作为对话框消息出现的字符串表达式。 prompt的最大长度大约是 1024个字符,由所用字 符的宽度决定。如果 prompt包含多个行,则可在各行之间用回车符(Chr(13)、换行符 (Chr
29、(10) 或回车换行符的组合 (Chr(13)返回字符串的最后 n个字符。 Mid(字符串, p,n):从第 p个字符开始,向后截取 n个字符。 p和 n都是算术表达式 。 “+”:字符串连接运算符,将两个字符串按顺序连接起来。 字符串比较:将两个字符串从左到右逐个比较其 ASCII码值,直到比较出第一个不相等的为止。 Right(“abcd“,3)=“bcd“ Mid(“bcde“,2,3)=“cde“ “bcd“ “cde“,所以打印出的结果为 “bcdcde”。 30 【正确答案】 B 【试题解析】 格式:表达式 1比较运算符表达式 2 关系表达式的比较规则是: 如果两个表达式都是数值,
30、则进行数值比较。 如果两个表达式都是字符串,则进行字符串比较。 如果一个表达式是数 值而另一个是字符串,则数值表达式小于字符串表达式。 该题中, X*Y=2*1=2,所以 X*Y 1为假,执行 Else分支, Y 1;此时 Y-X 1-2 3,所以 Y-X 0为假。在 Visual Basic中,关系表达式的值用 True表示真:用False表示假。 31 【正确答案】 C 【试题解析】 格式: Tab(n),设定显示或打印下一个表达式之间的间隔本段程序的作用是:通过外循环的循环体,打印出 5行星号,内循环随外循环变量 x的变化共执行 5次,每次执行,就在第 x行上,从空 5,个字符的位置起打
31、印 x个星号 。 32 【正确答案】 D 【试题解析】 观察程序段,可知程序段最终的输出结果是字符串 “A(5)=”和数组元素 A(5)的值。由程序段可知: A(5)=B(2),根据程序段中以 J为循环变量的循环可得: B(2)=2*20=40,则 A(5)=40。 33 【正确答案】 A 【试题解析】 全局变量可以在窗体模块、标准模块和类模块中进行声明;全局常量、全局数组、全局用户自定义类型只能在标准模块中进行声明。 34 【正确答案】 B 【试题解析】 过程中传递参数的方式有两种:一种是按地址传递 参数,这种形式使过程用变量的内存地址去访问实际变量的内容,如果在过程中改变了该变量的值,则是
32、真正改变了这一变量的值,这种形式是传递参数的缺省方式。 另一种是按值传递参数,这种形式只是传递变量的副本;如果在过程中改变该变量副本的值,并不能真正改变该变量本身的值。 解题思路:观察程序段,过程 Procl的第一个参数 n是按地址传递参数,第二个参数 m是按值传递参数,所 以调用过程 Procl后,变量 x的值改变,而变量 y的值不变。 由程序段可知, x=12 Mod 10=2, y=34最终的输出结果是: 2 34。 35 【正确答案】 A 【试题解析】 A选项正确。 B选项向文件中输出内容,打开方式应当为 For output。 C选项记录变量不可以对元素整体输入输出。 D选项记录变量
33、的输入和输出都必须指明到记录元素。格式为:记录变量 .元素名。 36 【正确答案】 中序 【试题解析】 在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、中序遍历和后序遍历。 前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且遍历左、右子树 时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。 中序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。 后序遍历指在访问根结点、遍历左子树与
34、遍历右子树这三者中,首先遍历右子树,然后访问根结点,最后遍历左子树;并且遍历左、右子树时,仍然先遍历右子树,然后访问根结点,最后遍历左子树。 37 【正确答案】 模块化 【试题解析】 结构化程序设计方法的主要原则可以概括为自顶向下、 逐步求精、模块化和限制使用 goto语句。 自顶向下:程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。 逐步求精:对复杂问题,应设计一些子目标作过度,逐步细化。 模块化:一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为分目标,再进一步分解
35、为具体的小目标,把每个小目标称为一个模块。 限制使用 goto语句。 38 【正确答案】 测试实例 【试题解析】 进行软件测试时,应精心设计 测试实例和选择测试数据,以对系统进行全面测试。 39 【正确答案】 概念 或 概念级 【试题解析】 数据库系统在其内部具有三级模式及二级映射,三级模式分别是概念级模式、内部级模式和外部级模式。 概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户 (应用 )公共数据视图。 内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及 hash等存取方式与存取路径,内模式的物理性主要体现在操作系统及文件级上,它还未深
36、入到设备级上 (如磁盘及磁盘操作 )。 外模式也称 子模式或用户模式,它是用户的数据视图,也就是用户所见到的数据模式,它由概念模式推导而出。 40 【正确答案】 数据存储 【试题解析】 数据字典是各类数据描述的集合,它通常包括 5个部分,即数据项,是数据的最小单位:数据结构,是若干数据项有意义的集合;数据流,可以是数据项,也可以是数据结构,表示某一处理过程的输入或输出;数据存储,处理过程中存取的数据,常常是手工凭证、手工文档或计算机文件:处理过程。 41 【正确答案】 Beijing 【试题解析】 S$的最终值是 Beijing,所以输出的应 该足 Bejing。 42 【正确答案】 Pict
37、ure 【试题解析】 Picture属性返回或设置控件中要显示的图片。对于 OLE容器控件,在设计时不可用在运行时为只读。 43 【正确答案】 21 【试题解析】 本题的循环体共要执行 10次, m的最终值为 1+2*10=21。 44 【正确答案】 10 【试题解析】 Do Until 语句是先执行循环体,再判断 Until后面的条件表达式,当条件为 True时,则结束循环。本题中的条件是大于等于 4,所以当 i=4时,结束循环,此时共执行了 4次循环体。所以 s=1+2+3+4=10。 45 【正确答案】 5x2-3x-2Sina3 【试题解析】 算术运算符有: (乘方运算符 )、 *(乘
38、法运算符 )、 /(除法运算符 )、(整除运算符 )、 Mod(求模运算符 )、 +(加法运算符 )、 -(减法运算符 )。 46 【正确答案】 123321 【试题解析】 TextBox的 Text属性用宋设置或返回文本框编辑区中的文本。 47 【正确答案】 x =0 , y/z 【试题解析】 根据表达式的值有条件地执行一组语句。 语法 If condition Then statements Else else statements 或者,可以使用块形式的语法; If condition Then statements EIseIfcondition-n Then elseifstatem
39、ents Else elsestatements End If 当条件为 True时,或直到条件变为 True时,重复执行一个语句块中的命令。 语法 DoWhile | Until condition statements Exit Do statements Loop 或者可以使用下面这种语法: Do statements Exit Do statements LoopWhile | Untilcondition 本题的循环首先判断输入是否大于 0,如果是则处理这个输入,否则结束循环。循环体内的第二个判断语句判断的是当前输入是否比当前的最小值小,如果是则改写当前最小值为输入值,否则结束判断语句。 48 【正确答案】 程序 ,数据 【试题解析】 如果一个文件内存放的是程序数据,则该文件是程序文件。否 则该文件内存放的就是供其他程序使用的数据,也就是数据文件。 49 【正确答案】 1 To 9 , i+1 To 10 , 【试题解析】 最外层的循环负责从第 1个元素到第 9个元素中取出一个,内层循环负责取外层循环下标后面的元素与它比较,如果比外层循环取出的元素小,则将二者的位置对换。