2023年职业考证-软考-程序员考试历年真题摘选含答案解析_第1页
2023年职业考证-软考-程序员考试历年真题摘选含答案解析_第2页
2023年职业考证-软考-程序员考试历年真题摘选含答案解析_第3页
2023年职业考证-软考-程序员考试历年真题摘选含答案解析_第4页
2023年职业考证-软考-程序员考试历年真题摘选含答案解析_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2023年职业考证-软考-程序员考试历年真题摘选含答案解析第1卷一.综合题(共15题)1.案例题阅读下列说明和C++代码,填写代码中的空缺,将解答写入答题纸的对应栏内。【说明】球类比赛记分系统中,每场有两支球队(Team)进行比赛(Game),分别记录各自的得分。图6-1所示为记分系统的类图。【C++代码】2.单选题在以用户界面(UI)层、系统交互(SI)层、问题领域(PD)层和数据管理(DM)层构成的软件架构中,业务实体和业务逻辑属于()层。问题1选项A.UIB.SIC.PDD.DM3.单选题在UML中,(

)展现了运行时处理结点以及其中构件(制品)的配置,给出了体系结构的静态视图。问题1选项A.类图B.组件图C.包图D.部署图4.单选题数控编程常需要用参数来描述需要加工的零件的图形。在平面坐标系内,确定一个点需要2个独立的参数,确定一个正方形需要(

)个独立的参数。问题1选项A.3B.4C.5D.65.案例题阅读以下说明和流程图,填写流程图中的空缺,将解答填入答题纸的对应栏内。【说明】如果n位数(n≥2)是回文数(从左到右读与从右到左读所得结果一致),且前半部分的数字递增(非减)、后半部分的数字将递减(非增),则称该数为拱形回文数。例如,12235753221就是一个拱形回文数。显然,拱形回文数中不含数字0。下面的流程图用于判断给定的n位数(各位数字依次存放在数组的各个元素A[i]中,i=1,2,...,n)是不是拱形回文数。流程图中,变量T动态地存放当前位之前一位的数字。当n是奇数时,还需要特别注意中间一位数字的处理。【流程图】

注1:“循环开始”框内给出循环控制变量的初值、终值和增值(默认为1),格式为:循环控制变量=初值,终值[,增值]注2:函数int(x)为取x的整数部分,即不超过x的最大整数。6.单选题在计算机系统中,通常可以(),以提高计算机访问磁盘的效率。问题1选项A.利用存储管理软件定期对内存进行碎片整理B.利用磁盘碎片整理程序定期对磁盘进行碎片整理C.利用系统资源管理器定期对ROM进行碎片整理D.利用磁盘碎片整理程序定期对磁盘数据进行压缩7.单选题设码长为8,原码10000000所表示的十进制整数的值为()。问题1选项A.-128B.-0C.1D.1288.单选题以下关于中断的叙述中,错误的是()。问题1选项A.电源掉电属于CPU必须无条件响应的不可屏蔽中断B.打印机中断属于不可屏蔽的内部中断C.程序运行错误也可能引发中断D.CPU可通过指令限制某些设备发出中断请求9.单选题软件从一个计算机系统或环境转移到另一个计算机系统或环境的难易程度是指软件的(

)。问题1选项A.兼容性B.可移植性C.可用性D.可扩展性10.单选题对象收到消息予以响应时,不同类型的对象收到同一消息可以进行不同的响应,从而产生不同的结果,这种现象称为(

)。问题1选项A.继承B.绑定C.聚合D.多态11.单选题下面的网络地址中,不能作为目标地址的是()。问题1选项A.0.0.0.0B.127.0.0.1C.10.255.255.255D.192.168.0.112.案例题阅读以下说明和C代码,填写程序中的空缺,将解答写入答题纸的对应栏内。函数strCompress(char*s)对小写英文字母串进行压缩,其基本思路是:如果串长小于3则不压缩,否则对连续出现的同一字符,用该字符及其个数来表示。例如,字符串"abbbcdddddddeeed"压缩后表示为"ab3cd7e3d"。如图4-1所示,在计算连续出现的同一字符个数时,借助字符指针s和计数变量k表示串中的字符,当s所指字符与其后的第k个字符不同时,一个重复字符串的压缩参数即可确定。

【C代码】#include#include#includevoidstrCompress(char*);intmain(){

chartest[]="abbbcdddddddeeed";

printf("%s\n",test);(1);

