21. 新软件项目与过去成功开发过的一个项目类似,但规模更大,此时比较适合使用 (25) 进行项目开发设计。
(25) A.原型法
B.变换模型
C.瀑布模型
D.螺旋模型
参考答案:(25)C。
解析:由于新项目与过去成功开发过的一个项目类似,已经有了成功的项目开发经验和积累的软件模块,因此,应尽可能将这些经验和软件模块应用到新项目中,即对于这个规模更大的软件项目应该使用瀑布模型进行开发。
22.在下列代码中,正确的C代码是(26)
(26) A. #defineMYNAME="ABC"
B. #includestring.h
C. for(i=0;i<10;i++);
D. structintstu{intname};
参考答案:(26) C。
21. 新软件项目与过去成功开发过的一个项目类似,但规模更大,此时比较适合使用 (25) 进行项目开发设计。
(25) A.原型法
B.变换模型
C.瀑布模型
D.螺旋模型
参考答案:(25)C。
解析:由于新项目与过去成功开发过的一个项目类似,已经有了成功的项目开发经验和积累的软件模块,因此,应尽可能将这些经验和软件模块应用到新项目中,即对于这个规模更大的软件项目应该使用瀑布模型进行开发。
22.在下列代码中,正确的C代码是(26)
(26) A. #defineMYNAME="ABC"
B. #includestring.h
C. for(i=0;i<10;i++);
D. structintstu{intname};
参考答案:(26) C。
24.若与文件型指针中相关联的文件的当前读位置已到了文件的末尾,则函数feof(fp)的返回值是(28)
(28) A. 0
B. -l
C. 非零值
D. NULL
参考答案:(28) C。
解析:当调用fopen函数时,系统将为实参文件设定一个存放文件读写控制信息的控制块。该控制块记录有关文件持征、使用方式,当前读写位置等文件状态,并将该控制块的指针返回,作为文件指针变量的值。以后程序通过该指针调用函数时,系统能访问到这个控制块,利用该文件控制块中的控制信息,正确完成文件的读或写。所以文件指针并不真正指向文件当前读写位置,但通过文件指针,系统能在文件控制块中访问文件的当前读写位置。若某文件与文件指针中相关联着,该文件的当前读写位置在文件的末尾时,函数调用feof(fp)的返回值是一个非零值。所以正确解答是C。
25.下列语句中,将C定义为文件型指针的是(29)
(29)锕FILEc;②
B. FILE*c;
C. filec;
D. file*c;
参考答案:(29)B。
解析:如上题所述,文件控制块的类型已由系统命名为FILE。所以定义文件指针变量是C,就得用代码:“FILE*c;”。所以正确解答是B。
36. 以下标准代号中, (30) 不属于国家标准代号。
(30) A.GSB
B.GB/Z
C.GB/T
D.GA/T
参考答案:(30)D。
解析:我国国家标准中,强制性国家标准代号为“GB”;推荐性国家标准代号为“GB/T”;“GB/Z”是我国国家标准化指导性技术文件的代号;“GSB”是我国国家实物标准代号;“GA/T”是公共安全推荐性标准,它是我国公安部制定的行业标准。
27.标准库函数fputs(pl,p2)的功能是(31)
(31) A. 从pl指向的文件中读一个字符率存入p2指向的内存
B. 从p2指向的文件中读一个字符串存入pl指向的内存
C. 从pl指向的内存中的一个字符串输出到p2指向的文件
D. 从p2指向的内存中的一个字符串输出到pl指向的文件
参考答案:(31) C。
解析:标准函数调用fputs(p1,p2)完成的功能是将由字符指针pl所指的字符串内容输出到与文件指针p2相关联的文件中,即将从pl所指的内存中的字符串内容输出到p2所指向的文件中。所以正确解答是C。
28. 页式存储管理当中的页面是由 (32) 所感知的。
(32) A.用户
B.操作系统
C.编译系统
D.链接程序
参考答案:(32)B。
解析:进行存储分配时,页式存储管理为每个作业建立一张页表,指出逻辑地址中页号与主存中块号的对应关系。然后,借助于硬件的地址转换机构,在作业执行过程中按页动态定位。每执行一条指令时,按逻辑地址中的页号查页表,得到对应的块号,根据关系式,绝对地址=块号×块长+单元号,计算出欲访问的主存单元的地址。由此可知,页面是由操作系统所感知的。
29. 在一个单CPU的计算机系统中,有3台不同的外部设备R1、R2和R3,以及3个进程P1、P2和P3。系统CPU调度采用可剥夺式优先级的进程调度方案,3个进程的优先级、使用设备的先后顺序和占用设备时间如表1所示。
表1 进程的优先级、使用设备的先后顺序和占用设备时间表
进 程优 先 级使用设备、CPU的先后顺序和占用时间
进 程 |
优 先 级 |
使用设备、CPU的先后顺序和占用时间 |
P1 |
高 |
R1(20ms)→CPU(20ms)→R3(20ms) |
P2 |
中 |
R3(40ms)→CPU(30ms)→R2(20ms) |
P3 |
低 |
CPU(30ms)→R2(20ms)→CPU(20ms) |
假设操作系统的开销忽略不计,从3个进程同时投入运行到全部完成,CPU的利用率约为 (33) %;R3的利用率约为 (34) %。其中,设备的利用率是指该设备的使用时间与进程组全部完成所占用时间的比率。
(33) A.66.7
B.75
C.83.3
D.91.7
(34) A.66
B.50
C.33
D.17
参考答案:(33)C;(34)B。
解析:在多道系统中的3个任务(P1、P2和P3)是竞争使用CPU,但可并行使用I/O设备(R1、R2和R3)。各个任务运行的分析过程如图6所示。图中水平粗实线表示某进程实际执行过程所占用的CPU或I/O设备的时间。
对图3分析如下。
① t0~t1时段(20ms):结合表3-2中3个进程使用设备的先后顺序,因此,进程调度程序先选中进程P3占用CPU的使用权,进程P1占用R1设备的使用权,进程P2占用R3设备的使用权。
② t1~t2时段(20ms):由于进程的优先级P1>P3且系统CPU调度采用可剥夺式优先级的进程调度方案,CPU使用权在这一进段将转让给进程P1,进程P1占用CPU的使用权20 ms,进程P2继续占用R3设备20 ms,进程P3因CPU使用权被剥夺而处于就绪状态。
③ t2~t3时段(20ms):进程P1占用CPU使用权终止后,进入占用R3设备的时段。由于进程的优先级P2>P3,进程P2使用完R3设备后,进入占用CPU的使用权时段。进程P3仍处于就绪状态。
④ t3~t4时段(10ms):进程P1在t3时刻运行完毕。进程P2继续占用CPU的使用权。进程P3仍处于就绪状态。
⑤ t4~t5时段(10ms):进程P2占用CPU使用权终止后,进入占用R2设备的时段。进程调度程序重新调度进程P3占用CPU的使用权。
⑥ t5~t6时段(10ms):进程P3占用CPU使用权终止后,进入占用R2设备的时段。由于I/O设备R2可被进程并行使用,因此,进程P2、P3在这一时段将并行占用R2设备。系统中也没有其他待运行的进程,此时段CPU将处于空闲状态。
⑦ t6~t7时段(10ms):进程P2在t6时刻运行完毕。进程P3继续占用R2设备。此时段CPU仍处于空闲状态。
⑧ t7~t8时段(20ms):进程P3的I/O操作任务完成后,进程调度程序将CPU使用权分配给它。进程P3占用CPU 20ms后运行完毕。
假设操作系统的开销忽略不计,从3个进程同时投入运行到全部完成,CPU的利用率约为
由于设备的利用率是指该设备的使用时间与进程组全部完成所占用时间的比率,因此,设备R3的利用率约为
同理可得,设备R1的利用率约为
设备R2的利用率约为
30. 某磁盘的转速为7 200转/分,传输速度为4Mbps,控制器开销为1ms。要保证读或写一个512字节的扇区的平均时间为11.3ms。那么,该磁盘的平均寻道时间最大应不超过 (35) ms。
(35) A.3.9
B.4.7
C.5.5
D.6.1
参考答案:(35)D。
解析:磁盘读或写某个扇区所需平均时间应包括① 该磁盘的平均寻道时间、② 平均旋转时间、③ 读或写数据的传输时间和④控制器的开销时间等。
通常,选用磁道旋转一周所用时间的一半作为平均旋转(或等待)时间。由于磁盘的转速为7 200转/分,因此平均旋转时间 。
由于该磁盘的传输速度为4Mbps,因此,读或写一个512字节的数据所需的传输时间 。
控制器开销为1ms。要保证读或写一个512字节的扇区的平均时间为11.3ms,则该磁盘的平均寻道时间的最大值为 ,即不超过6.1 ms。
31. 根据以下Redhat Linux操作系统的提示信息,将(36)空缺处的Apache服务操作命令填写完整。
[root@gcz root] # service httpd start
[root@gcz root] # (36)
httpd (pid 20014 20013 20012 20011 20010 20009 20008 20007 20004)正在运行…
(36) A.service httpd status
B.httpd -k start
C.httpd -k restart
D.apachectl start
参考答案:(36)A。
解析:使用命令“service httpd start”启动httpd进程之后,再使用命令“service httpd status”可以查看Apache服务器的状态信息。
选项B的“httpd -k start”用于启动Apache服务,其等价于“service httpd start”或“apachectl start”。
选项C的“httpd -k restart”用于重启Apache,使其重新读取配置文件,与其等价的命令有“service httpd restart”和“apachectl restart”。
另外,使用命令“service httpd stop”可以终止Apache服务,该命令的等价命令是“httpd -k stop”(或“apachectl stop”)。
32. 在C语言中,设有数组定义:char array[]=“China”;则数组array所占用的空间为 (37) 。
(37) A.5个字节
B.6个字节
C.10个字节
D.12个字节
参考答案:(37)B。
解析:字符数组是每个元素存放一个字符型数据的数组。C语言中约定用\0作为字符串的结束标志,它占内存空间,但不计入字符串的长度。对数组array赋初值char array[ ]=“China”,此时系统自动在末尾加入一个‘\0’,此时数组array的长度为6,所占用的空间为6个字节,即char array[]=“China”等价于char array[ ]={‘C’,‘h’,‘i’,‘n’,‘a’,‘\0’}。
若定义char array[ ]={‘C’,‘h’,‘i’,‘n’,‘a’,},此时数组array的长度为5个字节。
33. 对于以下编号为①、②、③的正规式,说法正确的是 (38) 。
①(aa*|ab)*b ②((a|b)*|aa)*b ③ (a|b)*b
(38) A.正规式①和③等价
B.正规式①和②等价
C.正规式②和③等价
D.正规式①、②和③互不等价
参考答案:(38)C。
解析:根据正规式r和s的意义,两个正规式等价说明r和s代表的字符串集合相同,因此可用证明集合相等的方法判断。另外,也可构造出与每个正规式对应的自动机进行说明。但是这两个方法实施起来都很烦琐,一种比较简便的方法是,根据正规式的含义及其代数性质进行判断。
由于题目中给出的正规式①、②和③的共同之处是以字符b结尾,因此只需考虑正规式“(aa*|ab)*”、“((a|b)* |aa)*”和“(a|b)*”之间的等价关系。从直观的角度理解,正规式“(aa*|ab)*”表示的是包含空串 及a开头的且每个b之后必然出现a的字符串的集合;而正规式“(a|b)*”表示包含空串 在内的所有a和b构成的字符串集合,并不限制b的出现方式;正规式“((a|b)* |aa)*”表示的字符串也不具有必须以a开头的特点。因此,正规式①与②和正规式①与③的等价关系即可排除,即先排除选项A和B。
由于“(a|b)*”已经包括了含有“aa”子串的所有a和b字符串,因此,对于正规式“((a|b)* |aa)*”中的“aa”可省略,即正规式“((a|b)* |aa)*”与“(a|b)*”是等价的,故正确答案是选项C。
34. 表达式 (39) 对应的逆波兰式是“ab+-c/d-”。
(39) A.a-b-c/d
B.-(a+b)/c-d
C.-a+b/c-d
D.(a+b)/(-c-d)
参考答案:(39)B。
解析:一个表达式可用一棵二叉树表示,其中的叶子节点表示操作数,内部节点表示操作符或中间结果,根节点表示整个表达式的值。对此二叉树分别进行前序、中序和后序遍历恰好为表达式的前缀表示(波兰式)、中缀表示和后缀表示(逆波兰式)。其中,表达式的前缀和后缀表示均可以将表达式中的括号省去而不影响计算次序和结果。
表达式的逆波兰表示也就是后缀表示,它将运算符号写在运算对象的后面,并指明其前面的操作数或中间结果所要执行的运算。对后缀表达式从左到右求值,则每当扫描到一个运算符号时,其操作数是最近刚得到的。因此“ab+-c/d-”表示先将a与b相加,然后进行一元“-”运算,结果除以c,除运算的商再与d相减,即对应的表达式为“-(a+b)/c-d”。
35. 软件开发工具VB、PB和Delphi是可视化的。这些工具是一种 (40) 程序语言。
(40) A.逻辑式
B.命令式
C.函数式
D.事件驱动
参考答案:(40)D。
解析:事件驱动(Event Driven)是指系统根据发生的事件发送消息给相应的程序,程序根据事件和当前状态,决定要做的事情。如果不发生事件,计算机的控制权并不是在正在执行的程序手里,这时程序并不占用CPU资源。面向对象和可视化程序设计方法采用了事件驱动机制,所以程序设计方法发生了很大的改变。事件驱动给程序设计带来了极大的灵活性。同时,它可以在不采用分时系统的前提下实现多进程。
可视化程序设计(Visual Programming)运用面向对象程序设计的概念,通过图形化及可视途径,构建应用程序。它使程序设计更为简单和容易。软件开发工具Visual Basic、PB和Delphi提供了可视化的集成开发环境,运用代表通用于程序的图标,通过图形操作,构建基于图形用户界面(GUI)的应用程序,是一种以事件驱动的程序语言。
36.在下列代码中,错误的C代码是(41)
(41)A. #definePI3.14159
B. #include"stdio.h";
C. if(2);
D. for(;;)if(1)break;
参考答案:(41)B。
解析:A是正确的宏定义。B的文件包含预处理命令行不可以有多余的分号字符。C是if语句,虽没有任何意义,但就句法来说是正确的。D是for语句,其成分语句是if语句,从for语句来说,是一个无穷循环的控制结构,但它的成分语句因条件成立,执行break语句,立即退出循环。同样虽也是一条没有任何意义的语句,但从句法规则来说,也是正确的。正确解答是B。
37.设有以下定义,则执行语句"z=2*(N+Y(5+1));"后,z的值为(42)
#defineN3
#defineY(n)((N+l)*n)
(42)A. 出错
B. 42
C. 48
D. 54
参考答案:(42)C。
解析:在新的宏定义中,可以使用前面已定义的宏名。另外,宏调用是这样被替换展开的,分别用宏调用中的实在参数字符序列替换定定义字符序列中对应所有出现的形式参数。而宏定义字符序列中的不是形式参数的其他字符则保留。这样形成的字符序列,即为宏调用的展开替换结果。所以代码"z=2*(N+Y(5+1));"被替换成:
z=2*(3+((3+1)*5+1));
执行该代码,将使Z的值为48。解答为C。
38. 当使用数据流图对一个工资系统进行建模时, (43) 可以被认定为外部实体。
(43) A.工资单
B.工资系统源程序
C.接收工资单的银行
D.工资数据库
参考答案:(43)C。
解析:数据流程图(Data Flow Diagam,DFD)也称数据流图,是一种便于用户理解、分析系统数据流程和描述系统逻辑模型的图形工具。它摆脱了系统的物理内容,精确地在逻辑上描述系统的功能、输入、输出和数据存储等,是系统逻辑模型的重要组成部分。
DFD由数据流、加工、数据存储和外部实体4个要素构成。外部实体是指存在于软件系统之外的人员或组织,它指出系统所需数据的发源地和系统所产生数据的归宿点。当使用DFD对一个工资系统进行建模时,接收工资单的银行可以被认定为是一个外部实体,而选项A、B和D的内容都不符合外部实体的定义。
39.以下程序中的for循环执行的次数是(44)
#include
#defineN2
#defineMN+1
#defineNUM(M+l)*M/2
main()
{inti,n=0;
for(i=l;i<=NUM;i++){n++;printf("%d",n);}
printf(" ");}
(44)A. 5
B. 6
C. 8
D. 9
参考答案:(44)C。
解析:代码NUM被替换成(2+1+1)*2+1/2,所以其值是8。所以程序中的脸循环执行的次数是8次。正确解答是C。
40.下列字符列中,不是用来表达转义字符是(45)
(45)A.\\
B.\'
C. 074
D. \0
参考答案:(45)C。
解析:转义字符有三种书写形式:反斜社字符后接上某个规定的字符;反斜杠字符后接上13个八进制数字符;反斜社字符和字符X之后接上1至2个十六进制数字符。后两种分别八进制数和十六进制数直接给出字符的ASCll代码值。而074是八进制整数,不是转义字.所以解答是C。
【编辑推荐】