没有合适的资源?快使用搜索试试~ 我知道了~
第10章全局变量
需积分: 0 2 下载量 12 浏览量
2011-12-02
18:15:15
上传
评论
收藏 90KB DOC 举报
温馨提示
试读
13页
计算机二级C测试重点题目及解析(笔试)
资源详情
资源评论
资源推荐
第十章 全局变量
一、选择题
有以下程序
!"#!
程序运行后的输出结果是
$)%&)'())*)
【答案】C
【解析】本题考查的是变量的生存周期和作用域。全局变量的生存期是整个程序的运行期间,作用域是从变量定
义的位置开始,到整个源文件结束止。但是,若全局变量和某一函数或语句块中的局部变量同名,则在该函数或语句
块中,此全局变量被屏蔽,即在该函数或语句块内,访问的是局部变量,与同名的全局变量不发生任何关系。静态局
部变量的生存期与全局变量相同,作用域和局部变量一样都是整个函数或语句块内有效。程序第一行定义了一个全局
变量 a,在 f()函数开头也定义了一个静态局部变量 a,而且在后面 if 语句的两个子句中都定义了静态局部变量 a 。这
4 个变量 a 虽然名字一样,但却是 4 个独立的变量,而且在整个程序运行期都存在。在主函数中.在定义变量 s 时将 s
初始化为全局变量 a 的值 2,然后使用一个 for 循环分别调用了 3 次 f(0)、f(1)、f(2),并将得到的值累加到变量 s
中。第 1 次调用 n=0 为偶数,执行 else 子句,此时 t 累加的是 else 子句中的变量 a,所以执行后 else 子句中的 a 变为
6,t 变为 5,然后 return 语句中的 a 是函数 f()开头定义的 a,执行后函数开头的 a 变为 4,所以返回值是 5+3=8。第 2
次调用 n 为 1 是奇数,执行 if 子句,所以 t 变为 4,if 子句中的 a 变为 5,然后返回时函数开头的 a 变为 5,返回值是
4+4=8。第 3 次调用 n 为 2 是偶数,又执行 else 子句,else 子句中的 a 现在还是上次执行后的值 6,所以 t=6,然后返
回时加上函数开头的 a 的当前值 5,最后返回 l1。所以 s 最终的值是 2+8+8+11=29。故应该选择 C。
有以下程序
+
+
,
,
-"#.
执行后输出结果是()
$&)(/*'
【答案】C
【解析】本题考核的知识点是局部变量和全局变量的区别。若在函数中定义与全局变量名字相同局部变量,则全
局变量在该函数中将不起作用。本题中定义了一个全局变量 a 和局部变量 a。在主函数中定义一个整型变量 s 并赋初
值为 0,接着定义了一个局部变量 a 并赋值为 5,由于该局部变量的和全局变量 a 同名。故全局变量在复合语句中将不
起作用,然后调用函数 f(&a)(该函数的作用是返回存储变量 a 的空间中的值,并让该值加 1,分析程序可知返回值为
5,并让 a 值加 I 变为 6),并将返回值加到 s 中。此时 s 的值为 5,然后执行该复合语句外的其他语句,同样调用函数
f(&a),但传递的参数是全局变量 a,故其返回值为 2,加到 s 中后 s 的值变为 7,故最后输出的 s 的值为 7,所以,4 个
选项中选项 C 符合题意。
以下叙述中正确的是
$局部变量说明为 存储数,其生存期将得到延长
&全局变量说明为 存储类,其作用域将被扩大
(任何存储类的变量在未赋初值时,其值都是不确定的
*形参可以使用的存储类说明符与局部变量完全相同
【答案】A
【解析】本题考核的知识点是变量的生成期与作用域。静态局部变量在整个程序运行 期间,静态局部变量在内
存的静态存储区中占据着永久性的存储单元。由此可知静态局部变量的生存期将一直延长到程序运行结束。故选项 A
正确;而全局变量的只有一种静态存储类别,故全局变量说明为 static 存储类,和没有说明为 static 存储类其生存期
都是一直延长到程序运行结束,故选项 B 不正确;未赋初值的 auto 型变量的初值是随机的,末赋初值的 static 型变量
的初值是 0(故选项 C 和选项 D 不正确)。所以,4 个选项中选项 A 符合题意。
有以下程序
01230
0;
4;;0123;
0;
23523%/');
5; ″"#″;
程序执行后的输出结果是
$)000000 &)000000000 ()%0000000000 *)
【答案】C
【解析】本题主要考查的知识点是静态局部变量的运用。如果在定义一个局部变量时使用了 static 关键字,则这
个局部变量就被定义成了一个静态局部变量。一般的局部变量随着函数被调用而诞生,在函数返回时被销毁。而静态
局部变量在函数调用结束后不会被销毁,在下一次该函数被调用时,还会保留上一次函数调用结束时的值。本题中
fun()函数通过一个 for 循环来累计形参数组 x 的前 n 个元素之和。在主函数中,第 1 次调用 fun(a,5)时,返回的值应
该是数组 a 的前 5 个元素的和,而第 2 次调用 fun(b,4)时,返回的值除了本次累计的数组 b 前 4 个元素的和外,还要
加上上次累计的值。所以,最后输的 s 的值为数组 a 所有元素之和的两倍加上数组 b 所有元素之和,结果是 60。故应
该选择 C。
有以下程序
16
16
78
87 “"”8
87 “"#”8
执行后的输出结果是
$),&), (), *),
【答案】B
【解析】本题主要考查的知识点是静态局部变量的运用。如果在定义一个局部变量时使用了 static 关键字,则这
个局部变量就被定义成了一个静态局部变量。一般的局部变量随着函数被调用而诞生,在函数返回时被销毁。而静态
局部变量在函数调用结束后不会被销毁,在下一次该函数被调用时,还会保留上一次函数调用结束时的值。本题的
fun()函数中定义的变量 m 和 i 就是静态局部变量,第 1 次调用 fun()函数时 m=0、i=2,执行 i+=m+l 后,i 的值变为
3,再执行 m=i+x+y 后,m 的值变为 5 ,所以第 1 次输出的整数是 5 。第 2 次调用 fun() 函数时 m=5 、i=3 ,执行
i+=m+1,i 变为 9,再执行 m=i+x+y,m 变为 11,所以第 2 次输出的整数是 11。故本题应该选择 B。
%有以下程序
9"::5 “”5
:’$’5’&’
;"’(’5’*’
剩余12页未读,继续阅读
icekyue
- 粉丝: 9
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0