//调用strCompress实现test中字符串的压缩

printf("%s\n",test);

return0;}voidstrCompress(char*str){int

i;

char*p,tstr[11];

//在tstr中以字符串方式表示同一字符连续出现的次数

char*s=str,*buf;

//借助buf暂存压缩后的字符串

if(strlen(str)<3)

return;

buf=(char*)malloc(strlen(str)*sizeof(char)+1);

if(!buf)

return;

for(i=0;*s;){intk=1;

//用k累计当前字符的连续出现次数

buf[_(2)_]=*s;

//先将当前字符写入buf[]

if(s[1]&&*s==*(s+1)){

k++;

while(_(3)_)k++;

sprintf(tstr,"%d",k);

//将k的值转换为数字串暂存在tstr中

//将暂存在tstr中的数字字符逐个写入buf[]

p=tstr;

while(*p)

buf[i++]=_(4)_;

}

s+=k;

//跳过连续出现的同一字符,使s指向下一个不同的字符}

(5)='\0';

//设置字符串结尾

strcpy(str,buf);

//将暂存在buf中的压缩字符串复制给原串

free(buf);}13.单选题以下关于汇编语言的叙述中,正确的是(

)。问题1选项A.汇编语言源程序只能由伪指令语句构成B.汇编语言源程序都是通过对某高级语言源程序进行编译而得到的C.汇编语言的每条指令语句可以没有操作码字段,但必须具有操作数字段D.汇编语言的每条指令语句可以没有操作数字段,但必须具有操作码字段14.单选题5G网络技术具有()的特点。问题1选项A.低带宽、低时延B.低带宽、高时延C.高带宽、低时延D.高带宽、高时延15.单选题单向循环链表如下图所示,以下关于单向循环链表的叙述中,正确的是(

)。问题1选项A.仅设头指针时,遍历单向循环链表的时间复杂度是O(1)B.仅设尾指针时,遍历单向循环链表的时间复杂度是O(1)C.仅设头指针时,在表尾插入一个新元素的时间复杂度是O(n)D.仅设尾指针时,在表头插入一个新元素的时间复杂度是O(n)第1卷参考答案一.综合题1.【答案】(1)intgoals或intgoals=0(2)this->name(3)goals++或++goals或等价表示(4)Team*(5)newGame(t1,t2)【解析】本题考查考生应用C++语言进行程序设计的能力,涉及类、对象、函数的定义和相关操作。要求考生根据给出的案例和代码说明,阅读并完成程序填空。本题中涉及比赛和球队。根据说明进行设计,题目给出了类图(图6-1类图所示)。图中类Game和Team之间是聚合关系。Game类有两个public的函数:getResults()和incrementGoal:分别表示获取比赛结果和某支球队进1球后增加比分;private属性就是参加比赛的两支球队。Team类中有3个public函数,分别为本球队进1球后增加得分、获得本队得分和获得球队名称;private的属性为球队名称和得分。球队名采用string类型,得分信息从上下文可知是goals,用int类型。在Team对象创建时,初始化球队名称和得分。C++11标准之后,对象的属性定义时才可显式初始化;对象的属性name类型为string,需要在构造器中对球队名称加以显式初始化。其构造器接收球队名称,参数名称与对象的属性名均为name,用this关键字加以区分。其中this关键字用来引用当前对象或类实例,可以用->取属性或行为,即:this->name=name;this->goals=0;注:没有同名时是否有this->都表示名称所表示的对象属性。从函数getGoals()中的returngoals判断,缺少属性goals来表示得分。再从上下文判断,函数increamentGoal()中,表示在比赛中某球队进1球,即goals的值增加1。创建Game对象表示两支球队的一场比赛。构造器参数为两支球队,用以初始化Game对象的两个属性。函数getResults()用于输出当前比分。函数incrementGoal()用于表示一支球队进1球,具体是哪支球队由参数给定,所以参数类型为Team*。主控逻辑代码在程序主入口函数main()中实现。在main()函数中,先创建两支球队(用new关键字),即两个Team类的对象指针,球队名称分别为“TA”和“TB”,指针名称分别为t1和t2,即:Team*t1=new

Team("TA");Team*t2=new

Team("TB");以这两个对象指针名称为参数,创建一场比赛对象(用new关键字),指针名称为football,即:Game*football=newGame(t1,t2);然后用:football->incrementGoal(t1);football->incrementGoal(t2);表示球队TA进一球,球队TB进一球。然后调用getResults()函数输出此时的比分,即:football->getResults();然后TB再进一球,再调用getResults()函数输出此时的比分,即:football->incrementGoal(t2);football->getResults();综上所述,空(1)需要定义表示一支球队的得分goals,题目代码中已经给出用分号结尾,所以空(1)为intgoals(或c++11标准之后intgoals=0也支持);空(2)需要表示Team对象指针的name属性,即this->name;空(3)需要表示当前球队得分加1,因为只有一条语句,只要表示goals加1即可,即goals++或++goals(等价表示);空(4)需要表示参数类型为球队指针,即Team*;空(5)处为创建Game类的对象football,需要两个Team类型对象的指针,从其后面语句可知,两个指针名称为t1和t2,即newGame(t1,t2)。2.【答案】C【解析】本题考查软件工程的基础知识。业务实体和业务逻辑属于企业需要解决的实际问题的领域。3.【答案】D【解析】本题考查统一建模语言(UML)的基本知识。UML图,包括用例图、协作图、活动图、序列图、部署图、构件图、类图、状态图,是模型中信息的图形表达方式可以从不同角度对系统进行可视化。UML中的图可以归为两大类:静态视图和动态视图。类图、组件图、包图和部署图都是展示系统静态结构的视图。类图中包含类、接口、协作和它们之间的依赖、泛化和关联等关系,常用于对系统的词汇进行建模。组件图专注于系统静态实现视图,描述代码构件的物理结构以及各种构建之间的依赖关系.包图用于把模型本身组织成层次结构,描述类或其他UML构件如何组织成包及其之间的依赖关系。部署图给出了体系结构的静态实施视图,展示运行时处理结点以及其中构件的配置,用于表示一组物理结点的集合及结点间的相互关系,从而建立了系统物理层面的模型。4.【答案】B【解析】本题考查初等数学基础知识。在平面坐标系中,确定一个点需要横坐标和纵坐标值。如果需要确定一个正方形,则需要四个参数两个点的横坐标和纵坐标值。当然还可以选取一个点的坐标值,以及边长长度及与X轴的倾斜角度。5.【答案】(1)n-i+1(2)T&&A[i]!=0或T&&A[i]>0(3)T(4)n(5)T或A[n/2]或A[(n-1)/2]【解析】1)跟A[i]对称的后半部分元素下标是n-i+1;2)T动态地存放当前位之前一位的数字,所以这里A[i]大于前一项T值。且在拱形回文数中,不含数字0,所以再加上一个条件A[i]!=03)比较完后,将A[i]值赋给T,T进行动态地存放当前位之前一位的数字。4、5)判断元素个数是偶数还是奇数,如果是奇数,则还需要进行判断最中间的元素,所以4空这里填n,5空填的是为奇数个时最中间元素的前一项元素的表示。6.【答案】B【解析】本题考查计算机系统性能方面的基础知识。文件在磁盘上一般是以块(或扇区)的形式存储的。有的文件可能存储在一个连续的区域内,有的文件则被分割成若干个“片”存储在磁盘中不连续的多个区域。这种情况对文件的完整性没有影响,但由于文件过于分散,将增加计算机读盘的时间,从而降低了计算机的效率。磁盘碎片整理程序可以在整个磁盘系统范围内对文件重新安排,将各个文件碎片在保证文件完整性的前提下转换到连续的存储区内,提高对文件的读取速度。7.【答案】B【解析】本题考查计算机系统中的数据表示的基础知识。原码、反码和补码表示是数值数据的三种基本的编码方法,对于正数,三种编码表示是相同的,不同之处在于负数的表示。码长为8即用8位二进制形式来表示数值,其中最左边的位是符号位,0表示是正数,1表示是负数,剩余的7位表示数值部分,原码表示的规则是直接表示出数值的绝对值。本题中10000000的最高位为1,表示是负数。数值部分为0,即绝对值为0的数值。在原码表示中,0由于符号部分不同占用00000000和10000000两个编码。8.【答案】B【解析】中断是这样一个过程:在CPU执行程序的过程中,由于某一个外部的或CPU内部事件的发生,使CPU暂时中止正在执行的程序,转去处理这一事件,当事件处理完毕后又回到原先被中止的程序,接着中止前的状态继续向下执行。这一过程就称为中断。引起中断的事件就称为中断源。若中断是由CPU内部发生的事件引起的,这类中断源就称为内部中断源;若中断是由CPU外部的事件引起的,则称为外部中断源。中断包括软件中断(不可屏蔽)和硬件中断。软中断为内核触发机制引起,模拟硬件中断。硬件中断又分为外部中断(可屏蔽)和内部中断(不可屏蔽)。外部中断为一般外设请求;内部中断包括硬件出错(掉电、校验、传输)和运算出错(非法数据、地址、越界、溢出等)。打印机中断属于可屏蔽的外部中断。9.【答案】B【解析】本题考查软件工程基础知识。正确性(准确性):正确实现算法功能,最重要的指标,是能否得到正确或相符的结果或效果有关的软件。可靠性:元件、产品、系统在一定时间内、在一定条件下无故障地执行指定功能的能力或可能性。友好性:具有良好的使用性。可读性:可读的、可以理解的,方便分析、修改和移植。健壮性:对不合理的数据或非法的操作能进行检查、纠正。效率:对计算机资源的消耗,包括计算机内存和运行时间的消耗。可移植性:软件从一个计算机系统或环境转移到另一个计算机系统或环境的难易程度。10.【答案】D【解析】本题考查面向对象基础知识。在采用面向对象技术开发的系统中,对象之间通过发送消息进行交互,对象在收到消息时予以响应。在继承关系的保证下,不同类型的对象收到同一消息可以进行不同的响应,产生完全不同的结果,这种现象叫作多态。在使用多态的时候,用户可以发送一个通用的消息,实现细节由接收对象自行决定。接收消息的对象在继承层次关系中处于较低层次,实现不同行为,有调用时,将需要执行的行为的实现和调用加以结合,即绑定,绑定不同代码也就产生对消息不同响应的效果。聚合是对象之间整体与部分的关系。继承是类与类之间的关系。11.【答案】A【解析】本题考查网络的基础知识。在IPv4中,0.0.0.0地址被用于表示-一个无效的、未知的或者不可用的目标。以127开头的IP地址都是回环地址(Loopbackaddress),其所在的回环接口一般被理解为虚拟网卡,并不是真正的路由器接口。发送给127开头的IP地址的数据包会被发送的主机自己接收,根本传不出去,外部设备也无法通过回环地址访问到本机。127.0.0.1经常被默认配置为localhost的IP地址。一般会通过ping127.0.0.1来测试某台机器上的网络设备是否工作正常。一个A类IP地址由1字节的网络地址和3字节主机地址组成,而且网络地址的最高位必须是0。A类IP中的10.0.0.0到10.255.255.255是私有地址,一个A类网络可提供的主机地址为16777214个,也就是224-2个,减2的原因是主机地址全0表示“本主机”所连接到的单个网络地址,而全1表示“所有”,即该网络上所有主机。12.【答案】(1)strCompress(test)或strCompress(&test[0])或等效形式(2)i++(3)*s==*(s+k)或s[0]=s[k]或*(s+k)&&*s==*(s+k)或s[k]&&s[0]==s[k]或等效形式(4)*p++或等效形式(5)buf[i]或buf[i++]或*(buf+i)或等效形式注意:从试题五和试题六中,任选一道题解答。【解析】本题考查C程序流程控制和字符串处理及指针的应用。空(1)处实现对函数strCompress的调用,根据strCompress的声明和定义(voidstrCompress(char*str)要求实参提供字符存储的地址,main函数中的字符数组test保存了需要压缩的字符串,因此空(1)应填入“strCompress(test)”或其等效形式。在函数strCompress中,其方式为:①将首个字符存在buf数组第一个位置中②计算该字符出现的次数,用k表示。此处计算时用ifif(s[1]&&*s==*(s+1))先做初步判断,当*s==*(s+1)表示当前位置第一个字符等于第二个字符,说明有多次出现,k值+1,如果不成立,表示该字符只出现了一次,跳过if中间的过程,直接往下一个不同字符进行判定。当出现重复字符时,此时还要判断后面是否有重复的字符,且用k进行计数该字符出现的次数。所以第(3)空用*s==*(s+k)表示后面字符与该字符是否相同,如果相同,k值+1,直到出现不同的字符,结束循环。循环结束后,要将k值赋给buf数组中,所以用用sprintf函数将k转为字符串,然后将暂存在tstr中的数字字符逐个写入buf数组,所以第(4)空为buf[i++]=*p++,将k对应的字符串存入到buf的下一个位置。③下一个不同字符同样想要进行赋

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论