第37练 第7章 函数的嵌套调用《C语言程序设计》(电子工业出版社)一课一练

| 2份
| 7页
| 33人阅读
| 0人下载

内容正文:

编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(电子工业出版社)一课一练的第7章的第37练,内容涵盖第7章函数的7.6 函数的嵌套调用。 《C语言程序设计》(电子工业出版社)一课一练 第37练 第7章 函数 7.6 函数的嵌套调用 1、 单项选择题(本题共4小题) 1、关于函数嵌套调用的执行流程,下列描述正确的是( ) A. main 调用函数 a,a 调用函数 b,b 执行完直接返回 main,a 再返回 main B. main 调用函数 a,a 调用函数 b,b 执行完返回 a 的调用断点,a 执行完返回 main 的调用断点 C. 先执行最内层函数 b,再执行 a,最后执行 main D. 可以同时并行执行 main、a、b 三个函数 【答案】B 【解析】函数嵌套调用遵循 "逐层进入、逐层返回" 的规则,每调用一个函数就转去执行该函数,被调函数执行完毕后,必须返回上一级函数的调用断点继续执行,最终回到 main 函数结束程序。 2、下列关于 C 语言函数的规则,正确的是( ) A. 允许在一个函数内部定义另一个函数 B. 允许嵌套定义和嵌套调用 C. 既不允许嵌套定义也不允许嵌套调用 D. 不允许嵌套定义,但允许嵌套调用 【答案】D 【解析】C 语言规定所有函数是平行独立的,不能嵌套定义,但允许在一个函数的执行过程中调用另一个函数,即嵌套调用,这是模块化程序设计的核心实现方式。 3、在计算大数值的嵌套调用函数中,将函数返回值类型声明为长整型(long)的主要原因是( ) A. 避免大数值计算时发生溢出错误 B. 长整型占用的内存空间更小 C. 长整型的计算速度比 int 更快 D. 长整型可以直接存储字符串数据 【答案】A 【解析】int 类型的取值范围有限,阶乘、平方累加等计算的结果容易超出其范围,导致数值溢出;长整型的取值范围远大于 int,能容纳更大的计算结果,保证数值的准确性。 4、函数嵌套调用时,参数传递的核心规则是( ) A. 只能从 main 函数直接传递到最内层函数 B. 每一层函数调用都独立遵循值传递的规则,形参是实参的副本 C. 内层函数修改形参的值会直接影响主函数中的实参变量 D. 嵌套调用时不允许使用数组作为函数参数 【答案】B 【解析】嵌套调用的每一层都是独立的函数调用,若使用值传递,每一层的形参都是实参的独立副本,修改形参不会反向影响上一级函数的变量;参数可以是任意合法类型,包括数组。 2、 判断题(本题共3题) 1、C 语言允许在一个函数内部定义另一个函数,实现函数的嵌套定义。( ) 【答案】× 【解析】C 语言的所有函数都是平行独立的,不支持嵌套定义,只能在一个函数的执行过程中调用另一个函数,即嵌套调用。 2、函数嵌套调用时,最内层函数执行完毕后,会逐层返回上一级函数的调用断点继续执行,最终回到 main 函数结束程序。( ) 【答案】√ 【解析】嵌套调用的执行逻辑是 "逐层进入、逐层返回",每一层函数执行完成后,必须回到调用它的上一级函数的断点位置,保证每一层函数的逻辑都能完整执行。 3、在嵌套调用中,自定义函数可以调用 main 函数,让程序重复执行主逻辑。( ) 【答案】× 【解析】main 函数是系统规定的程序入口,只能由系统启动,任何自定义函数都不能调用 main 函数,否则会引发语法错误,导致程序编译失败。 3、 填空题(本题共2题) 1、函数嵌套调用的执行流程为:main 函数调用函数 A,函数 A 调用函数 B,____,再返回函数 A 的调用断点继续执行,最终返回 main 函数结束程序。 【答案】函数 B 执行完毕返回函数 A 的调用断点 【解析】嵌套调用遵循 "逐层返回" 的规则,最内层函数执行完成后,必须先回到直接调用它的上一级函数,不能跳过中间层直接返回 main 函数。这样的流程保证了每一层函数的代码都能完整执行,符合模块化设计的逻辑。 2、当嵌套调用的函数需要处理阶乘、平方累加等大数值计算时,应将函数的返回值类型声明为____,避免计算结果超出数据类型范围导致溢出错误。 【答案】长整型 【解析】int 类型的取值范围有限,大数值计算时容易出现溢出,导致结果失真。长整型的取值范围远大于 int 类型,能容纳更大的计算结果,保证数值的准确性。 4、 读程序写结果题(本题共1题) 1、阅读下面的 C 语言程序,写出程序运行后的输出结果。 【程序代码】 #include <stdio.h> long calc_fact(int n) { long res = 1; for(int i=1; i<=n; i++) res *= i; return res; } long calc_square_fact(int n) { return calc_fact(n*n); } int main() { long sum = calc_square_fact(1) + calc_square_fact(2); printf("sum=%ld", sum); return 0; } 【答案】 程序运行结果: sum=25 【解析】 主函数调用calc_square_fact(1),计算 1 的平方 1 后,嵌套调用calc_fact(1)得到阶乘 1;再调用calc_square_fact(2),计算 2 的平方 4 后,嵌套调用calc_fact(4)得到阶乘 24。主函数将两个结果相加得到 25 并输出。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(电子工业出版社)一课一练的第7章的第37练,内容涵盖第7章函数的7.6 函数的嵌套调用。 《C语言程序设计》(电子工业出版社)一课一练 第37练 第7章 函数 7.6 函数的嵌套调用 1、 单项选择题(本题共4小题) 1、关于函数嵌套调用的执行流程,下列描述正确的是( ) A. main 调用函数 a,a 调用函数 b,b 执行完直接返回 main,a 再返回 main B. main 调用函数 a,a 调用函数 b,b 执行完返回 a 的调用断点,a 执行完返回 main 的调用断点 C. 先执行最内层函数 b,再执行 a,最后执行 main D. 可以同时并行执行 main、a、b 三个函数 2、下列关于 C 语言函数的规则,正确的是( ) A. 允许在一个函数内部定义另一个函数 B. 允许嵌套定义和嵌套调用 C. 既不允许嵌套定义也不允许嵌套调用 D. 不允许嵌套定义,但允许嵌套调用 3、在计算大数值的嵌套调用函数中,将函数返回值类型声明为长整型(long)的主要原因是( ) A. 避免大数值计算时发生溢出错误 B. 长整型占用的内存空间更小 C. 长整型的计算速度比 int 更快 D. 长整型可以直接存储字符串数据 4、函数嵌套调用时,参数传递的核心规则是( ) A. 只能从 main 函数直接传递到最内层函数 B. 每一层函数调用都独立遵循值传递的规则,形参是实参的副本 C. 内层函数修改形参的值会直接影响主函数中的实参变量 D. 嵌套调用时不允许使用数组作为函数参数 2、 判断题(本题共3题) 1、C 语言允许在一个函数内部定义另一个函数,实现函数的嵌套定义。( ) 2、函数嵌套调用时,最内层函数执行完毕后,会逐层返回上一级函数的调用断点继续执行,最终回到 main 函数结束程序。( ) 3、在嵌套调用中,自定义函数可以调用 main 函数,让程序重复执行主逻辑。( ) 3、 填空题(本题共2题) 1、函数嵌套调用的执行流程为:main 函数调用函数 A,函数 A 调用函数 B,____,再返回函数 A 的调用断点继续执行,最终返回 main 函数结束程序。 2、当嵌套调用的函数需要处理阶乘、平方累加等大数值计算时,应将函数的返回值类型声明为____,避免计算结果超出数据类型范围导致溢出错误。 4、 读程序写结果题(本题共1题) 1、阅读下面的 C 语言程序,写出程序运行后的输出结果。 【程序代码】 #include <stdio.h> long calc_fact(int n) { long res = 1; for(int i=1; i<=n; i++) res *= i; return res; } long calc_square_fact(int n) { return calc_fact(n*n); } int main() { long sum = calc_square_fact(1) + calc_square_fact(2); printf("sum=%ld", sum); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第37练 第7章 函数的嵌套调用《C语言程序设计》(电子工业出版社)一课一练-第1页
1

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。