第40练 第7章 变量的存储类型《C语言程序设计》(电子工业出版社)一课一练

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

内容正文:

编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(电子工业出版社)一课一练的第7章的第40练,内容涵盖第7章函数的7.8.3 变量的存储类型(auto/static/register/extern)。 《C语言程序设计》(电子工业出版社)一课一练 第40练 第7章 函数 7.8.3 变量的存储类型(auto/static/register/extern) 1、 单项选择题(本题共4小题) 1、下列关于 auto 变量的描述,正确的是( ) A. auto 关键字必须显式声明,不能省略 B. auto 变量属于静态存储方式,函数调用结束后存储空间不释放 C. 函数中的形参默认属于 auto 变量 D. auto 变量如果不赋初值,默认值为 0 2、静态局部变量与自动变量的核心区别是( ) A. 静态局部变量的作用域更大 B. 静态局部变量在编译时只赋初值一次,函数调用结束后保留存储空间 C. 静态局部变量只能在函数内部定义 D. 静态局部变量必须赋初值,否则会报错 3、下列变量中,不能用 register 关键字声明的是( ) A. 函数的形参 B. 函数内部的自动变量 C. 静态局部变量 D. 复合语句中的自动变量 4、extern 关键字的主要作用是( ) A. 声明静态局部变量 B. 扩展外部变量的作用域 C. 定义自动变量 D. 提高变量的执行效率 2、 判断题(本题共3题) 1、自动变量如果在定义时不赋初值,其默认值为 0 或空字符。( ) 2、用 static 声明的局部变量,在函数调用结束后,其存储空间不会被释放,值会保留到下一次调用。( ) 3、register 变量可以是全局变量,目的是提高全局变量的访问效率。( ) 3、 填空题(本题共2题) 1、动态存储区中存放的数据包括:函数形式参数、自动变量、______。 2、用 static 声明的局部变量,其存储区域在______,程序运行期间始终占据固定的存储空间。 4、 读程序写结果题(本题共1题) 1、阅读下面的 C 语言程序,写出程序运行后的输出结果。 【程序代码】 #include <stdio.h> void add() { // 定义静态局部变量,编译时初始化一次 static int sum = 0; int temp = 1; sum += temp; printf("sum的值:%d ", sum); } int main() { add(); add(); add(); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(电子工业出版社)一课一练的第7章的第40练,内容涵盖第7章函数的7.8.3 变量的存储类型(auto/static/register/extern)。 《C语言程序设计》(电子工业出版社)一课一练 第40练 第7章 函数 7.8.3 变量的存储类型(auto/static/register/extern) 1、 单项选择题(本题共4小题) 1、下列关于 auto 变量的描述,正确的是( ) A. auto 关键字必须显式声明,不能省略 B. auto 变量属于静态存储方式,函数调用结束后存储空间不释放 C. 函数中的形参默认属于 auto 变量 D. auto 变量如果不赋初值,默认值为 0 【答案】C 【解析】auto 关键字可以省略,未加 static 的局部变量和形参默认是 auto 类型,选项 A 错误;auto 变量属于动态存储方式,函数调用结束后释放存储空间,选项 B 错误;auto 变量不赋初值时,值是不确定的,选项 D 错误;只有选项 C 符合 auto 变量的特性。 2、静态局部变量与自动变量的核心区别是( ) A. 静态局部变量的作用域更大 B. 静态局部变量在编译时只赋初值一次,函数调用结束后保留存储空间 C. 静态局部变量只能在函数内部定义 D. 静态局部变量必须赋初值,否则会报错 【答案】B 【解析】静态局部变量和自动变量的作用域都局限于函数内部,选项 A 错误;两者都可以在函数内部定义,选项 C 错误;静态局部变量不赋初值时默认是 0,不会报错,选项 D 错误;选项 B 准确描述了静态局部变量的生存期和初始化特点,是核心区别。 3、下列变量中,不能用 register 关键字声明的是( ) A. 函数的形参 B. 函数内部的自动变量 C. 静态局部变量 D. 复合语句中的自动变量 【答案】C 【解析】register 变量只能是局部自动变量或函数形参,静态局部变量属于静态存储方式,不能放在 CPU 寄存器中,因此无法用 register 声明,选项 C 正确。 4、extern 关键字的主要作用是( ) A. 声明静态局部变量 B. 扩展外部变量的作用域 C. 定义自动变量 D. 提高变量的执行效率 【答案】B 【解析】extern 用于声明已定义的外部变量,让定义点之前的函数也能合法使用该变量,从而扩展其作用域;选项 A 是 static 的作用,选项 C 是 auto 的作用,选项 D 是 register 的作用,因此选项 B 正确。 2、 判断题(本题共3题) 1、自动变量如果在定义时不赋初值,其默认值为 0 或空字符。( ) 【答案】× 【解析】自动变量属于动态存储方式,不赋初值时,其值是随机的不确定值,只有静态局部变量或全局变量不赋初值时才默认是 0 或空字符,因此该表述错误。 2、用 static 声明的局部变量,在函数调用结束后,其存储空间不会被释放,值会保留到下一次调用。( ) 【答案】√ 【解析】静态局部变量存储在静态存储区,程序运行期间始终占据存储空间,函数调用结束后不会释放,下次调用时会继续使用上次保留的值,符合静态存储的特性。 3、register 变量可以是全局变量,目的是提高全局变量的访问效率。( ) 【答案】× 【解析】register 变量只能是局部自动变量或函数形参,全局变量属于静态存储方式,无法放入 CPU 寄存器中,因此不能用 register 声明全局变量,该表述错误。 3、 填空题(本题共2题) 1、动态存储区中存放的数据包括:函数形式参数、自动变量、______。 【答案】函数调用时的现场保护和返回地址 【解析】动态存储区用于存放程序运行时临时需要的动态数据,现场保护和返回地址是函数调用过程中必须保存的信息,属于动态存储区的内容。填写该内容,能完整覆盖动态存储区的存储范围,符合知识点要求。 2、用 static 声明的局部变量,其存储区域在______,程序运行期间始终占据固定的存储空间。 【答案】静态存储区 【解析】静态局部变量属于静态存储方式,与全局变量同属静态存储区,这是它能在函数调用结束后保留值的核心原因。明确该存储区域,能清晰区分静态局部变量和自动变量的本质差异。 4、 读程序写结果题(本题共1题) 1、阅读下面的 C 语言程序,写出程序运行后的输出结果。 【程序代码】 #include <stdio.h> void add() { // 定义静态局部变量,编译时初始化一次 static int sum = 0; int temp = 1; sum += temp; printf("sum的值:%d ", sum); } int main() { add(); add(); add(); return 0; } 【答案】 程序运行结果: sum 的值:1 sum 的值:2 sum 的值:3 【解析】 sum是静态局部变量,编译时仅初始化一次为 0,每次调用add函数时保留上次的值;temp是自动变量,每次调用都会重新初始化 1。第一次调用add后sum=1,第二次调用后sum=2,第三次调用后sum=3,因此依次输出对应的结果。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第40练 第7章 变量的存储类型《C语言程序设计》(电子工业出版社)一课一练-第1页
1

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