c语言基础教程 - 第五章函数和存储类免费版(5)

2019-06-02 17:09

if(b[j]

执行该程序输出结果如下:

一2 0 5 6 9 21 49 87 说明:

(l)该程序是通过调用sort( )函数对已知数组a中的8个int型数进行由小到大排序。被调用函数sort()是没有返回值的。 (2)主函数中调用函数格式如下: sort(a,n)

其中,实参a是一个已知的数组名,该数组是一个一维数组,8个int型元素。实参n的值为8.可见,sort ()函数的两个实参中,一个是地址值,另一个变量值。

被调用函数sort( )的两个形参中,一个是数组名b,它是一个没有指定大小的一维int型数组,其类型与数组a相同,其大小将与所对应的实参数组大小相等。另一个形参是变量m.因此,不难看出该函数调用中,第一个参数是属于传址调用,第二个参数是传值调用。在传址调用中,将数组a的首元素地址传给b数组,使得a,b两个数组共占同一段内存单元。由于是传址调用不必拷贝数组元素的副本,因此,效率较高,节省了时间和空间的开销。这是传址调用的又一好处。

由于a,b数组共占同一段内存单元,因此在。rt()函数中,通过b数组元素的改变,而使得数组a的元素发生了变化,于是完成由小到大的排序。

(3)在函数sort( )中,选择排序法的算法是这样的:通过双重for循环,每作一次外重for循环,从指定的数中挑出最小的一个放在指定的元素位置,例如,第一次外重for循环,从5个数中挑出最小的放在第。个元素的位置,第二次外重循环从剩下的7个数中再挑出最小的放在第1个元素的位置,依次类推,外重for循环共进行7次,便将8个数的顺序由小到大排好。内重for环是用来确定在要查找的数中找出最小数所对应的下标值,并将它赋给k变量。然后,通过三个赋值语句将数值最小的那个元素换到待选数中的最前边。即下标值为i的位置。这种排序方法每次找出一个最小的数放在前边,直到最后剩下一个数为止。

5.3.4函数的嵌套调用、

所谓函数的嵌套调用是指在调用一个函数的过程中,又调用另外一个函数。例如,在调用A函数的过程中,还可以调用B函数,在调用B函数的过程中,还可以调用C函数,?当C函数调用结束后返回到B函数,当B函数调用结束后返回到A函数,当A函数调用结束后再返回到A的调用函数中。假定main( )调用A函数,上述的嵌套调用关系可用下图所示:

图中①②③一表示了执行嵌套过程的顺序号。即从①开始,经过了三级嵌套,到⑩结束。

这里还需重申一遍,C语言中函数的定义不允许嵌套,就是说不允许在函数中定义函数,C:语言程序中若干个函数都是平行的、独立的。函数之间是通过调用联系的。函数的调用是允许嵌套的,就是说在调用某个函数的过程中,还允许调用其他函数。

下面举一个函数嵌套调用的例子,通过该例搞清调用、返回之间的关系。

[例5.7」分析下列程序的输出结果。

main()

printf (\a();

printf (\} a()

printf<\b();

printf (\} b() {

printf (\c();

printf (\C()

printf(\{ c() {

printf(\”): }

请读者分析该程序后,写出输出结果。 [例5.8] 编程求出下式之和。 lk+2K+3k+??+nK

假定k为4,n为6,编写求上述和的程序如下: # define K 4 t}define N 6 main ( )

printf(\powers of integers from 1 to%d=\ printf (\一of_powers (K,N)); }

sum of一powers(k,n) int k,n; {

int i,sum=0; for(i=1 i<=n;i++) sum+=powers(i,k); return (sum ), ;

powers (m.n ) int m,n


c语言基础教程 - 第五章函数和存储类免费版(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:马河小学绩效方案文档

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: