第26练 6.4-6.5 局部变量、全局变量、静态变量、外部变量 《C语言》 (第五版) 一课一练 (山东省)

2026-06-24
| 2份
| 12页
| 2人阅读
| 0人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 -
年级 -
章节 -
类型 作业-同步练
知识点 C语言概述
使用场景 同步教学
学年 2026-2027
地区(省份) 山东省
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 108 KB
发布时间 2026-06-24
更新时间 2026-06-24
作者 xkw_068401954
品牌系列 上好课·一课一练
审核时间 2026-06-24
下载链接 https://m.zxxk.com/soft/58480038.html
价格 1.00储值(1储值=1元)
来源 学科网

内容正文:

【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《C语言》(第五版)《一课一练》第26练,内容是6.4-6.5 局部变量、全局变量、静态变量、外部变量。 《C语言》(第五版)一课一练 第26练 6.4-6.5 局部变量、全局变量、静态变量、外部变量 一、单选题 1. 关于C语言局部变量,以下说法正确的是( ) A. 局部变量可以在程序的任何函数中直接访问 B. 局部变量默认具有全局作用域 C. 局部变量在其所在函数和复合语句内有效 D. 局部变量在程序运行期间一直占用内存 2. 关于C语言全局变量,以下说法正确的是( ) A. 全局变量定义时必须加global关键字 B. 全局变量不能在所有函数中共享使用 C. 全局变量的作用域限定在定义它的文件中 D. 在函数外部定义的变量称为全局变量 3. 以下程序段中静态局部变量的特点是 void f() { static int count = 0; count++; printf("%d ", count); }( ) A. count每次调用f时重新初始化为0 B. count的值在调用f时不能再被修改 C. count在多次调用间保持上一次的值 D. static修饰符让count变为全局变量 4. 已知以下程序: int x = 5; void f() { int x = 10; printf("%d ", x); } main() { f(); printf("%d", x); } 输出结果是( ) A. 10 5 B. 5 10 C. 5 5 D. 10 10 5. C语言中,函数内部定义的未加存储类别说明符的变量,其默认存储类别是( ) A. static(静态存储类别) B. register(寄存器存储类别) C. extern(外部存储类别) D. auto(自动存储类别) 6. 以下程序输出结果是 void test() { int a = 0; static int b = 0; a++; b++; printf("a=%d, b=%d ", a, b); } main() { test(); test(); test(); }( ) A. 三次均输出 a=1, b=1 B. a=1,b=1 / a=1,b=2 / a=1,b=3 C. a=1,b=1 / a=1,b=1 / a=1,b=1 D. a=1,b=1 / a=2,b=2 / a=3,b=3 7. 关于extern关键字的作用,以下说法正确的是( ) A. extern声明可以引用另一个文件中定义的全局变量 B. extern用于定义一个新的全局变量 C. extern修饰的变量用于引用当前文件之外的全局变量 D. extern变量的值在多次调用后自动重置为0 二、简答题 8. 以下程序的运行结果是【··】。 #include <stdio.h> int n = 10; void func() { static int m = 5; int k = 2; m = m + k; n = n + m; printf("%d %d ", m, n); } main() { func(); func(); } 三、案例分析题 9. 以下程序的函数counter每被调用一次就返回一个递增的计数值(从1开始)。请填空。 #include <stdio.h> int counter() { 【1】 int cnt = 0; cnt = cnt + 1; return cnt; } main() { printf("%d ", counter()); printf("%d ", counter()); printf("%d", counter()); } 四、综合应用题 10. 编写一个C程序:定义一个函数 float average(float score),该函数接收一次考试分数,利用静态变量累计已输入的总分和人数,返回当前的平均分。在main中连续输入5个分数,每输入一个就调用average并输出累计平均分。 提示:使用static变量存储总分和人数,每次调用时更新并返回计算结果。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《C语言》(第五版)《一课一练》第26练,内容是6.4-6.5 局部变量、全局变量、静态变量、外部变量。 《C语言》(第五版)一课一练 第26练 6.4-6.5 局部变量、全局变量、静态变量、外部变量 一、单选题 1. 关于C语言局部变量,以下说法正确的是( ) A. 局部变量可以在程序的任何函数中直接访问 B. 局部变量默认具有全局作用域 C. 局部变量在其所在函数和复合语句内有效 D. 局部变量在程序运行期间一直占用内存 【答案】C 【解析】局部变量(自动变量)定义在函数内部及复合语句中,作用域限定在定义该变量的函数及复合语句范围内,外部函数不能直接访问。局部变量在函数被调用时分配内存,函数执行完毕后自动释放。没有加static关键字的局部变量属于自动存储类别。 2. 关于C语言全局变量,以下说法正确的是( ) A. 全局变量定义时必须加global关键字 B. 全局变量不能在所有函数中共享使用 C. 全局变量的作用域限定在定义它的文件中 D. 在函数外部定义的变量称为全局变量 【答案】D 【解析】全局变量在所有函数外部定义,从定义位置开始到源文件结束范围内的所有函数都可以使用(除非被同名的局部变量屏蔽)。使用extern声明后,其他源文件中的函数也可以引用。C语言中没有global关键字,定义在函数外的变量自动具有全局作用域。 3. 以下程序段中静态局部变量的特点是 void f() { static int count = 0; count++; printf("%d ", count); }( ) A. count每次调用f时重新初始化为0 B. count的值在调用f时不能再被修改 C. count在多次调用间保持上一次的值 D. static修饰符让count变为全局变量 【答案】C 【解析】static修饰的局部变量具有静态存储期,初始化过程在程序启动时进行一次,其值在函数多次调用之间保持不变。第一次调用f时count从0增至1输出1;第二次调用count从1增至2输出2;第三次输出3,以此类推。 4. 已知以下程序: int x = 5; void f() { int x = 10; printf("%d ", x); } main() { f(); printf("%d", x); } 输出结果是( ) A. 10 5 B. 5 10 C. 5 5 D. 10 10 【答案】A 【解析】当局部变量与全局变量同名时,在局部变量的作用域内,局部变量会屏蔽同名的全局变量。f函数中int x=10是局部变量,输出的10是局部x的值。main中访问的x没有局部定义,使用的是全局变量x=5,输出5。两个变量虽然同名但互不影响。 5. C语言中,函数内部定义的未加存储类别说明符的变量,其默认存储类别是( ) A. static(静态存储类别) B. register(寄存器存储类别) C. extern(外部存储类别) D. auto(自动存储类别) 【答案】D 【解析】函数内定义的变量如果没有明确指定存储类别,默认为auto(自动存储类别)。auto变量在函数调用时分配存储空间,函数返回时自动释放。auto关键字在实际编程中通常省略不写,省略后编译器仍按自动变量处理。register是建议编译器将变量放入寄存器的类别。 6. 以下程序输出结果是 void test() { int a = 0; static int b = 0; a++; b++; printf("a=%d, b=%d ", a, b); } main() { test(); test(); test(); }( ) A. 三次均输出 a=1, b=1 B. a=1,b=1 / a=1,b=2 / a=1,b=3 C. a=1,b=1 / a=1,b=1 / a=1,b=1 D. a=1,b=1 / a=2,b=2 / a=3,b=3 【答案】B 【解析】a是自动变量,每次调用test时重新分配并初始化为0,每次a从0到1,输出a=1。b是静态局部变量,初始化一次后值持续保持。第一次b从0到1,第二次从1到2,第三次从2到3。三次调用输出结果依次为a=1,b=1、a=1,b=2、a=1,b=3。 7. 关于extern关键字的作用,以下说法正确的是( ) A. extern声明可以引用另一个文件中定义的全局变量 B. extern用于定义一个新的全局变量 C. extern修饰的变量用于引用当前文件之外的全局变量 D. extern变量的值在多次调用后自动重置为0 【答案】A 【解析】extern关键字用于声明一个变量(注意是声明不是定义),表示该变量已在其他文件中定义过,也可以在本文件后面的位置定义,当前代码可以引用它。这样可以访问跨文件的全局变量。extern声明不会为变量分配新的存储空间,作用是告诉编译器该变量的类型和名称。 二、简答题 8. 以下程序的运行结果是【··】。 #include <stdio.h> int n = 10; void func() { static int m = 5; int k = 2; m = m + k; n = n + m; printf("%d %d ", m, n); } main() { func(); func(); } 【答案】7 17 9 26 【解析】第一次调用func:m=5+2=7(静态变量m保持新值),n=10+7=17(全局变量被修改),输出7 17。第二次调用:m=7+2=9(m保持了上次的7),n=17+9=26(n保持了上次的17),输出9 26。此题综合展示了静态变量与全局变量的持久性。 三、案例分析题 9. 以下程序的函数counter每被调用一次就返回一个递增的计数值(从1开始)。请填空。 #include <stdio.h> int counter() { 【1】 int cnt = 0; cnt = cnt + 1; return cnt; } main() { printf("%d ", counter()); printf("%d ", counter()); printf("%d", counter()); } 【答案】【1】static 【解析】要实现每次调用返回递增计数值的功能,cnt必须用static修饰为静态局部变量。这样cnt初始化流程不会重复执行,每次调用在原来值基础上加1后返回。若不加static,cnt每次会重新初始化为0,counter一直返回1。程序最终输出1 2 3。 四、综合应用题 10. 编写一个C程序:定义一个函数 float average(float score),该函数接收一次考试分数,利用静态变量累计已输入的总分和人数,返回当前的平均分。在main中连续输入5个分数,每输入一个就调用average并输出累计平均分。 提示:使用static变量存储总分和人数,每次调用时更新并返回计算结果。 【答案】#include <stdio.h> float average(float score) { static float sum = 0; static int count = 0; sum = sum + score; count = count + 1; return sum / count; } main() { float s; int i; printf("请输入5个分数: "); for (i = 0; i < 5; i++) { scanf("%f", &s); printf("当前平均分=%.2f ", average(s)); } } 【解析】average函数内部声明两个static变量sum(累计总分)和count(累计人数),每次调用时用当前分数更新sum和count,返回sum/count作为实时平均分。使用static确保这些统计数据在多次调用之间持续有效,每次求得的平均分都基于全部历史数据。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

第26练 6.4-6.5 局部变量、全局变量、静态变量、外部变量 《C语言》 (第五版) 一课一练 (山东省)
1
第26练 6.4-6.5 局部变量、全局变量、静态变量、外部变量 《C语言》 (第五版) 一课一练 (山东省)
2
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。