收藏 分销(赏)

c语言程序设计_函数调用.ppt

上传人:s4****5z 文档编号:13972219 上传时间:2026-05-19 格式:PPT 页数:49 大小:239.50KB 下载积分:10 金币
下载 相关
c语言程序设计_函数调用.ppt_第1页
第1页 / 共49页
c语言程序设计_函数调用.ppt_第2页
第2页 / 共49页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,7,章函数与变量,7.1,函数概述,7.2,函数参数和返回值,7.3,函数的调用,7.4,数组的作为函数参数,7.5,变量的定义位置和作用域,7.6,动态存储方式与静态存储方式,7.7,函数的存储分类,7.8,程序设计举例,7.9,程序设计题目,C,语言函数分为两种,:,标准函数和用户自定义的函数。,标准函数是系统提供的已设计好的函数,可以直接调用,用户自己定义的函数是用户自己编写的用来解决具体问题的函数,.,(,1,),C,程序的执行从,main,函数开始,调用其他函数后流程回到,main,函数。,(,2,)所有函数都是平行的,即在定义函数时,是互相独立的,一个函数并不从属于另一函数,即函数不能嵌套定义,但可以互相调用,但不能调用,main,函数。,(,3,)从用户使用的角度看,函数分两种,:,标准函数,即库函数。这是由系统提供的,用户不用自己定义。,用户自己定义的函数,以解决用户的专门问题。,7.1,函数概述,(,4,)从函数的形式看,函数分两类,:,无参函数,:,主调函数并不将数据传送给被调用函数。,有参函数,:,在调用函数时,在主调函数和被调用函数之间有参数传递,也就是说,主调函数可以将数据传给被调用函数使用,被调用函数中的数据也可以带回来供主调函数使用。,7.1.2,函数的定义,1.,无参函数的定义,类型标识符 函数名(),说明部分 或,语句,说明,:,用“类型标识符”指定函数值的类型,即函数带回来的值的类型。,C,语言默认返回值的类型是整型。,2.,有参函数的定义,类型标识符 函数名(形式参数说明),说明部分,语句,类型标识符 函数名(形式参数表列),形式参数说明,说明部分,语句,例如,:,int,max,(,x,,,y,),int,x,,,y;/*,形式参数说明*,/,int,z;/*,函数体中的说明部分*,/,z=x,y?x:y,;,return,(,z,),;/*z,为函数的返回值*,/,这是一个求,x,和,y,二者中大者的函数,,x,和,y,为形式参数,由主调函数的实际参数把参数值传递给被调用函数中的形式参数,x,和,y,。,7.2.1,函数参数,在调用函数时,大多数情况下,主调函数和被调函数之间有数据传递关系。在定义函数时,函数名后面括号中变量名称为“形式参数”,简称“形参”。在调用函数时,函数名后面括号中的表达式称为“实际参数”,简称“实参”。,(,1,)在定义函数中指定的形参变量,在未出现函数调用时,它们并不占内存中的存储单元。只有在发生函数调用时函数,max,中的形参才被分配内存单元。调用结束后,形参所占用的内存单元也同时被释放。,(,2,)实参可以是常量、变量或表达式,如,:max,(,3,,,a+b,),;,但要求它们有确定的值。在调用时将实参的值赋给形参变量。,7.2,函数参数和返回值,(,3,)在定义的函数中,必须指定形参的类型。,(,4,)实参与形参的类型应一致。只有字符型与整型可以互相通用。,(,5,)实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。,7.2.2,函数的返回值,函数的返回值是由,return,语句传递的。,格式,:,return,(表达式),;,或,return,表达式,;,功能,:,用,return,语句从函数退出,返回到调用它的程序中,.,该语句有两重作用,:,(,1,)从函数中退出,返回到调用它的程序中。,(,2,)向调用程序返回一个值。,7.3.1,函数调用的一般形式,格式,:,函数名(实参表列),;,函数调用语句的执行过程,:,首先计算每个实参表达式的值,并把此值存入所对应的形参单元中,然后把执行流程转入函数体中,执行函数体中的语句,函数体执行完之后,将返回到调用此函数的程序中的下一条语句,继续去执行。,当执行到函数体的右花括号或,return,语句时,表示函数体执行完成,这时将返回到主调程序中。,7.3,函数的调用,7.3.2,对被调用函数的说明,在一个函数中调用另一个被调函数,需要具备的条件,:,(,1,)首先被调函数必须是已经存在的函数(库函数或用户自定义函数)。,(,2,)如果使用库函数,一般还应在本文件开头用,#include,命令将调用有关库函数时所需用的信息包含到本文件中来。,输入输出库函数,:#include,使用系统定义的标准输入输出函数。,数学库函数,:#include,math.h,使用系统定义的标准数学运算函数。,(,3,)如果使用用户自己定义的函数,而且该函数与调用它的函数(即主调函数)在同一个文件中,一般还应该在主调函数中对被调用函数的返回值的类型作说明。,这种类型说明的一般形式为,:,类型标识符 被调函数函数名(),;,对被调用函数的说明,在以下几种情况下可以省略,:,(,1,)如果函数的值(函数的返回值)是整型或字符型,可以不进行说明,系统对它们自动按整型说明。,(,2,)如果被调用函数的定义出现在主调函数之前,可以不进行说明,因为编译系统已经先知道了已定义的函数类型,会自动处理。,(,3,)如果在所有函数定义之前,对函数类型进行了说明,则在各个主调函数中不再进行说明。,7.3.4,函数的嵌套调用,C,语言的函数定义都是互相平行、独立的,可以嵌套调用函数即在调用一个函数的过程中,又调用另一个函数,.,7.3.5,函数的递归调用,在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。,C,语言的特点之一就在于允许函数递归调用。例如,:,int,f,(,x,),int,x;,int,y,,,z;,z=f,(,y,),;,return,(,2*z,),;,7.4.1,数组元素做函数实参,由于实参可以是表达式,数组元素又可以是表达式的组成部分,因此数组元素可以作为函数的实参,与变量作实参一样,是单向传递,即“值传送”。只能将数组元素的值传递给被调函数的形参,不能带回变化的值。这种方式适合部分数组元素传递和元素较小的数组传递。,7.4,数组的作为函数参数,运行结果,:,形参值为,:2 3 4,实参值为,:1 2 3,7.4.2,用数组名做函数的实参与形参,例,7.1,有一个一维数组,s,,存放,10,个学生成绩,求平均成绩,.,float average,(,a,),/*,数组名,a,作形参*,/,float a,10,;,int,i;,float v,,,sum=a,0,;,for,(,i=1;i10;i+,),sum=,sum+a,i,;,v=sum/10;,return,(,v,),;,main,(),float s,10,,,v;,int,i;,printf,(,input10s:n,),;,for,(,i=0;i10;i+,),scanf,(,%f,,,&s,i,),;,printf,(,n,),;,v=average,(,s,),;/*,数组名,s,作实参*,/,printf,(,average is%5.2f,,,v,),;,运行结果,:,input10s:,100 56 78 98.5 76 87 99 67.5 75 97,average is 83.40,说明,:,(,1,)用数组名做函数参数,应该在主调函数和被调函数中分别定义数组。,(,2,)实参数组与形参数组类型应一致。,(,3,)实参数组和形参数组大小可以一致也可以不一致,,C,编译时对形参数组大小不作检查,只是将实参数组的首地址传给形参数组。若要求形参数组得到实参数组全部的元素值,则应当指定形参数组与实参数组大小一致。,也可以不指定形参数组大小,在定义数组名后面跟一个空的方括弧,为了在被调函数中处理数组元素的需要,可以另设参数,说明传递数组元素的个数。,例,7.2,float average,(,a,,,n,),/*a,为形参数组名,,n,用于说明数组元素个数*,/,float a,;,int,n;,int,i;,float v,,,sum=a,0,;,for,(,i=1;i0,),int,b=40;,b,的作用域仅在其定义的分程序之内,即进入分程序时建立,b,变量,结束分程序时立即撤消。,b,的作用域,x,、,a,的作用域,7.5.2,全局变量,全局变量又称做外部变量,是在函数外部定义的变量。其有效范围是从变量定义的位置开始到本源文件结束止。,若在同一个源文件中,局部变量与全局变量同名,则在局部变量的作用范围内,全局变量被屏蔽,不起作用。,在函数体外进行的函数说明也使该函数具有全局的性质。,int,a=1,,,b=5;,float f1,(,x,),int,x;,int,c,,,d;,char c1,,,c2;,char f2,(,x,,,y,),int,x,,,y;,int,i,,,j;,main,(),int,m,,,n;,全局变量,c1,、,c2,作用域,全局变量,a,、,b,作用域,a,、,b,、,c1,、,c2,都是全局变量,但它们的作用范围不同。在,main,函数和函数,f2,中可以使用全局变量,a,、,b,、,c1,、,c2,,但在函数,f1,中,只能使用全局变量,a,、,b,,而不能使用,c1,和,c2,。,说明,:,(,1,)全局变量的作用,:,增加函数间数据联系的渠道。由于同一文件中的所有函数都能引用全局变量的值,因此,如果在一个函数中改变了全局变量的值,就能影响到其他函数,相当于各个函数间有直接的传递通道。由于函数的调用只能带回一个返回值,因此有时可以利用全局变量增加与函数联系的渠道,从函数得到一个以上的返回值。,对于全局变量,如果在定义时不进行初始化,则系统将自动赋予其初值,对数值型赋,0,,对于字符型赋空,0,。,(,2,)使用全局变量会增加程序的内存开销,因为全局变量在程序的整个执行过程中都有效,即一直占用着内存单元,而不是像局部变量那样,在进入其所在函数时才开辟存储单元,退出函数时便将其释放。使用全局变量,还会降低函数通用性,而且会降低程序的清晰度。建议不要无限制地使用全局变量。,(,3,)在定义全局变量时,最理想的定义位置是在源文件的开头处,这样,在整个文件中的所有函数均可使用该变量。如果将一全局变量定义在源程序文件的中间,则其前面的函数不能使用该变量。如果在定义点之前的函数想引用该外部变量,则应该在该函数中用关键字,extern,作“外部变量说明”。表示该变量在函数的外部定义,在函数内部可以使用它们。见例,7.10.,例,7.3,求两个数的最大值。,int,max,(,x,,,y,),int,x,,,y;,int,z;,z=x,y?x:y,;,return,(,z,),;,main,(),extern,int,a,,,b;/*,外部变量说明*,/,printf,(,max=%,dn,,,max,(,a,,,b,),;,int,a=10,,,b=120;/*,外部变量定义*,/,运行结果,:,max=120,由于外部变量定义在,main,函数之后,因此在,main,函数引用外部变量,a,和,b,之前,应该用,extern,进行外部变量说明,说明,a,、,b,是外部变量。如果不作,extern,说明,编译时出错,系统不会认为,a,、,b,是已定义的外部变量。一般的做法是外部变量的定义放在引用它的所有函数之前,这样可以避免在函数中多加一个,extern,说明。,外部变量的定义与外部变量的说明并不是一回事。外部变量的定义只能有一次,它的位置在所有函数之外,而同一文件中的外部变量的说明可以有多次,它的位置在函数之内。,(,4,)如果在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用。,例,7.4,求两个数的最大值。,int,a=3,,,b=5;/*a,、,b,为外部变量*,/a,、,b,的作用范围,max,(,a,,,b,),int,a,,,b;/*a,、,b,为局部变量*,/,int,c;,c=a,b?a:b,;,return,(,c,),;,main,(),int,a=10;/*a,为局部变量*,/,printf(max,=%,dn,max,(,a,b,);,运行结果,:,max=10,形参,a,、,b,作用范围,局部变量,a,作用范围,全局变量,b,作用范围,第一行定义了外部变量,a,、,b,,并使之初始化。第二行开始定义函数,max,,,a,、,b,是形参,形参也是局部变量。函数,max,中的,a,、,b,不是外部变量,a,、,b,,它们的值是由实参传给形参的,外部变量,a,、,b,在,max,函数范围内不起作用。最后,4,行是,main,函数,定义了一个局部变量,a,,因此全局变量,a,在,main,函数范围内不起作用,而全局变量,b,在此范围内有效。因此,printf,函数中的,max,(,a,,,b,)相当于,max,(,10,,,5,),程序运行后得到结果为,10,。,7.6.1,变量的存储类别,从变量的作用域(即从空间)角度来分,可以分为全局变量和局部变量。,从变量值存在时间(即生存期)角度来分,可以分为静态存储方式和动态存储方式。,7.6,动态存储方式与静态存储方式,1.,静态存储方式,是指在程序运行期间分配固定的存储空间的方式。,2.,动态存储方式,是指在程序运行期间根据需要进行动态的分配存储空间的方式。,供用户使用的存储空间可分为三部分,:,(,1,)程序区,;,(,2,)静态存储区,;,(,3,)动态存储区。,数据分别存放在静态存储区和动态存储区中。全局变量存放在静态存储区中。在程序开始执行时给全局变量分配存储区,程序执行完毕就释放。在程序执行过程中它们占据固定的存储单元,而不是动态地分配和释放。,局部变量存放在动态存储区中,在函数调用开始时分配动态存储空间,函数结束时释放这些空间。在程序执行过程中,这种分配和释放是动态的。,在动态存储区中存放以下数据,:,函数形参变量,。,在调用函数时,给形参变量分配存储空间,.,局部变量。未加,static,说明的局部变量,即自动变量。,函数调用时的现场保护和返回地址等。,对以上这些数据,在函数调用开始时分配动态存储空间,函数结束时,释放这些空间。程序运行过程中,这种分配和释放是动态的,如果在一个程序中两次调用同一函数,分配给此函数中局部变量的存储空间地址可能是不同的。如果一个程序包含了若干个函数,每个函数中的局部变量的生存期并不等于整个程序的执行周期,它只是程序执行周期的一部分。根据函数调用的需要,动态分配和释放存储空间。,在,C,语言中每一个变量和函数有两个属性,:,数据类型和数据的存储类别。存储方法分为两大类,:,静态存储类和动态存储类。,具体包括,4,种,:,自动(,auto,),;,静态(,static);,寄存器,(,reg,ister,),;,外部(,extern,)。,7.6.2,局部变量的存储方式,1.,自动存储类别,函数中的局部变量,如不为,static,存储类别都是动态分配存储空间的,存储在动态存储区中,分配和释放存储空间的工作由编译系统自动处理,因此这类局部变量称为自动变量。自动变量用关键字,auto,作存储类型说明。例如,:,当局部变量未指明存储类别时,被定义为,auto,存储类别。,int,f,(,a,),/*,定义函数*,/,int,a;/*,定义,a,为形参*,/,auto,int,b,,,c=9;/*,定义,b,、,c,为自动变量*,/,b,、,c,是自动变量,,c=9,,执行完,f,函数后自动释放其所占的存储单元。,auto,也可以省略不写,则隐含确定为“自动存储类别”,它属于动态存储类别。,auto,int,b,,,c=9;,与,int,b,,,c=9;,是等价的。,2.,静态存储类别,存储分类符,static,既可用于说明全局变量,也可用于说明局部变量。当其作用于局部变量时,该变量称为局部静态变量,;,其作用于全局变量时,该变量称为外部静态变量。,(,1,)局部静态变量,在函数体内用,static,说明的变量称为静态局部变量。在程序运行期间,它占据一个永久性的存储单元,在退出函数后,值仍旧保留。静态变量是在编译时赋初值,因此在程序执行期间,一旦存储单元中的值改变,就不会再执行赋初值语句。未赋初值的变量,,C,编译程序将其置为,0,。形参不允许说明为静态存储类别。,例,7.6,main,(),f1,(),;,f1,(),;,f1,(),;,运行结果,:,x=1,f1,(),int,x=0;,x=x+1;,printf,(,x=%,dn,,,x,),;,x=1,x=1,若把,int,x=0;,改为,:static,int,x=0;,运行结果如下,:,x=1,x=2,x=3,从程序可以看出,自动变量在函数每次被调用时,都进行初始化。而静态变量只在编译阶段初始化一次。在上例中,前一种情况,x,是自动变量,,f1,()函数每次被调用时,,x,都初始,化,因此,输出结果始终是,1,。后一种情况,x,是局部静态变量,,f1,()函数第一次被调用时,,x,为,0,,退出时为,1,。第二次调用时,,x,的值是,1,,仍然存在,因此,输出时,x,值为,2,,同样,第三,次调用时,,x,的值为,3,。,(,2,)外部静态变量,当定义一全局变量时,若将其指定为,static,类,则说明该全局变量只在本源程序文件中使用,其他的源程序文件不能引用该全局变量。这种外部静态变量主要用于同一程序分别由多人编写完成时的情况,避免不同编程者定义出相同名字的全局变量。,对于全局变量,不管是否加,static,说明,均属于静态存储变量。使用,static,只是为了限制其引用范围。,3.,寄存器存储类别,为了提高程序的执行效率,,C,语言允许将局部变量的值放在,CPU,的通用寄存器中,这种变量称为寄存器变量。寄存器变量用关键字,register,说明。例如,函数体中的变量说明,:,register,int,a,,,b;,定义了两个寄存器变量,a,、,b,,函数运行时将尽可能把,a,、,b,的值放在寄存器中。,在计算机中,从内存“存取”数据要比直接从寄存器中“存取”数据慢,所以对一些使用特别频繁的变量,可通过,register,将其定义成寄存器变量,使程序直接从寄存器中“存取”数据,以提高程序的效率。,由于计算机的寄存器数目有限,并且不同的计算机系统允许使用寄存器的个数不同,所以不宜定义太多的寄存器变量,只有将少量变化频繁的变量定义成寄存器变量,如循环控制变量等。当一函数内定义的寄存器变量的个数超过系统所允许使用的寄存器数时,系统将自动将其作为一般局部变量处理,即仍使用内存单元存放其值,并不提高执行速度。,说明,:,(,1,)只有局部自动变量和形式参数可说明为寄存器变量。,(,2,)一个计算机系统中的寄存器的数目是有限的。,(,3,)不同系统对,register,的处理不同。,(,4,)局部静态变量不能定义为寄存器变量,不能写成,:,register static a,,,b,,,c;,7.6.3,全局变量的存储方式,全局变量可以使用,extern,和,static,存储类别。当未对全局,变量指定存储类别时,隐含为,extern,类别。,1.,外部存储类别,当在一个文件中要引用另一个文件中的全局变量或在全局变量之前要引用它时,可用,extern,说明。相当于扩大全局变量的作用域。,例,7.7,f1.c,程序文件,main,(),int,power,(),;,extern,int,a;,int,b=3,,,c,,,d,,,m;,printf,(,a,,,m=?n,),;,scanf,(,%d,,,%d,,,&a,,,&m,),;,c=a*b;,printf,(,%,d%d,=%,dn,,,a,,,b,,,c,),;,d=power,(,m,),;,printf,(,%,d%d,=%,dn,,,a,,,m,,,d,),;,int,a;,f2.c,程序文件,extern,int,a;,power,(,n,),int,n;,int,i,,,y=1;,for,(,i=1;i=,n;i,+,),y*=a;,return,(,y,),;,程序文件,f1,中的最后一行为对全局变量,a,的定义,,main,函数在其作用域之外,所以在,main,函数中对其进行了外部说明,而在文件,f2,中的第一行也是对,a,进行说明。,由于全局变量在整个程序的运行过程中“永久性”地占用固定的存储单元,所以它存放在静态数据区中,属于静态存储变量,.,2.,静态存储类别,由,static,说明的全局变量称为静态全局变量,它只能由本文件引用,即使在其他文件中用,extern,说明也不能使用,相当于限制了全局变量作用域的扩展。,7.6.4,存储类别小结,对一个数据的定义,需要指定两种属性,:,数据类型和存储类别,分别用两个关键字进行定义,如,:,static,int,a;,(静态内部变量或静态外部变量),auto char c;,(自动变量,在函数内定义),register,int,d;,(寄存器变量,在函数内定义),extern,int,b;,(定义外部变量),从不同角度做以下归纳。,(,1,)从作用范围角度分,:,有局部变量和全局变量。它们采取的存储类别如下,:,自动变量,即动态局部变量(离开函数,值就消失),静态局部变量(离开函数,值仍然保留),寄存器变量(离开函数,值就消失),(形式参数可以定义为自动变量或寄存器变量),局部变量,静态外部变量(只限本文件引用),外部变量,(,即非静态的外部变量,允许其他文件引用,),(,2,)从变量存在的时间来区分,有动态存储和静态存储两种类型。,自动变量(本函数内有效),寄存器变量(本函数内有效),形式参数(本函数内有效),静态局部变量(函数内有效),静态外部变量(本文件内有效),外部变量(其他文件可引用),(,3,)从变量值存放的位置来区分,:,静态局部变量,静态外部变量(函数外部静态变量),外部变量(可为其他文件引用),全局变量,动态存储,静态存储,内存中静态存储区,内存中动态存储区,:,自动变量和形式参数,CPU,中的寄存器,:,寄存器变量,7.6.5,内部函数和外部函数,1.,内部函数,内部函数又称静态函数。定义时被说明成,static,类别,静态函数只局限于所在文件,其他文件不能调用。,2.,外部函数,定义时被说明成,extern,类别的函数为外部函数。函数的隐含类别为,extern,类别,外部函数可以被其他文件调用。,7.7.1,内部函数,7.7,函数的存储分类,当定义一个函数时,若在函数返回值的类型前加上,static,时,则称此函数为“静态”函数。,格式,static,类型标识符函数名(形参表),静态函数的特征只限于本文件中的其他函数调用,所以又称作“内部”函数。使用内部函数,可以避免不同文件因函数同名而引起混乱。通常把只能由同一文件使用的内部函数和外部变量放在一个文件中,在它们前面加上,static,使之局部化,其他文件不能引用。,例,7.8,file1.c,(文件,1,),main,(),int,a,,,b;,extern void swap,(),scanf,(,%,d%d,,,&a,,,&b,),;,if,(,ab,),swap,(,a,,,b,),;,printf,(,%d,,,%,dn,,,a,,,b,),;,file2.c,(文件,2,),static void swap,(,x,,,y,),int,x,,,y;,int,t;,t=,x;x,=,y;y,=t;,file2.c,中的函数,swap,是内部函数,只能被,file2.c,中的其他函数调用。在,file1.c,的,main,函数中,虽然用,extern,说明了,swap,是外部函数,但这是徒劳的。连接时会产生出错信息。,7.7.2,外部函数,在定义函数时,如果在函数名和函数类型的前面加上关键字,extern,,则表示此函数是外部函数,可供其他文件调用。,格式,extern,类型标识符函数名(形参表),C,语言规定,如果在定义函数时省略,extern,,则隐含为外部函数。,通常,当函数调用语句与被调函数不在同一文件,且函数的返回值为非整型时,应在调用语句所在函数的说明部分用,extern,说明所调用函数。,例,7.9,file1.c,(文件,1,),extern float add,(),;,main,(),float a,,,b;,scanf,(,%,f%f,,,&a,,,&b,),;,printf,(,a=%,fnb,=%,fntotal,=%,fn,,,a,,,b,,,add,(,a,,,b,),;,.,/*file1.c,的尾部*,/,file2.c,(文件,2,),float add,(,x,,,y,),float x,,,y;,return,(,x+y,),;,在文件,file1.c,的,main,函数中要调用,add,函数,而,add,函数在,file2.c,中。因此在,main,函数的前面用,extern float add,()来说明,这时,函数,add,的作用域扩展到,file1.c,文件的末尾。,例,7.10,输出,1,到,5,的阶乘值。,#include,int,fac,(,int,n,),if(n1),f=n*fac(n-1),else,f=1;,return,(,f,),;,main,(),int,i;,for,(,i=1;i=5;i+,),7.8,程序设计举例,printf,(,%d!=%,dn,,,i,,,fac,(,i,),;,运行结果为,1!=1,2!=2,3!=6,4!=24,5!=120,题,7.1,编写程序,求,s=s,1,+s,2,+s,3,+s,4,的值,,其中,:s,1,=1+1/2+1/3+1/50,s,2,=1+1/2+1/3+1/100,s,3,=1+1/2+1.3+1/150,s,4,=1+1/2+1/3+1/200,此题目可以首先编一函数,用于求,1+1/2+1/3+1/n,的值,然后通过函数调用求,s,的值。,题,7.2,利用选择排序法,对数组,a,中的,10,个整数按从小到大的顺序排列,并将排序结果显示出来。,选择排序法的基本思想是,:,先将,a,0,到,a,9,中的最小数与,a,0,对换,;,再将,a,1,到,a,9,中的最小数与,a,1,对换,;,依此类推,直到排序完成为止。,7.9,程序设计题目,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服