资源描述
,单击以编辑母版标题样式,单击以编辑母版文本样式,第二级,第三级,第四级,第五级,*,第八章 过程,8.2,Function,函数定义及调用,8.4 递归过程,8.3 参数的传递,8.1,SUB,过程及其调用,8.5 变量的,作用域,8.6,程序示例,8.7,实验,如同常量的定义一样,有时不仅仅是几个数字反复出现在程序中,而且是很多段代码在做几乎同样的事,如果有一些通用的代码可供调用的话,那么程序就会简练得多,而且更为清晰,这就是过程与函数。,Vb,中使用的过程分为子程序过程、函数过程和属性过程。,8 过 程,过程,子程序过程(,SUB),函数过程(,FUNCTION),属性过程(,PROPERTY),事件过程,通用过程,窗体过程,控件过程,8.1,SUB,过程及其调用,通用过程,过程,事件过程,(1)打开代码窗口(双击控件或窗体,单击查看代码)选择对象和事件输入代码保存,1、,建立事件过程,加入对发生事件进行处理的代码的过程,称为事件过程。,8.1.1,事件过程,(2)“工具”菜单“添加过程”(如下图)输入代码保存,(1),控件事件过程形式:,8.1.1 事件过程,Private Sub,控件名_事件名 (,argumentlist,),语句块,End Sub,说明:,(1)控件名必须与窗体中某个控件相匹配,否则为通用过程且该过程也属于私有过程。,(2),argumentlist,指的是参数列表,所谓参数,就是指过程操作所需的指导条件。有无参数由事件本身决定,用户不可以自行添加。,2、定义事件过程,Private Sub cmd1_Click(),end,End Sub,Private Sub,Form,_,事件名 (,argumentlist,),语句块,End Sub,2)窗体事件过程形式:,8.1.1 事件过程,说明:,(1),Private,表明该过程的使用范围是模块级的,在该窗体之外是不可见的。,(2)不论定义的窗体名称为什么,均用,Form,或,MIDFORM,(,多文档界面窗体)表示。,(3),事件由,VB,提供。注意部分事件的发生顺序:,Initialize、 Load、Activate、,GotFocus,事件的发生顺序是依次的。,如有一窗体名为,f1,,则可以有如下代码:,Private Sub Form_Activate(),L2.,ForeColor,= RGB(0, 255, 255),End Sub,例题,8.1.1 事件过程,演示,引例1:编程时经常要用到两个数的交换,可以将其编写成过程。,8.1.2,通用过程,将多次被重复使用的程序段设计成一个具有一定功能的独立程序段,即为通用过程。,8.1.2 通用过程,1、建立通用过程,(1)打开代码编辑器窗口选择工具菜单选择添加过程,(2)在代码编辑器窗口中选择“通用声明”,形式如下:,Private/PublicStatic,Sub,过程名 (参数列表),局部变量和常量声明,语句块,Exit Sub,语句块,End Sub,2.,通用过程的定义:,8.1.2 通用过程,Public Sub swap(x, y),Dim t As Integer,t = x: x = y: y = t,End Sub,例,说明:,(1),Private/Public,可缺省,若缺则系统默认为,Public。Static,如果不省则指定过程中的局部变量为“静态”变量。,(2)过程名命名规则和变量名相同,且不能重名。,(3)参数列表中的参数是形式参数,可以是变量名或数组名(此时要加(),参数可以省略,但是外层()不可省,若有多个参数,则用逗号分开。,(4)过程体中,Exit Sub,可以有多个,执行到此语句,立即退出该过程。,Sub,过程不可以嵌套。,8.1.2 通用过程,3.,SUB,过程调用,8.1.2 通用过程,格式1:,CALL,过程名 (实参表),格式2:过程名 实参1,实参2,,说明:,(1)过程名是被调用过程的名字,当调用程序执行到此代码时,,VB,将开始执行被调用过程。,(2)实参是传送给被调用过程的变量、常数或表达式。,实参的个数和类型、顺序应与被调过程的形参相匹配,,且个参数之间应用逗号分隔。对于格式1,若被调过程无参数,则(实参表)可以省略。而格式2,不论是否有参数,实参列表均不需要加括号。,例题,8.1.2 通用过程,若在应用程序中用“,Private Sub Sub1(X As Integer, Y As Single)”,定义了子程序,Sub1,,调用程序中的变量,I,J,均为,Integer,型,则正确调用子程序,Sub1,的,Call,语句是_。,Call Sub1(I,J),Call Sub1(3.1415,I), Call Sub1(3.14,234),Call Sub1(245,231.5),A. ,B. C. D.,无,例1:调用两数交换过程,8.1.2 通用过程,Public Sub swap(x, y),Dim t As Integer,t = x: x = y: y = t,End Sub,Private Sub Command2_Click(),Dim a As Integer, b As Integer,a = Val(Text2.Text): b = Val(Text3.Text),call swap (a,b),Text2.Text =,Str,(a):Text3.Text =,Str,(b),End Sub,或,swap a, b,例2:将以前学过的冒泡排序改写成过程调用的形式,8.1.2 通用过程,Private Sub bubble_sort(sort() As Integer),Dim,ub,As Integer, Tem As Integer, I As Integer, switch As Boolean,ub,=,UBound,(sort),:switch = True,Do While switch,switch = False,:,ub,=,ub,- 1,For i = 1 To,ub,If sort(i) sort(i + 1) Then,switch = True,:Tem = sort(i),sort(i) = sort(i + 1) :sort(i + 1) = Tem,End If,Next i,Loop,End Sub,8.1.2 通用过程,Option Explicit,:Option Base 1,Private Sub Command1_Click(),Dim number(10) As Integer, i As Integer,Randomize,For i = 1 To 10,number(i) =,Int,(100 - 1) *,Rnd,) + 1,Text1 = Text1 &,Str,(number(i),Next i,Call bubble_sort(number),For i = 1 To 10,Text2 = Text2 &,Str,(number(i),Next i,End Sub,8.2,FUNCTION,函数及其调用,FUNCTION,函数的建立与定义,FUNCTION,函数的调用,调用其它模块中的过程,函数,1,.,FUNCTION,函数的建立,Function,函数的建立与,SUB,类似。,2,.,FUNCTION,函数的定义,Private/PublicStatic Function,函数名 (参数列表),as,数据类型,语句块,函数名=表达式,Exit Sub,语句块,函数名=表达式,End,8.2.,1,FUNCTION,函数的建立与定义,Private Function swap1(x, y),Dim t As Integer,t = x: x = y: y = t,End Function,8.2.1,FUNCTION,函数的建立与定义,说明:,Function,函数和,Sub,过程的区别及注意事项:两者的主要区别是有无返回值。,SUB,过程没有返回值,而,Function,函数有返回值。“函数名=表达式”语句功能是给函数名赋值,通常情况下在函数体内至少要对函数名进行一次赋值,若缺省,则返回对应类型的缺省值。因为函数有返回值,所以过程名也有类型。“,as,数据类型”指定函数类型,若缺省,默认为变体型。而,SUB,过程名没有值,因而也没有类型,且在子过程体内也不能对子过程名赋值。只要能定义成函数过程的就一定能定义成子过程,反之不一定。,格式如下:,格式1:,Function,过程名,(,实参表,),格式2:,CALL,过程名(实参),格式3:过程名 实参,8.2.2,FUNCTION,函数的调用,说明:通常用第一种比较多,用后两种方法调用函数时,VB,放弃函数的返回值。,例题,在应用程序中用“,Private Function Fun( X As Integer,Y As Integer)”,定义了函数,Fun.,调用函数,Fun,的过程中的变量,I,定义为,Integer,型,变量,J,定义为,STRING,型,能正确引用函数,Fun,的是_。,Fun(I,J),Call Fun(I,3.65),Fun(3.14,234),Fun(245,231.5),A. ,B. ,C. D. ,8.2.2,FUNCTION,函数的调用,B,例题,2、编写一段求三角形面积的函数,并多次调用。(设三角形,三边长为,x,y,z,,则面积为,c = 1 / 2 * (x + y + z);,area =,Sqr,(c * (c - x) * (c - y) * (c - z)),Public Function area(x, y, z) As Single,Dim c As Single,c = 1 / 2 * (x + y + z),area,=,Sqr,(c * (c - x) * (c - y) * (c - z),End Function,8.2.2,FUNCTION,函数的调用,调用,Private Sub Command1_Click(),Dim a As Single, b As Single, c As Single, d As Single, e As Single, f As Single, s1 As Single, s2 As Single,a =,InputBox,(,输入,a:),b =,InputBox,(,输入,b:),c =,InputBox,(,输入,c:),d =,InputBox,(,输入,d:),e =,InputBox,(,输入,e:),f =,InputBox,(,输入,f:),s1 = area(a, b, c): s2 = area(d, e, f),Text1.Text = Val(s1 + s2),End Sub,8.2.2,FUNCTION,函数的调用,函数调用,例: 试分别用,Sub,和,Function,编写求某级数部分和的过程,并调用之。,级数为,x,2,x,n,1 + x + +, +, +,2! n!,精度为,|,x,n,|,| =,eps,),s = s + t,t = t * x / n,n = n + 1,Loop,End Sub,8.2.2,FUNCTION,函数的调用,Sub,过程:,Function,函数:,Private Function js1(x As Single,eps,As Double) As Double,Dim n As Integer, s As Double, t As Double,n = 1: s = 0: t = 1,Do While (Abs(t) =,eps,),s = s + t,t = t * x / n,n = n + 1,Loop,js1 = s,End Function,8.2.2,FUNCTION,函数的调用,分别调用:,Private Sub Command1_Click(),Dim f1 As Double, f2 As Double,Dim x As Single,x = Val(Text1.Text),f1 = js1(x, 0.0000001),Call js2(f2, x, 0.0000001),Text2.Text =,Str,(f1),Text3.Text =,Str,(f2),End Sub,8.2.2,FUNCTION,函数的调用,函数调用,过程调用,在程序中只能调用其他模块中的公有过程。,8.2.3,调用其它模块中的过程,1、窗体模块,格式:,CALL,窗体名.过程名(实参表),2、标准模块,(1)若调用自身模块中的过程,格式为:,CALL,过程名(实参),(2)若调用别的模块中的过程且有两个或以上的模块中含有同名过程则格式为:,CALL,模块名.过程名(实参),(3)如果标准模块中的过程名是唯一的,应用程序中不再有同名过程存在,则调用该过程是不用加模块名。,3、类模块,例如窗体模块中有一过程为事实,则可写成,Call Form1.,ss,(,实参表,),如果两模块,m1,和,m2,中都含有过程,gc,,,则,调用,m1,中的,gc,应写成,Call m1 .,gc,习题,1、在调用过程时,下述说明中正确的是,。,A,只能使用,Call,语句调用,Sub,过程,B,调用,Sub,过程时,实在参数必须用括 号括起来,C,在表达式中调用,Function,过程时,可以不用括号把实在参数括起来,D Function,过程也可以使用,Call,语句调用,D,习题,考点:,Sub,过程用,Call,语句调用(无参数时括号可省略)或作为一个语句使用,当做语句使用时实参表不需要加括号;,Function,过程的调用和,VB,内部函数的方法一样,此时有返回值,若像调用,Sub,过程那样调用,Function,过程,其返回值被放弃。,习题,1,、(,2001,年春)应用程序窗体的名称属性为,Frm1,,,窗体上有一个命令按钮,其名称属性为,cmd1,,,窗体和命令按钮的,Click,事件过程名分别为,。,A,Form_Click( ) Command1_Click( ),B,Frm1_Click( ) Command1_Click( ),C,Form _Click( ) Cmd1_Click( ),D,Frm1_Click( ) Cmd1_Click( ),C,习题,2,、(,2003,年春)第一次显示某窗体时,将引发一系列事件,正确的事件系列是,。,A.Load,Initialize,Activate B,Initialize,Load,Activate,C,Load,Activate,Initialize D,Initialize,Activate,Load,B,8.3 参数的传递,按值,传递,按,地址传递,数组参数,参数,对象参数,8.3,参数的传递,在调用有参过程的时候,首先进行的是参数的“形实结合”的过程,即将调用程序中的实参和被调用过程中的形参结合,实现主调程序和过程之间的数据传递,在结合时一定要按顺序进行并且类型要相同,特别注意不可以按名字进行结合。该传递分为传值和传址(引用)两种方式。,8.3.1,按值,传递,按值传送时传送的是实参的值,仅将实参变量的值复制了一,份,执行完调用语句后,调用程序中的实参值不变。,格式如下:,形式参数为,byval,变量名(),AS,类型,,,byval,变量名(),AS,类型,8.3.1,按值,传递,例:,Private Sub Command1_Click(),Dim m As Integer, n As Integer,m = 15: n = 20,Call value(m, n),Print m=; m, n=; n,End Sub,Private Sub value(,ByVal,x As Integer,ByVal,y As Integer),x = x + 20: y = y + x,Print x=; x, y=; y,End Sub,m,n,的值不变,没有数值往回传递,接收,m,的值,接收,n,的值,演 示,8.3.2,按,地址传递,按地址传送时传送的是实参的地址,在调用时,被调用过程,直接将接受到的地址里的值进行修改,从而将原来的实参值覆盖,掉,所以,执行完调用语句后,实参的值将会有所改变。,格式如下:,形式参数为 ,byref,变量名(),AS,类型,,,byref,变量名(),AS,类型,8.3.2,按,地址传递,例:,Private Sub Command2_Click(),Dim m As Integer, n As Integer,m = 15: n = 20,Call value1(m, n),Print m=; m, n=; n,End Sub,Private Sub value1(,ByRef,x,As Integer,y,As Integer),x = x + 20: y = y + x,Print x=; x, y=; y,End Sub,接收,m,的地址,接收,n,的地址,m,n,的值即为,x,y,的值,(数值往主调过程传递),演 示,8.3.2,按,地址传递,传值和传址在形式上表现的主要区别为:,如果是按值传送,则形参的参数前加有,BYVAL,,若形,参前没有加上任何关键字或是加上“,BYREF”,,则指定他是按,地址传递的参数。使用时应具体分析,否则容易产生错误。,10,10,b,的地址,20,主调过程:,被调过程:,传值,传地址,实参,形参,a,b,x,y,8.3.2,按,地址传递,例题,用语句,Private Sub Convert(Y As Integer),定义的,Sub,过程时,以下不是按值传递的语句是_,25,_。,A. Call Convert(X),B. Call Convert(X*1),C. Convert(X),D. Convert X,说明:,按地址传送的形参,若调用时与之结合的实参是常数或表达式,则,vb,会将之,变为“按值传递”,8.3.2,按,地址传递,例1:求1!+2!+3!+4!+5!的和。,Private Static Function fact(,n,As Integer) As Integer,fact = 1,Do While n 0,fact = fact * n,n = n 1,Loop,End Function,8.3.2,按,地址传递,例1:求1!+2!+3!+4!+5!的和。,Private Sub Form_Click(),Dim sum As Integer, i As Integer,For i = 5 To 1 Step 1,sum = sum +,fact(i),Next I,Print sum=; sum,End Sub,sum = sum +,fact(,(,i,),),演 示,8.3.2,按,地址传递,例2:四则运算,Private Function add(a As Integer, b As Integer,c As Integer),a = a + 10: b = b + 10: c = c + 10,add = a + b + c,End Function,Private Sub Form_Click(),Dim v1 As Integer, v2 As Integer, v3 As Integer,v1 = 2: v2 = 3: v3 = 4,Print v1 + v2 + v3 * add(v1, v2, v3),End Sub,函数的优先级高,演 示,8.3.2,按,地址传递,例3:验证9的倍数(如果一个数的各位数之和等于该数的两倍的各位数之和,则该数为9的倍数。如:99的两倍是198,且9+9=1+9+8,则99就是9的倍数。),Private Function,sm,(_) As Integer,Dim sm1 As Integer,sm1 = 0,Do While n 0,sm1 = sm1 + n Mod 10,n = n 10,Loop,sm,= sm1,End Function,ByVal,n As Integer,8.3.2,按,地址传递,例3:验证9的倍数,Private Sub Command1_Click(),Dim n As Integer, s1 As Integer, s2 As Integer,n = Val(Text1.Text),s1 =,sm,(n),s2 = _,If s1 = s2 Then,MsgBox,该数是9的倍数,Else,MsgBox,该数不是9的倍数,End If,Text1.Text = ,Text1.,SetFocus,End Sub,sm,(2 * n),演 示,数组可以作为形式参数。,格式为:,形参数组名(),AS,类型。,但形参数组只能是按地址传递的参数。对应实参的类型,长度必须和形参一致,数组名在实参中后面不加一对括号。在被调用的过程中不可以用,DIM,对形参进行声明,但是动态数组时,可以用,REDIM,来重新定义数组的维界与大小。,8.3.3,数组参数,8.3.3,数组参数,例4:求任一一维数组元素之和,Private Function,tim,(a() As Integer),Dim t As Double, i As Integer,t = 1,For i =,LBound,(a) To,UBound,(a),t = t * a(i),Next i,tim,= t,End Function,8.3.3,数组参数,例4:求任一一维数组元素之和,Private Sub Form_Click(),Dim a(1 To 5) As Integer, b(2 To 10) As Integer,i As Integer, t1 As Integer, t2 As Long,For i = 1 To 5,a(i) = i,Next i,For i = 2 To 10,b(i) = i,Next i,t1 =,tim,(,a,),t2 =,tim,(,b,),Print t1=; t1, t2=; t2,End Sub,实参数组后不,加圆括号,8.3.3,数组参数,例5:数组参数传递(教材,P,173,),Private Sub change(,a(),As Integer),Dim i As Integer,ReDim,a(7),For i = 1 To 7,a(i) = I,Next I,End Sub,形参数组只能按地址传递,8.3.3,数组参数,例5:数组参数传递,Option Explicit,Option Base 1,Private Sub Form_Click(),Dim,arraya,() As Integer, i As Integer,ReDim arraya,(5),Print ,调用前上界是:;,UBound,(,arraya,),Call change(,arraya,),Print ,调用后上界是:;,UBound,(,arraya,),Print ,数组各元素的值是:;,For i = 1 To,UBound,(,arraya,),Print,arraya,(i);,Next i,Print,End Sub,演 示,对象也可以作为参数传递,但也,只能是按地址来传递。在形参中若是,控件,则类型声明为“,CONTRAL”,,若是,窗体,则类型声明为“,FORM”。,8.3.4,对象参数,8.3.4,对象参数,例6:,Public Sub,cf,(,ByVal colorfrm,As Form),Dim i As Integer,,gradcolor,As Long,colorfrm,.,ScaleMode,= 3:,colorfrm,.,DrawStyle,= 6,colorfrm,.,DrawWidth,= 2:,colorfrm,.,AutoRedraw,= True,For i = 1 To 64,gradcolor,= RGB(0, 0, 255 - (i * 4 - 1),colorfrm,.Line (0,colorfrm,.,ScaleHeight,* (i - 1) / 64)- (,colorfrm,.,ScaleWidth,colorfrm,.,ScaleHeight,*i/64),gradcolor, BF,Next i,colorfrm,.Refresh,Form1.Hide,colorfrm,.Show,End Sub,演 示,8.4 递归过程,递归的概念,用自身的结构来描述自身称为“递归”即一个过程调用过程本身,在递归调用中,一个过程执行的某一步要用到它自身的上一步或上几步的结果。例如:最典型的例子是对阶乘运算可作如下定义:,n!=n*(n-1)!,(n-1)!=(n-1) *(n-2)!,8.4,递归过程,递归有两种,直接递归:自己调用自己,间接递归:,A,调用,B,B,调用,A,递归过程中必须有递归结束语句。,递归子过程和递归函数,VB,允许一个子过程或函数在自身定义的内部调用自己,这样的子过程或函数称为,递归子过程,或,递归函数,。许多问题中具有递归的特性,用递归调用描述它们就非常方便。,注意:递归过程必须有一个结束递归的终止条件,否则会无限制的执行下去。,8.4,递归过程,例7、 求,fac,(n)=n!,的值,(,n,已4为例),递推,fac,(4)=4*,fac,(3),fac,(3)=3*,fac,(2),fac,(2)=2*,fac,(1),fac,(1)=1,fac,(2)=2*1,fac,(3)=3*2,fac,(4)=4*6,回归,8.4,递归过程,Public Function,fac,(n As Integer) As Integer,If n=1 Then,fac,=1,Else,fac,=n*,fac,(n-1),End If,End Function,Private Sub Command1_Click(),Print “,fac,(4)=“;,fac,(4),End Sub,递归调用,演示,8.4,递归过程,1、求阶乘。,n!=n*(n-1)!,2、,求菲波那契数列前10项。,F(1)=1,F(2)=1,,后面各项满 足:,F(n)=F(n-1)+F(n-2),3,、,求两个数的最大公约数。,4,、,逆转输出一个字符串。,5,、,汉诺塔游戏。,相关习题:,8.5 变量的作用域,变量的作用域,过程的作用域,静态变量,同名变量,8.5,变量的作用域,应用程序,(.,vbp,文件),类,模块(.,cls,),文件,一个或若干个窗体,模块(*.,frm,),文件,用户自定义子过程(,Sub),用户自定义函数过程(,Function),事件过程(,Sub),用户自定义子过程(,Sub),用户自定义函数过程(,Function),一个或若干个标准,模块(*.,bas),文件,全局级,模块级,过程级,8.5.1,变量的作用域,1.局部变量,作用域为定义的过程内。指在过程内用,Dim,语句声明的变量(或不加声明直接使用的变量),只能在本过程中使用,别的过程不可访问。局部变量随过程的调用而分配存储单元,并进行变量的初始化,一旦该过程体结束,变量的内容自动消失,占用的存储单元释放。不同的过程中可有相同名称的变量,彼此互不相干。使用局部变量有利于程序的调试,如,Dim b as string,8.5.1,变量的作用域,2.窗体/模块级变量,作用域为定义的窗体/模块内。指在一个窗体/,模块的任何过程外,即在“通用声明”段中用,Dim,语句,或用,Private,语句声明的变量,可被本窗体/模块的,任何过程访问。,如,Dim c as string,8.5.1,变量的作用域,3.全局变量,作用域为整个应用程序内。指在窗体或标准模块的任何过程或函数外,即在“通用声明”段中用,Public,语句声明的变量,可被应用程序的任何过程或函数访问。全局变量的值在整个应用程序中始终不会消失和重新初始化,只有当整个应用程序结束时,才会消失。,4、例题,如,Dim a as string,8.5.1,变量的作用域,演示,8.5.2,过程的作用域,1.窗体/模块级,指在某个窗体或标准模块内定义的过程,定义子过程或函数时前加,Private,关键字,过程只能被本窗体或本标准模块中的过程调用,8.5.2,过程的作用域,2、全局级,指在窗体或标准模块中定义的过程,其默认是全局的,也可加,Public,进行说明。全局级过程可供该应用程序的所有窗体和所有标准模块调用,调用方式有如下两种:,在窗体定义的过程,外部过程调用时,必须加窗体名,在标准模块定义的过程,外部过程均可调用,但过程名必须唯一,否则要加标准模块名,8.5.3,静态变量,每次调用过程时,用,Static,说明的变量保持原来的值,而用,Dim,说明的变量,每次调用过程时,都重新初始化。,形式如下:,Static,变量名 ,As,类型,Static Function,函数名(参数列表),As,类型,Static Sub,过程名(参数列表),8.5.3,静态变量,Private Sub Command1_Click(),Dim k As Integer,k = 5,Call,ss,(k),Print k :k = 5,Call,ss,(k),Print k,End Sub,Private Sub,ss,(,ByRef,n As Integer),Static,sta,As Integer,sta,= n +,sta,:n = n +,sta,End Sub,运行结果:,第一次调用:,K=10,第二次调用:,K=15,演 示,8.5.4,同名变量,变量的作用域不同时,名字可以相同,但在使用时如果不在本模块内,则必须加上变量所在模块的模块名。,同名变量的引用,a.,不同模块的全局变量同名:,在本模块中:直接用变量名引用。,在外模块中:模块名.变量名,b.,同一模块的全局变量与局部变量同名:,在过程内:只能引用局部变量(用变量名)。,在过程外:只能引用全局变量(用变量名)。,c.,同一模块的模块级变量与局部变量同名,在过程内:用变量名引用局部变量,在过程外:用变量名引用模块级变量。,8.6 程序示例,逆序输出,求,反正弦,最大公约数,直接插入,运动员名次,示例,实 验,1、实验指导书,P,93,实验11-1,2、实验指导书,P,101,实验11-6,3、实验指导书,P,101,实验11-8,4、实验指导书,P,101,实验11-9,5、实验指导书,P,104,实验12-1,6、实验指导书,P,107,实验12-3,7、实验指导书,P,110,实验12-6,8、求方程,ax,2,+,bx,+c=0,的根,用3个函数分别求当,b-4ac,大于0、等于0和小于0时的根,并输出结果,要求从主函数输入,a、b、c,的值。,实 验,综合实验,写几个函数:,1)、输入10个学生的姓名和学号;,2)、可增加、删除学生;,3)、按学号从小到大排序,姓名顺序也随之调整;,4)、输入一个学号,可显示姓名;,要求从主函数中输入学号,输出姓名,
展开阅读全文