北师大高级C语言课程讲义:递归调用与函数调用示例

版权申诉
0 下载量 158 浏览量 更新于2024-07-07 收藏 61KB DOCX 举报
北师大高级程序设计C语言文档是一份针对C语言学习者的教学资料,主要涵盖了C语言的一些基本概念、函数调用方式以及程序设计中的关键部分。在文档中,我们发现了几个与C语言编程相关的题目,用于测试理解程度和实践能力。 1. 关于递归调用: 在C语言中,函数之间的调用可以分为直接递归调用和间接递归调用。**错误**选项表明C语言既不允许直接递归调用也不允许间接递归调用,这是不正确的,因为C语言确实支持函数自己调用自己(直接递归)或者通过返回值间接调用其他函数(间接递归)。正确答案是**C语言中各函数之间既允许直接递归调用也允许间接递归调用**。 2. 函数调用示例: 题目展示了如何正确地调用函数。在提供的代码片段中,**fun(int*c){...}**是一个接受指针参数的函数。正确的调用语句是`fun(b);`,这里调用fun函数,并将一个整型变量的地址作为参数传递。 3. 动态数组和局部变量: 第3题涉及到动态数组`a[]`和局部变量`x`的交互。`sub()`函数使用`static int t`作为局部静态变量,每次调用时更新`y`指向的值。程序输出的结果取决于`t`的初始值,由于`t`在`sub()`函数内部初始化为3,所以输出是**1234**,因为每次循环`t`递减1,直到取到数组最后一个元素。 4. 静态变量和循环体: 第4题涉及`func()`函数中的静态变量`m`和`i`。每次调用`func()`时,`m`和`i`的值会累积,因为它们在函数外部未初始化且不会每次都重置。因此,输出结果是**8,17**,因为`i`在每次调用后增加`m+1`,`m`则根据新的`i`值更新。 5. 静态变量与数组操作: 第5题中,`fun()`函数使用了静态变量`j`和`dos`数组。在循环中,每次调用`fun(a)`改变了数组`a`的部分元素。输出取决于`j`的初始值,这里因为`j`是静态的,第二次调用`fun(a)`会覆盖第一次的操作。由于`j`初始为0,最终输出是**34756**,表示数组元素的顺序有所改变。 6. 循环中的递归和自增操作: 最后一个问题展示了递归调用和变量自增的结合。函数`f()`中,`a`和`b`的值在每次递归调用时更新。`main()`中的循环调用`f(a)`两次,但每次递归后`a`的值都会改变。由于递归结束后`a`的值为`2`,输出结果将是递归函数的返回值,即`5`和`6`。 总结,这份文档提供了C语言基础中的递归调用、函数调用语法、数组操作、静态变量以及循环结构等知识点的实例和练习题,有助于深入理解和掌握C语言的编程技巧。
2022-11-27 上传