理论教育 C语言程序设计:函数嵌套与递归调用

C语言程序设计:函数嵌套与递归调用

时间:2023-10-20 理论教育 版权反馈
【摘要】:函数的嵌套调用是指在执行被调用函数时,被调用函数又调用了其他函数。执行递归函数将反复调用其自身,每调用一次就进入新的一层。结合案例导读和本节的函数知识,总结如下:1.直接或间接调用函数本身,则该函数称为递归函数。

C语言程序设计:函数嵌套与递归调用

函数的嵌套调用是指在执行被调用函数时,被调用函数又调用了其他函数。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.写两个函数,分别求两个整数的最大公约数和最小公倍数。从键盘输入两个整数,在主函数中调用这两个函数,输出它们的最大公约数和最小公倍数。

13.编程验证哥德巴赫猜想:一个大于等于4的偶数可以表示为两个素数之和,判断一个数是否是素数用函数来实现。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