2022年软考-程序员考试题库及全真模拟冲刺卷43(附答案带详解)

上传人:pu****.1 文档编号:512084315 上传时间:2024-01-14 格式:DOCX 页数:19 大小:499.06KB
返回 下载 相关 举报
2022年软考-程序员考试题库及全真模拟冲刺卷43(附答案带详解)_第1页
第1页 / 共19页
2022年软考-程序员考试题库及全真模拟冲刺卷43(附答案带详解)_第2页
第2页 / 共19页
2022年软考-程序员考试题库及全真模拟冲刺卷43(附答案带详解)_第3页
第3页 / 共19页
2022年软考-程序员考试题库及全真模拟冲刺卷43(附答案带详解)_第4页
第4页 / 共19页
2022年软考-程序员考试题库及全真模拟冲刺卷43(附答案带详解)_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《2022年软考-程序员考试题库及全真模拟冲刺卷43(附答案带详解)》由会员分享,可在线阅读,更多相关《2022年软考-程序员考试题库及全真模拟冲刺卷43(附答案带详解)(19页珍藏版)》请在金锄头文库上搜索。

1、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,然后

2、可确定排序后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 ) _; /调用

3、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

4、 ) +; 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程序基本结构、函数定义及调用和

5、运算逻辑的理解和应用。根据空(1)所在语句的注释,明确是对函数usrSort进行调用。usrSort的原型声明为“void usrSort(int n, int a),第一个参数表示需要排序的元素个数,第二个参数表示对哪个数组进行排序,题目中,需要对含有10个元素的数组进行排序,因此空(1)应填入“usrSort(10,a)” 或其等效形式。注意:第二个参数需要传入的数组(数组首地址),用数组名数组名或下标为0的数组元素取地址都可以,因此。空(2)所在语句是调用memset对申请的存储区域进行初始化。根据注释,要求将 temp_arr指向的内存区域清零,根据声明memset时的定义,void*

6、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

7、_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. 单选题在白盒测试中,( )覆盖是指设计

8、若干个测试用例,运行被测程序,使得程序中的每条语句至少执行一次。问题1选项A.语句B.判定C.条件D.路径【答案】A【解析】本题考查软件工程的基础知识。对程序模块进行白盒测试时,语句覆盖是指设计若干个测试用例,运行被测程序,使得程序中的每条语句至少执行一次。3. 单选题对关键码序列12,15,18,23,29,34,56,71,82进行二分查找(折半查找), 若要查找关键码71,则( )。问题1选项A.需依次与29、56、71进行比较B.仅需与71进行比较C.需依次与29、34、71进行比较D.仅需与29进行比较【答案】A【解析】本题考查数据结构基础知识。在有序顺序表中进行二分查找时,总是先与

9、表中间位置的元素进行比较,若相等,则查找成功结束,若比中间元素小,则进一步到前半区(由不大于中间元素者构成)进行二分查找,否则到后半区(由不小于中间元素者构成)继续进行二分查找。二分法查找(折半查找)的基本思想是:(设Rlow,high是当前的查找区)(1)确定该区间的中点位置:mid=(low+high)/2;(2)将待查的k值与Rmid.key比较,若相等,则查找成功并返回此位置,否则需确定新的查找区间,继续二分查找,具体方法如下。若Rmid.keyk,则由表的有序性可知Rmid,n.key均大于k,因此若表中存在关键字等于k的结点,则该结点必定是在位置mid左边的子表Rlow,mid1中

10、。因此,新的查找区间是左子表Rlow,high,其中high=mid1。若Rmid.keyk,则要查找的k必在mid的右子表Rmid+1,high中,即新的查找区间是右子表Rlow,high,其中low=mid+1。若Rmid.key=k,则查找成功,算法结束。(3)下一次查找是针对新的查找区间进行,重复步骤(1)和(2)。(4)在查找过程中,low逐步增加,而high逐步减少。如果highlow,则查找失败,算法结束。4. 单选题C语言程序中如果定义了名字都为a的全局变量和局部变量,则( )。问题1选项A.编译时报告名字a重复定义错误B.对a的引用固定指向全局变量C.对a的引用固定指向局部变

11、量D.在局部变量a的作用域内屏蔽全局变量a【答案】D【解析】本题考查程序语言的基础知识。通常来说,一段程序代码中所用到的名字并不总是有效可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域,包括静态作用域原则和最近嵌套原则。静态作用域原则是指编译时就可以确定名字的作用域,也可以说,仅从静态读程序可确定名字的作用域。当作用域形成嵌套关系时,如块包含在函数中,函数包含在文件中,则最接近引用处定义的名字有效。从名字被定义的代码位置开始,局部变量若是定义在复合语句中,则仅在其所定义的复合语句中可引用;若是定义在函数中,则在其所定义的函数中可引用。而全局变量则可在多个函数或多个程序语言中被引用。

12、如果有相同名字的全局变量和局部变量a,则在引用名字a的代码所在作用域中,局部变量a的作用域内屏蔽全局变量a。5. 单选题数控编程常需要用参数来描述需要加工的零件的图形。在平面坐标系内,确定一个点需要2个独立的参数,确定一个正方形需要( )个独立的参数。问题1选项A.3B.4C.5D.6【答案】B【解析】本题考查初等数学基础知识。在平面坐标系中,确定一个点需要横坐标和纵坐标值。如果需要确定一个正方形,则需要四个参数两个点的横坐标和纵坐标值。当然还可以选取一个点的坐标值,以及边长长度及与X轴的倾斜角度。6. 单选题在计算机系统中,通常可以( ),以提高计算机访问磁盘的效率。问题1选项A.利用存储管

13、理软件定期对内存进行碎片整理B.利用磁盘碎片整理程序定期对磁盘进行碎片整理C.利用系统资源管理器定期对ROM进行碎片整理D.利用磁盘碎片整理程序定期对磁盘数据进行压缩【答案】B【解析】本题考查计算机系统性能方面的基础知识。文件在磁盘上一般是以块(或扇区)的形式存储的。有的文件可能存储在一个连续的区域内,有的文件则被分割成若干个“片”存储在磁盘中不连续的多个区域。这种情况对文件的完整性没有影响,但由于文件过于分散,将增加计算机读盘的时间,从而降低了计算机的效率。磁盘碎片整理程序可以在整个磁盘系统范围内对文件重新安排,将各个文件碎片在保证文件完整性的前提下转换到连续的存储区内,提高对文件的读取速度

14、。7. 单选题函数main()、f()的定义如下所示。调用函数f()时,第一个参数采用传值(call by value) 方式,第二个参数采用传引用(call by reference)方式,main()执行后输出的值为( )。问题1选项A.2B.3C.8D.10【答案】C【解析】本题考查程序语言基础知识。调用函数时,传值调用是将实参的值传递给形参,在被调用函数中对形参的修改不会影响到实参。引用调用(或传址调用)的实质是将实参的地址传给形参,在被调用函数中修改形参的实质是修改实参变量,因此形参改变时,会引起实参发生变化。函数f()执行时,其第一个参数x得到值5,其第二个参数a是main()函数中x的引用,即在f中对a的修改就是对main()函数中x的修改。在函数f()中,x的初

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 习题/试题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号