41.不是C语言提供的合法关键字是(46)
(45)A. switch
B. begin
C. case
D. default
参考答案:(46)B。
解析:因C语言的关键字表中没有begin,它不是C语言的关键字。所以解答是B。
42.下列字符列中,能作为单个标识符是(47)
(47)A. ?a
B. a=2
C. a.3
D.a___3
参考答案:(47)D。
解析:在C语言中,规定标识符是这样一种字符序列,由英文字母或下线字符开始,后接任1个英文字母、下线字符和数字符组成。所以问题所列的字符列只有a_3是标识符,其余都l是标识符,一个是由字符’?’开头、一个中间有字符’=’,另一个有字符’.’。所以解答是D。
43.在C语言中,下列说法中错误的是(48)
(47)A. 函数定义可以分为两个部分:函数说明部分和函数体
B. 主函数可以调用任何非主函数
C. 任何非主函数可以调用其它任何非主函数
D. 程序可以从任何函数开始执行
参考答案:(48)D。
解析:每个C函数的定义分两部分,函数说明部分和函数体,所以叙述①是正确的叙述。C语言中,函数可以递归调用,主函数可以调用程序中的任何函数,当然可以调用任何非主教的其它函数,所以叙述②是一个正确的叙述。同样理由,叙述③也是正确的。C语言规,C程序只有一个主函数,并总是从主函数开始执行,不能从非主函数开始执行。所以,说程可以从任何函数开始执行是错误的。所以解答是D。
44. 为了直观地分析系统的动作,从特定的视点出发描述系统的行为,需要采用动态分析的方法。其中,
(49) 适用于描述与分析相互独立、协同操作的处理系统,也就是并发执行的处理系统。
(49) A.状态迁移图
B.时序图
C.Petri网
D.HIPO图
参考答案:(49)C。
解析:为了直观地分析系统的动作,从特定的视点出发描述系统的行为,需要采用动态分析的方法。常用的动态分析方法有状态迁移图、时序图和Petri网。
状态迁移图是描述系统的状态如何响应外部的信号进行推移的一种图形表示。
时序图用于对比在系统中处理时间的时序与相应的处理时间,进行系统分析。
Petri网方法本来是表达异步系统的控制规则的图形表示方法,现在已经广泛地应用于硬件与软件系统的开发中,它适用于描述与分析相互独立、协同操作的处理系统,也就是并发执行的处理系统。
在结构化设计中,分层输入-处理-输出图(HIPO图)既可以描述软件总的模块层次结构,又可以描述每个模块的输入/输出关系、处理内容、模块的内部数据和模块的调用关系。它是系统设计的重要成果,也是系统实施阶段编制程序设计任务书和进行程序设计的出发点和依据。
45. 图4中的程序由A、B、C、D和E等5个模块组成,表1模块之间的接口表中描述了这些模块之间的接口,每一个接口有一个编号。此外,模块A、D和E都要引用一个专用数据区。那么A和D之间耦合关系是 (50) 。
(50) A.标记耦合
B.内容耦合
C.数据耦合
D.公共耦合
图 4 |
表2 模块之间的接口表
编 号 |
参 数 |
返 回 值 |
1 |
数据项 |
数据项 |
2 |
数据项 |
数据项 |
3 |
功能码 |
无 |
4 |
无 |
|
5 |
无 |
|
参考答案:(50)D。
解析:由于模块A和模块D都引用了专用数据区的内容,因此,模块A和D之间的耦合关系是公共耦合。
46.函数调用语句“f((el,e2),(e3,e4,e5));”中参数的个数是(51)
(51) A. 1
B. 2
C. 4
D. 5
参考答案:(51) B。
解析:上述函数调用中,(e1,e2)和(e3,e4,e5)是两个带括号的表达式,所以函数调用只提供两个实参,其中第一个实参先计算el的值,然后计算e2,并以e2的值为实参。第二个实参顺序计算e3,e4,e5,并以e5的值为实参。所以解答是B。
47. C语言中,函数的隐含存储类型是(52)
(52)A. auto
B. static
C. extern
D. 无存储类别
参考答案:(52)C。
解析:由于C函数内不能再定义函数,C函数的存储类型只能是静态的或外部的之一。若定义函数时不指定存储类型是静态的,则它的存储类型就是外部的(extern),即函数允许被程序的其它函数调用。所以解答是C。
48. 测试是保证软件质量的重要手段。根据国家标准GB 8566-88《计算机软件开发规范》的规定,应该在 (53) 阶段制定系统测试计划。
(53) A.需求分析
B.概要设计
C.详细设计
D.系统测试
参考答案:(53)A
解析:根据国家标准GB 8566-88《计算机软件开发规范》的规定,单元测试是根据详细设计阶段给出的“规格说明书”在编码阶段完成的测试工作;集成测试的计划是在概要设计阶段制订的;系统测试计划应该在需求分析阶段就开始制订,并在设计阶段细化和完善,而不是等系统编码完成后才制订测试计划;而验收测试则检测产品是否符合最终用户的需求。
软件测试的各个阶段与软件开发阶段的对应关系如图5所示。
图5 各软件开发阶段与软件测试阶段的对应关系图 |
49.以下对C语言函数的有关描述中,正确的是(54)
(54) A. 在C语言中,调用函数时,只能把实参的值传递给形参,形参的值不能传递给实参
B. C函数既可以嵌套定义,又可以递归调用
C. 函数必须有返回值,否则不能定义成函数
D. C程序中,有调用关系的所有函数必须放在同一个源程序文件中
参考答案:(54) A。
49.以下对C语言函数的有关描述中,正确的是(54)
(54) A. 在C语言中,调用函数时,只能把实参的值传递给形参,形参的值不能传递给实参
B. C函数既可以嵌套定义,又可以递归调用
C. 函数必须有返回值,否则不能定义成函数
D. C程序中,有调用关系的所有函数必须放在同一个源程序文件中
参考答案:(54) A。
解析:软件的可复用性指软件或软件的部件能被再次用于其他应用中的程度。软件复用性取决于其模块独立性、通用性和数据共享性等。
软件的可维护性是指一个软件模块是否容易修改、更新和扩展,即在不影响系统其他部分的情况下修改现有系统功能中问题或缺陷的能力。
软件的可移植性指将软件系统从一个计算机系统或操作系统移植到另一种计算机系统或操作系统中运行时所需工作量的大小。可移植性取决于系统中硬件设备的特征、软件系统的特点和开发环境,以及系统分析与设计中关于通用性、软件独立性和可扩充性等方面的考虑。
软件的可扩充性指软件的体系结构、数据设计和过程设计的可扩充程度。可扩充性影响着软件的灵活性和可移植性。
由以上分析可知,该软件产品从Windows 2000环境中迁移到Linux环境中运行,为完成相同的功能,软件本身需要进行修改,而所需修改的工作量取决于该软件产品的可移植性。
51. 进程的五态模型包括运行状态、活跃就绪状态、静止就绪状态、活跃阻塞状态和静止阻塞状态。针对图5的进程五态模型,为了确保进程调度的正常工作,(a)、(b)和(c)的状态分别为 (56) 。
图6 进程的五态模型图 |
(56) A.静止就绪、静止阻塞和活跃阻塞
B.静止就绪、活跃阻塞和静止阻塞
C.活跃阻塞、静止就绪和静止阻塞
D.活跃阻塞、静止阻塞和静止就绪
参考答案:(56)D。
解析:在多道程序系统中,进程在处理器上交替运行,在运行、就绪和阻塞3种基本状态之间不断地发生变化。由于进程的不断创建,系统资源(特别是主存资源)已不能满足进程运行的要求。此时就必须将某些进程挂起,对换到磁盘镜像区,暂时不参与进程调度,以平衡系统负载的目的。如果系统出现故障,或者是用户调试程序,也可能需要将进程挂起检查问题。
在图6具有挂起状态的进程状态及其转换图中,活跃就绪是指进程在主存并且可被调度的状态。(1)空缺处各选项中,静止就绪是指进程被对换到辅存时的就绪状态,是不能被直接调度的状态,只有当主存中没有活跃就绪态进程,或者是挂起态进程具有更高的优先级,系统将把挂起就绪态进程调回主存并转换为活跃就绪。因此,图6的(c)空缺处应填入“静止就绪”这一状态。
活跃阻塞是指进程在主存中。一旦等待的事件产生,便进入活跃就绪状态。因此,图6的(a)空缺处应填入“活跃阻塞”。
静止阻塞是指进程对换到辅存时的阻塞状态。一旦等待的事件产生,便进入静止就绪状态。故图6的(b)空缺处应填入“静止阻塞”。
由以上分析可知,(56)空缺处的正确答案是选项D。
另外,对于一张完整的进程五态模型图,则需在图3-4模型图中增加一条从“运行”态到“活跃阻塞”态的边,其状态转换原因是“等待”事件(如I/O请求)发生,以及增加一条从“运行”态到“静止就绪”态的边,其状态转换原因是“挂起”。
52. 基于构件的开发(CBD)模型,融合了 (57) 模型的许多特征。该模型本质是演化的,采用迭代方法开发软件。
(57) A.瀑布
B.螺旋
C.喷泉
D.快速应用开发(RAD)
参考答案:(57)B。
解析:螺旋模型是演化软件过程模型的一种,最早由Boehm提出,它将原型实现的迭代特征与线性顺序模型中控制的和系统化的方面结合起来,使软件增量版本的快速开发成为可能。在螺旋模型中,软件开发是一系列的增量发布。
面向对象技术为软件工程的基于构件的过程模型提供了技术框架。基于构件的开发模型融合了螺旋模型的许多特征。它本质上是演化型的,要求软件创建迭代方法。
基于构件的开发模型是利用预先包装好的软件构件来构造应用的。统一软件开发(RUP)过程是在产业界提出的一系列基于构件的开发模型的代表。
53.设有定义“inta=3,b,*p=&a;”,则下列语句中使b不为3的语句是(58)
(58)A. b=*&a;
B. b=*p;
C. b=a;
D.b=*a;
参考答案:(58)D。
解析:定义有inta=3,b,*p=&a;对b赋值的表达式有*&a、*p、a、*a。引用变量。的值有两种方法,一是直接引用a,二是通过a的指针间接引用a。对于后者,又有多种表达方法,通过指向a的指针p,间接引用a的内容,如*p。或通过求地址运算符由变量a得到其指针&a,再由这指针表达式间接引用a的内容,如*&a。所以表达式*&a、*p和a都能引用变量a的值,而使b的值为3。而表达式。a是错误的,因为a不是指针变量,不能对它施行取内容运算符。。所以解答是D。
54.设指针x指向的整型变量值为万,则"printf("%d ",++*x);"的输出是(59)
(59)A. 23
B. 24
C. 25
D. 26
参考答案:(59)D。
解析:若指针变量x指向某个变量,例如指向变量v,并且变量v的值是25,则表达式++*x的值是26。这是因为表达式的计算顺序可加圆括号表达成(++(*x)),首先是*x,是对X所指变量V的引用,所以++*X就是++V。++V是先让变量V增1,并以增至后的V的值为表达式++V的结果,所以其值是26。所以解答是D。
55.若有说明:“inti,j=7,*p=&i;”,则与“i=j;”等价的语句是(60)
(59)A. i=*p;
B. *P=*&j;
C. i==&j;
D. i=**p;
参考答案:(60)B。
解析:指针变量p指向变量i时,表达式i=*p等价于i=i;表达式*p=*&j等价于i=j;而表达式i=&j企图将整型变量的指针赋给整型变量,这是错误的;表达式i=**p也是一种错误的表达式。p是指针,*p是p所指变量j,**p是企图将整型变量j当作指针,并想通过j间接引用某个变量。所以解答是B。
56. 以下关于软件质量度量指标的叙述中,说法正确的是 (61) 。
(32) A.正确性就是用每千行代码的故障(fault)数来度量
B.软件完整性是指软件功能与需求符合的程度
C.软件维护的工作量比开发阶段的工作量小
D.可用性与用户的操作效率和主观评价有关
参考答案:(61)D。
解析:最主要的软件质量度量指标有正确性、可维护性、完整性和可用性。软件的正确性是指软件完成所需功能的程度,尽管这种程度与每千行代码的故障数有关,但不完全等同。
软件完整性是指软件在安全方面抗攻击的能力。
软件维护的工作量比开发阶段的工作量大,通常的估计是,开发阶段的工作量占软件生命期整个工作量的40%,而维护阶段的工作量则占60%,甚至更多。
软件可用性用来度量软件的“用户友好性”,可以从①学会操作软件所需的体力和智力、②对系统的使用达到中等效率所需的时间、③当系统由一个中等效率的人使用时测量到的生产率增长值和④用户对系统的主观评价等4个方面来度量可用性。
57. 风险的成本估算完成后,可以针对风险表中的每个风险计算其风险曝光度。某软件小组计划项目中采用50个可复用的构件,每个构件平均是100 LOC,本地每个LOC的成本是13元人民币。以下是该小组定义的一个项目风险。
① 风险识别:预定要复用的软件构件中只有50%将被集成到应用中,剩余功能必须定制开发。
② 风险概率:60%。
③ 该项目风险的风险曝光度是 (62) 。
(62) A.10 500
B.19 500
C.32 500
D.65 000
参考答案:(62)B。
解析:风险曝光度(Risk Exposure,RE)的计算公式为:RE=P×C。其中,P是风险发生的概率,C是风险发生时带来的项目成本。
该软件小组计划采用50个可复用的构件,如果只有50%可能被使用,则25个构件必须从头开发。由于构件平均是100 LOC,每个LOC的成本是13元人民币,则开发构件的整体成本C=25×100×13=32 500元人民币。因此RE=0.6×32 500=19 500元人民币。
58. 若有说明语句“inta[10],*p=a;”,对数组元素的正确引用是(63)
(63)A. a[p]
B. P[a]
C. *(P+2)
D. P+2
参考答案:(62)C。
解析:在C语言中,约定数组名单独出现在表达式中时,它表示数组首元素的指针。有inta[10],则a可以作为&a[0]使用。另有整型指针变量p,代码p=a实现p指向数组a的首元素。则表达式*(p+2)是引用数组元素a[2]。表达式a[p]和p[a]都是不正确的,下标必须是整型表达式,不可以是指针表达式。表达式p+2是指针表达式,它的值是&p[2]。所以只有表达式*(p+2)引用数组a的元素a[2]。所以解答是C。
59.若有以下定义,则不能表示a数组元素的表达式是(64)
inta[10]={1,2,3,4,5,6,7,8,9,1o},*p=a;
(64)A. *p
B. a[10]
C. *a
D. a[p-a]
参考答案:(62)B。
解析:上述代码定义了有10个元素的整型数组。,和定义指针变量p,并让p指向数组元素a[0]。所以代码*p是引用a[0]。由于数组a只有10个元素,最后一个元素是a[9],表达式a[10]是错误的。数组名a可以作为a的首元素的指针,表达式*a就是a[0],是对数组a的首元素a[0]的引用。指针p的值是a,表达式p-a。的值是0,所以a[p-a]就是a[0]。所以解答是B。
60. CMM模型的第三级为已定义级,其主要过程是关于项目和组织的策略。属于该级别新定义的关键过程域是 (65) 。
(65) A.软件配置管理
B.技术变更管理
C.软件质量管理
D.集成软件管理
参考答案:(65)D。
解析:CMM模型是对软件组织进化阶段的描述,其第3级(已定义级)主要过程是关于项目和组织的策略,所定义的关键过程域有集成软件管理、组织过程定义和软件产品工程等。
选项A的“软件配置管理”是CMM模型可重复级(第2级)定义的关键过程域;
选项C的“软件质量管理”是定量管理级(第4级)定义的关键过程域;
选项B的“技术变更管理”是优化级(第5级)定义的关键过程域。
【编辑推荐】