资源预览内容
第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
第9页 / 共19页
第10页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
2022年软考-程序员考前提分综合测验卷(附带答案及详解)1. 案例题阅读以下说明和C代码,填写程序中的空缺,将解答写入答题纸的对应栏内。【说明】规定整型数组a中的元素取值范围为0,N),函数usrSort( int n, int a )对非负整型数组a的前n个元素进行计数排序。排序时,用temp_arri表示i在数组a中出现的次数, 因此可以从0开始按顺序统计每个非负整数在a中的出现次数,然后对这些非负整数按照从小到大的顺序,结合其出现次数依次排列。例如,对含有10个元素0,8,5,2,0,1,4,2,0,1的数组a排序时,先计算出有3个0、2 个1、2个2、1个4、1个5和1个8,然后可确定排序后a的内容为0,0,0,1,1,2,2,4,5,8。下面代码中用到的memset函数的原型如下,其功能是将p所指内存区的n个字节都设置为ch的值。void*memset (void *p, int ch, size_t n);【C代码】#include#include#include#define N 101void printArr(int a,int n);void usrSort(int n,int a);int main() int a10=0,8,5,2,0,1,4,2,0,1; printArr (a,sizeof(a)/sizeof(int); ( 1 ) _; /调用usrSort()对数组a进行升序排序printArr ( a,sizeof(a)/sizeof(int) );return 0;void printArr (int a,int n) int i; for(i=0;ivoid usrSort(int n, int a) int i,k; int *temp_arr; /用temp_arri表示i在a中出现的次数 temp_arr=(int *)malloc(N*sizeof(int) ); if(!temp_arr) return; /将所申请并由temp_arr指向的内存区域清零 memset(_ (2) _); for(i=0;i_( 3 ) +; k=0; for(i=0;i ( 4 ) ; while(cnt0) ak=i; /将i放入数组a的适当位置 ( 5 ) ; cnt-; free(temp_arr);【答案】(1) usrSort(10,a)或等效形式,a可替换为&a,&a0。(2) temp_arr,0,N*sizeof(int)或等效形式,其中N和sizeof(int)可替换为101、4。(3) ai或*(a+i)或等效形式(4) cnt = temp_arri或cnt= *(temp_arr+i)或等效形式(5)k+或+k或k=k+1或k+=1或等效形式【解析】本题考查考生对C程序基本结构、函数定义及调用和运算逻辑的理解和应用。根据空(1)所在语句的注释,明确是对函数usrSort进行调用。usrSort的原型声明为“void usrSort(int n, int a),第一个参数表示需要排序的元素个数,第二个参数表示对哪个数组进行排序,题目中,需要对含有10个元素的数组进行排序,因此空(1)应填入“usrSort(10,a)” 或其等效形式。注意:第二个参数需要传入的数组(数组首地址),用数组名数组名或下标为0的数组元素取地址都可以,因此。空(2)所在语句是调用memset对申请的存储区域进行初始化。根据注释,要求将 temp_arr指向的内存区域清零,根据声明memset时的定义,void*memset (void *p, int ch, size_t n); ,此处需要对temp_arr所指向的空间区域的元素值都设置为0,而总king就可以结合语句:temp_arr=(int *)malloc(N*sizeof(int) );,表示temp_arr占用空间为N*sizeof(int),可知函数调用为memset ( temp_arr , 0 , N * sizeof ( int ) ) 。空(3)所在的循环语句遍历数组a的所有元素,将元素ai作为temp_arr的下标, 从而使得temp_arrai表示了ai表示的值在数组a中出现的次数。例如:数组a中函数元素1,则需要temp_arr1的值+1,数组a中函数元素5,则需要temp_arr5的值+1。空(4)、(5)主要是通过temp_arr中的元素取值情况来对数组a中元素进行重排,假设tem_arr0=3,则表示0元素出现了3次。首先用cnt保留元素出现的次数,可知空(4)处应设置cnt的初始值,为“temp_arri”。 当cnt0时,表示元素i出现的次数超过了1次,需要进行循环填入,每在数组中放入1个i元素后,cnt自减(表明还需要放置的次数要减1),而k需要自增(表明元素放置位置要往后一个),以给出下一个i要放入的数组位置,因此空(5)处应填入“k+”或其等效形式。2. 单选题以下关于信息特性的描述中,错误的是( )。问题1选项A.信息必须依附于某种载体进行传输B.通过感官的识别属于信息间接识别C.通过各种测试手段的识别属于信息间接识别D.信息在特定的范围内有效【答案】B【解析】信息是可以识别的,不同的信息源有不同的识别方法。识别分为直接识别和间接识别,直接识别是指通过感官的识别,间接识别是指通过各种测试手段的识别。很明显B选项“通过感官的识别属于信息间接识别”的说法是错误的。其他选项说法正确,都是关于信息的准确描述。3. 单选题某书的页码为1,2,3,.,共用数字900个(一个多位数页码包含多个数字), 据此可以推断,该书最大的页码为( )。问题1选项A.237B.336C.711D.900【答案】B【解析】本题考查初等数学基础知识。1-9页共有9个数字;10-99共有2*(99-10+1)=180个数字,而接下来100-199共有3*(199-100+1)=300个数字,200-299共有3*(299-200+1)=300个数字,此时总共的数字有:9+180+300+300=789个数字,总共900个数字,即还有900-789=111个数字,此时都是三位数的数字,所以还剩下37个数字,从300开始,到336结束,刚好37个数字。4. 单选题若某二叉树的先序遍历序列是ABDCE,中序遍历序列是BDACE,则该二叉树为( )。问题1选项A.B.C.D.【答案】D【解析】本题考查数据结构基础知识。根据先序遍历序列可确定树(及子树)的根结点,根据中序遍历序列可分割左、右子树上的结点,据此可逐步确定每个结点的位置。如下判断:1)已知先序遍历序列是ABDCE,则根节点为A;然后中序遍历序列是BDACE,则BD是左子树中的元素,CE是右子树中的元素。可排除AB选项。2)然后看左子树BD,在先序遍历中先访问B结点,B作为该子树的树根。回到中序遍历,先访问的是B,然后访问的是D,则D是B的右孩子结点。3)然后看右子树CE,在先序遍历中先访问C结点,C作为该子树的树根。回到中序遍历,先访问的是C,然后访问的是E,则E是C的右孩子结点。因此结果选择D。该题也可以对每个二叉树进行先序遍历和中序遍历运算,根据所得序列确定正确选项。即:选项A所示二叉树的先序遍历序列为ABDEC,中序遍历序列为DBEAC。选项B所示二叉树的先序遍历序列为ABCDE,中序遍历序列为BADCE。选项C所示二叉树的先序遍历序列为ABDCE,中序遍历序列为BDAEC。选项D所示二叉树的先序遍历序列为ABDCE,中序遍历序列为BDACE。综合判断后选择D选项。5. 单选题( )服务器的主要作用是提供文件的上传和下载服务。问题1选项A.GopherB.FTPC.TelnetD.E-mail【答案】B【解析】本题考查网络服务器的知识点。Internet网络提供的服务有多种,每一种服务都对应一种服务器,常见的几种服务器如下。Gopher服务器:提供分类的文档查询及管理。它将网络中浩瀚如海的信息分门别类地整理成菜单形式,提供给用户快捷查询并选择使用。Telnet服务器:提供远程登录服务。一般使用Telnet协议。使用Telnet 可以实现远程计算机资源共享,也就是指使用远程计算机就和使用本地计算机一样。FTP服务器:提供文件的上传和下载服务。使用该协议可以实现文件共享,可以远程传递较大的文件。同时,该服务器也提供存放文件或软件的磁盘空间。E-mail服务器:提供电子邮件服务。使用SMTP协议进行发送邮件和POP3协议进行接收邮件。用来存放使用电子邮件用户的邮件并且维护邮件用户的邮件发送。Web服务器:提供WWW服务。一般使用HTTP协议来实现。浏览器软件必须通过访问Web服务器才能获取信息。6. 单选题在软件开发的各个阶段,不同层次的人员参与程度并不一样。下图大致描述了某软件开发公司高级技术人员、管理人员和初级技术人员在各个阶段参与的程度,其中,曲 线、分别对应( )。问题1选项A.高级技术人员、管理人员、初级技术人员B.管理人员、高级技术人员、初级技术人员C.高级技术人员、初级技术人员、管理人员D.管理人员、初级技术人员、高级技术人员【答案】A【解析】本题考查软件工程基础知识。图中的直线表示总体来说各类人员参与程度的概况,当某个阶段人员参与度高的时候,对应的Y值越大。软件开发的最初阶段是管理人员接到项目,然后着手和安排人员等,随即高级技术人员参与需求分析和总体设计,在详细设计阶段初级技术人员才逐步参与。编码阶段工作量最大的是程序员(初级技术人员),但需要得到高级技术人员的指导和把控。测试阶段初期(单元测试)也是程序员为主,系统测试后则以高级技术人员为主。测试过程中还可能出现反复。整个过程中管理人员需要控制进度、质量、资源的分配使用等,在编码阶段管理人员参与度最低。7. 单选题某工厂要分配A、B、C、D、E五个工人做编号为1、2、3、4、5的五项工作,每个人只能做一项工作,每项工作只能由一人做。下表说明了每个工人会做哪些工作(用“V” 表示)、不会做哪些工作(用“X”表示)。根据此表,可知共有( )种分配方案。问题1选项A.3B.4C.5D.6【答案】B【解析】本题考查应用数学基础知识。从表格中看出,工作2只能由工人C来做(表示成C2
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号