49.以下对C语言函数的有关描述中,正确的是(54)
(54) A. 在C语言中,调用函数时,只能把实参的值传递给形参,形参的值不能传递给实参
B. C函数既可以嵌套定义,又可以递归调用
C. 函数必须有返回值,否则不能定义成函数
D. C程序中,有调用关系的所有函数必须放在同一个源程序文件中
参考答案:(54) A。
解析:C语言规定,调用函数时,只能把实参的值传递给函数的形参。函数调用时,形参从实参表达式得到初值,报参也是函数的一种局部变量,其值可以改变,但形参的值不能传回给对应的实参。当函数设置非指针类型的形参时,实参可以是同类型的一般表达式;当函数设置指针类型的形参时,对应的实参也必须是同类型的指针表达式。所以叙述A是正确的。C语言虽可以递归调用,但同时规定,在函数内不能再定义函数,所以叙述B是错误的。通常C函数会有返回值,但也可以没有返回值。有许多情况,函数的执行是完成某种预定的工作,并没有返回值,所以叙述C是不正确的。在C程序中,如函数未指定是静态的,则就是外部的,能让别的文件中的函数调用。但函数要调用别的文件中的函数,在调用代码之前,需对它作说明,所以叙述D也是不正确的。正确的解答只有A。
50. 某软件产品在应用初期运行在Windows 2000环境中。现因某种原因,该软件需要在Linux环境中运行,而且必须完成相同的功能。为适应该需求,软件本身需要进行修改,而所需修改的工作量取决于该软件的 (55) 。
(55) A.可复用性
B.可维护性
C.可移植性
D.可扩充性
参考答案:(55)C。
解析:软件的可复用性指软件或软件的部件能被再次用于其他应用中的程度。软件复用性取决于其模块独立性、通用性和数据共享性等。
软件的可维护性是指一个软件模块是否容易修改、更新和扩展,即在不影响系统其他部分的情况下修改现有系统功能中问题或缺陷的能力。
软件的可移植性指将软件系统从一个计算机系统或操作系统移植到另一种计算机系统或操作系统中运行时所需工作量的大小。可移植性取决于系统中硬件设备的特征、软件系统的特点和开发环境,以及系统分析与设计中关于通用性、软件独立性和可扩充性等方面的考虑。
软件的可扩充性指软件的体系结构、数据设计和过程设计的可扩充程度。可扩充性影响着软件的灵活性和可移植性。
由以上分析可知,该软件产品从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请求)发生,以及增加一条从“运行”态到“静止就绪”态的边,其状态转换原因是“挂起”。
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |