第32练 单元7 局部变量与全局变量、存储方式、内部 外部函数全解《C语言程序设计》(高教版第2版)一课一练

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

内容正文:

编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(高教版第2版)一课一练的单元7的第32练,内容涵盖单元7“考试系统”的模块化设计的7.2.7~7.2.9 局部变量与全局变量、存储方式、内部 / 外部函数全解。 《C语言程序设计》(高教版第2版)一课一练 第32练 单元7 “考试系统”的模块化设计 7.2.7~7.2.9 局部变量与全局变量、存储方式、内部 / 外部函数全解 1、 单项选择题(本题共5小题) 1、关于局部变量的描述,错误的是( ) A. 函数体内定义的局部变量,作用域仅限该函数体内 B. 不同函数中的同名局部变量,内存单元不同,互不干扰 C. 复合语句内的局部变量,仅在该复合语句范围内有效 D. 局部变量在程序运行全程占据固定的内存单元 2、当全局变量与局部变量同名时,程序执行时遵循的原则是( ) A. 全局变量优先 B. 就近原则,局部变量优先 C. 编译报错,不允许同名 D. 随机选择其中一个 3、以下关于静态局部变量的特点,正确的是( ) A. 每次调用函数时都会重新初始化 B. 在编译时一次性初始化,函数调用结束后仍保留值 C. 属于动态存储变量,函数结束后释放内存 D. 不能在复合语句中定义 4、内部函数(静态函数)的定义关键字是( ) A. extern B. auto C. static D. register 5、自动变量的默认存储类别符是( ) A. static B. auto C. extern D. register 2、 判断题(本题共4题) 1、不同函数中定义的同名局部变量,会互相干扰,因为变量名完全相同。( ) 2、静态局部变量的初值是在程序运行时,每次调用函数都重新初始化。( ) 3、全局变量默认是外部变量,用 extern 关键字声明后,可以被其他源文件的函数调用。( ) 4、寄存器变量存储在 CPU 的寄存器中,访问速度比内存中的变量更快,适合频繁操作的数据。( ) 3、 程序填空题(本题共1题) 1、题目描述:以下程序用于统计函数count()的调用次数,并计算 1 到输入整数的累加和,其中调用次数用静态局部变量记录,累加和用全局变量存储,请补充缺失代码使程序正常运行。 #include <stdio.h> // 定义全局变量sum,用于存储累加和 (1) int count() { //定义静态局部变量num,用于记录函数调用次数 (2) num++; return num; } void add(int n) { for(int i=1; i<=n; i++) { //将i累加到全局变量sum中 (3) } } int main() { int n, call_times; printf("请输入一个整数:"); scanf("%d", &n); // 第一次调用count函数 call_times = count(); printf("第%d次调用count函数 ", call_times); //调用add函数计算累加和 (4) printf("1到%d的累加和为:%d ", n, sum); // 第二次调用count函数 call_times = count(); printf("第%d次调用count函数 ", call_times); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(高教版第2版)一课一练的单元7的第32练,内容涵盖单元7“考试系统”的模块化设计的7.2.7~7.2.9 局部变量与全局变量、存储方式、内部 / 外部函数全解。 《C语言程序设计》(高教版第2版)一课一练 第32练 单元7 “考试系统”的模块化设计 7.2.7~7.2.9 局部变量与全局变量、存储方式、内部 / 外部函数全解 1、 单项选择题(本题共5小题) 1、关于局部变量的描述,错误的是( ) A. 函数体内定义的局部变量,作用域仅限该函数体内 B. 不同函数中的同名局部变量,内存单元不同,互不干扰 C. 复合语句内的局部变量,仅在该复合语句范围内有效 D. 局部变量在程序运行全程占据固定的内存单元 【答案】D 【解析】局部变量属于动态存储变量,仅在函数或复合语句执行时临时分配内存,执行结束后立即释放内存单元,不会全程占据固定空间,选项 D 错误;其他选项均符合局部变量的作用域和存储特性。 2、当全局变量与局部变量同名时,程序执行时遵循的原则是( ) A. 全局变量优先 B. 就近原则,局部变量优先 C. 编译报错,不允许同名 D. 随机选择其中一个 【答案】B 【解析】C 语言规定,当全局变量和局部变量同名时,在局部变量的作用域范围内,局部变量生效,同名全局变量暂时失效,即遵循 “就近原则”。 3、以下关于静态局部变量的特点,正确的是( ) A. 每次调用函数时都会重新初始化 B. 在编译时一次性初始化,函数调用结束后仍保留值 C. 属于动态存储变量,函数结束后释放内存 D. 不能在复合语句中定义 【答案】B 【解析】静态局部变量存储在静态存储区,编译时完成初始化,程序运行全程占据固定内存,函数调用结束后不会释放,保留当前值;选项 A、C 错误,静态局部变量可在复合语句中定义,选项 D 错误。 4、内部函数(静态函数)的定义关键字是( ) A. extern B. auto C. static D. register 【答案】C 【解析】内部函数需用 static 关键字修饰,作用域仅限定义它的源文件,不能被其他文件调用;extern 用于外部函数和全局变量声明,auto 是自动变量默认存储类别,register 用于寄存器变量。 5、自动变量的默认存储类别符是( ) A. static B. auto C. extern D. register 【答案】B 【解析】自动变量是 C 语言默认的存储类别,auto 关键字可以省略,未指定存储类别的局部变量默认是自动变量,属于动态存储类型。 2、 判断题(本题共4题) 1、不同函数中定义的同名局部变量,会互相干扰,因为变量名完全相同。( ) 【答案】× 【解析】局部变量的作用域局限于各自的函数或复合语句,运行时占据不同的内存单元,即使变量名相同,也不会互相干扰,各自独立生效。 2、静态局部变量的初值是在程序运行时,每次调用函数都重新初始化。( ) 【答案】× 【解析】静态局部变量的初值在程序编译阶段一次性完成赋值,程序运行期间不会再次初始化,函数调用结束后仍保留当前值。 3、全局变量默认是外部变量,用 extern 关键字声明后,可以被其他源文件的函数调用。( ) 【答案】√ 【解析】全局变量默认存储在静态存储区,作用域从定义位置到文件末尾;用 extern 声明后,可将其作用域扩展到其他源文件,实现跨文件调用。 4、寄存器变量存储在 CPU 的寄存器中,访问速度比内存中的变量更快,适合频繁操作的数据。( ) 【答案】√ 【解析】寄存器直接集成在 CPU 内,读取数据的速度远快于内存,因此循环变量、累加变量等频繁操作的数据,用 register 修饰可提升程序执行效率。 3、 程序填空题(本题共1题) 1、题目描述:以下程序用于统计函数count()的调用次数,并计算 1 到输入整数的累加和,其中调用次数用静态局部变量记录,累加和用全局变量存储,请补充缺失代码使程序正常运行。 #include <stdio.h> // 定义全局变量sum,用于存储累加和 (1) int count() { //定义静态局部变量num,用于记录函数调用次数 (2) num++; return num; } void add(int n) { for(int i=1; i<=n; i++) { //将i累加到全局变量sum中 (3) } } int main() { int n, call_times; printf("请输入一个整数:"); scanf("%d", &n); // 第一次调用count函数 call_times = count(); printf("第%d次调用count函数 ", call_times); //调用add函数计算累加和 (4) printf("1到%d的累加和为:%d ", n, sum); // 第二次调用count函数 call_times = count(); printf("第%d次调用count函数 ", call_times); return 0; } 【答案】 (1) int sum = 0; (2) static int num = 0; (3) sum += i; (4) add(n); 【解析】 (1) 全局变量sum需在函数外部定义并初始化为 0,作用域覆盖整个程序,用于存储累加的最终结果。 (2) 静态局部变量num用static修饰并初始化为 0,编译时完成初始化,函数调用结束后保留当前值,实现记录调用次数的功能。 (3) 在add函数的循环中,将每次的循环变量i累加到全局变量sum中,逐步计算 1 到 n 的累加和。 (4) 在main函数中调用add函数,传入用户输入的整数n,触发累加计算逻辑,将结果存储到全局变量sum中。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第32练 单元7 局部变量与全局变量、存储方式、内部  外部函数全解《C语言程序设计》(高教版第2版)一课一练-第1页
1

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