函数的嵌套调用是指在执行被调用函数时,被调用函数又调用了其他函数。C语言规定:函数定义不可嵌套,但可以嵌套调用函数(图5-3)。
图5-3 函数的调用
递归调用是指一个函数在它的函数体内直接或间接调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。
提示:
①C编译系统对递归函数的自调用次数没有限制。
②每调用函数一次,就会在内存堆栈区分配空间用于存放函数变量、返回值等信息,所以递归次数过多,可能引起堆栈溢出。
结合案例导读和本节的函数知识,总结如下:
1.直接或间接调用函数本身,则该函数称为递归函数。日常为人处事也蕴含着这样朴素的道理,正所谓“言传身教”。
2.用语言来教导,更要以身作则树立榜样,就好像教导了千万遍那般。由此可见,除了用言语来教育外,自身的行为也是会影响他人的。
1.在C语言中以下说法不正确的是( )。
A.实参可以是常量、变量或表达式 B.形参可以是常量、变量或表达式
C.实参可以为任意类型 D.形参应与其对应的实参类型一致
2.以下程序有语法性错误,有关错误原因的正确说法是( )。
A.语句void prt_char();有错,它是函数调用语句,不能用void说明
B.变量名不能使用大写字母
C.函数说明和函数调用语句之间有矛盾
D.函数名不能使用下画线
3.在C语言中以下说法正确的是( )。
A.函数的定义可以嵌套,但函数的调用不可以嵌套
B.函数的定义不可以嵌套,但函数的调用可以嵌套
C.函数的定义和调用均不可以嵌套
D.函数的定义和调用均可以嵌套
4.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( )。
A.函数调用可以作为独立的语句存在 B.函数调用可以作为一个函数的实参(www.daowen.com)
C.函数调用可以出现在表达式中 D.函数调用可以作为一个函数的形参
5.以下函数定义形式正确的是( )。
A.double fun(int x,int y) B.double fun(int x;int y)
C.double fun(int x,int y) D.double fun(int x,y)
6.以下建立函数的目的的说法,正确的是( )。
A.提高程序的执行效率 B.提高程序的可读性
C.减少程序的篇幅 D.减少程序文件所占内存
7.以下说法正确的是( )。
A.用户若需调用标准库函数,调用前必须重新定义
B.用户可以重新定义标准库函数,若如此,该函数将失去原有含义
C.系统根本不允许用户重新定义标准库函数
D.用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包含到用户源文件中,系统自动去调用
8.若调用一个函数,且此函数中没有return语句,则正确的说法是( )。
A.没有返回值 B.返回若干个系统默认值
C.能返回一个用户所希望的函数值 D.返回一个不确定的值
9.函数在定义时,省略函数类型说明符,则该函数值的类型为( )。
A.int B.float C.long D.double
10.以下对C语言函数的有关描述中,正确的是( )。
A.在C语言中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B.C函数既可以嵌套定义又可递归调用
C.函数必须有返回值,否则不能使用函数
D.C程序中有调用关系的所有函数必须放在同一个源程序文件中
11.请读程序:
上面程序的输出结果是( )。
A.11 B.10 C.21 D.31
12.写两个函数,分别求两个整数的最大公约数和最小公倍数。从键盘输入两个整数,在主函数中调用这两个函数,输出它们的最大公约数和最小公倍数。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。