2016年下半年下午 程序员 试题及答案与解析-软考考试真题-案例分析

合集下载

2016年下半年软件评测师(中级)上午选择+下午案例真题+答案解析完整版(全国计算机软考)

2016年下半年软件评测师(中级)上午选择+下午案例真题+答案解析完整版(全国计算机软考)

2016年下半年软件评测师真题+答案解析上午选择1、在汇编指令中,操作数在某寄存器中的寻址方式称为(1)寻址。

A. 直接B. 变址C. 寄存器D. 寄存器间接答案:C寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式,是确定本条指令的数据地址以及下一条要执行的指令地址的方法。

寻址方式中,操作数在指令中称为立即寻址;操作数在通用寄存器中称为寄存器寻址;操作数在主存单元,而其地址在指令中称为直接寻址;操作数在主存单元,而其地址在寄存器中称为寄存器间接寻址。

2、计算机系统中,虚拟存储体系由(2)两级存储器构成。

A. 主存一辅存B. 寄存器一CacheC. 寄存器一主存D. Cache一主存答案:A虚拟存储是指将多个不同类型、独立存在的物理存储体,通过软、硬件技术,集成为一个逻辑上的虚拟的存储系统,集中管理供用户统一使用。

这个虚拟逻辑存储单元的存储容量是它所集中管理的各物理存储体的存储量的总和,而它具有的访问带宽则在一定程度上接近各个物理存储体的访问带宽之和。

虚拟存储器实际上是主存-辅存构成的一种逻辑存储器,实质是对物理存储设备进行逻辑化的处理,并将统一的逻辑视图眞现给用户。

3、程序计数器(PC)是(3)中的寄存器。

A. 运算器B. 控制器C. CacheD. I/O设备答案:B计算机中控制器的主要功能是从内存中取出指令,并指出下一条指令在内存中的位置,首先将取出的指令送入指令寄存器,然后启动指令译码器对指令进行分析,最后发出相应的控制信号和定时信息,控制和协调计算机的各个部件有条不紊地工作,以完成指令所规定的操作。

程序计数器(PC)的内容为下一条指令的地址。

当程序顺序执行时,每取出一条指令,PC内容自动增加一个值,指向下一条要取的指令。

当程序出现转移时,则将转移地址送入PC,然后由PC指出新的指令地址4、中断向量提供(4)。

A. 外设的接口地址B. 待传送数据的起始和终止地址C. 主程序的断点地址D. 中断服务程序入口地址答案:D中断是这样一个过程:在CPU执行程序的过程中,由于某一个外部的或CPU内部事件的发生,使CPU暂时中止正在执行的程序,转去处理这一事件(即执行中断服务程序),当事件处理完毕后又回到原先被中止的程序,接着中止前的状态继续向下执行。

2016 年下半年程序员考试下午真题 (参考答案)

2016 年下半年程序员考试下午真题 (参考答案)
int tmp =x; x= y; y= tmp; } int maim__(2)__ {
更多考试真题及答案与解析,关注希赛网在线题库(/tiku/)
希赛网(),专注软考、PMP、通信考试
int a= 3, b= 7; printf("a1= %d b1=%d\n",a,b); Swap( a, b); Printf("a2 = %d b2=%d\n”,a,b); return 0; }
return findkthElem(a, (4) ,k);
else
//继续在基准元素之后查找
return findkthElem(a, (5) ,k);
}
return a[startIdx];
}
int main__(3)__ {
int i, k; int n; int a[] = {19, 12, 7, 30, 11, 11, 7, 53, 78, 25, 7};
【代码】
#include <stdio.h> #include <stdlib.h>
Int partition(int a [ ],int low, int high)
{//对 a[low..high]进行划分,使得 a[low..i]中的元素都不大于 a[i+1..high]中的元素。
int pivot=a[low]; //pivot 表示基准元素
例如,若数组元素依次为 3,-6,2,4,-2,3,-1,则输出 K=3,L=4,M=7。该流程图中考 察了 A[1:N]中所有从下标 i 到下标 j(j≥i)的各元素之和 S,并动态地记录其最大值 M。 【流程图】
更多考试真题及答案与解析,关注希赛网在线题库(/tiku/)

2016年下半年-程序员-上午卷和下午卷--试题和详细答案

2016年下半年-程序员-上午卷和下午卷--试题和详细答案

全国计算机技术与软件专业技术资格(水平)考试2016年下半年程序员上午和下午试卷(考试时间 9 : 00~11 : 30 共 150 分钟)1. 在答题卡的指定位置上正确写入你的姓名和准考证号,并用正规 2B 铅笔在你写入的准考证号下填涂准考证号。

2. 本试卷的试题中共有 75 个空格,需要全部解答,每个空格 1 分,满分75 分。

3. 每个空格对应一个序号,有 A、B、C、D 四个选项,请选择一个最恰当的选项作为解答,在答题卡相应序号下填涂该选项。

4. 解答前务必阅读例题和答题卡上的例题填涂样式及填涂注意事项。

解答时用正规 2B 铅笔正确填涂选项,如需修改,请用橡皮擦干净,否则会导致不能正确评分。

例题● 2016 年下半年全国计算机技术与软件专业技术资格(水平)考试日期是(88)月(89)日。

(88)A. 9 B. 10 C. 11 D. 12(89)A. 4 B. 5 C. 6 D. 7因为考试日期是“11 月 4 日”,故(88)选 C,(89)选 A,应在答题卡序号 88 下对 C 填涂,在序号 89 下对 A 填涂(参看答题卡)。

某质量技术监督部门为检测某企业生产的某个批次的化妆品含铅量是否超标,通常宜采用(1)的方法。

(1)A.普查 B.查有无合格证 C.抽样检查 D.查阅有关单据【答案】C【解析】某企业资料室员工张某和王某负责向系统中录入一批图书信息(如:图书编号、书名、作者、出版社,联系方式等信息).要求在保证质量的前提下,尽可能高效率地完成任务。

对于如下:A~D四种工作方式,(2)方式比较恰当。

(2)A.张某独立完成图书信息的录入,王某抽查B.张某独立完成图书信息的录入,王某逐条核对C.张某和王某各录一半图书信息,再交叉逐条核对D.张某和王某分工协作,分别录入图书信息的不同字段,再核对并合并在—起【答案】C【解析】在Excel中,假设单元格A1、A2、A3和A4的值分别为23、45、36、18,单元格B1、B2、B3、B4的值分别为29.、38、25、21,在单元格C1中输入“:-SUM(MAX(A1:A4),MIN(B1: B4))”(输入内容不含引号)并按Enter后,C1单元格显示的内容为(3)。

2016年下半年软件水平考试(高级)信息系统项目管理师下午(案例

2016年下半年软件水平考试(高级)信息系统项目管理师下午(案例

2016年下半年软件水平考试(高级)信息系统项目管理师下午(案例分析)真题试卷(题后含答案及解析)题型有:1. 试题一 2. 试题二 3. 试题三试题一(25分)阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。

[说明]已知某信息工程由A、B、C、D、E、F、G、H八个活动构成。

项目的活动历时、活动所需人数、费用及活动逻辑关系如下表所示。

1.[问题1]请给出该项目的关键路径和工期。

正确答案:关键路径为ACEH,工期为26天。

2.[问题2]第14天晚的监控数据显示活动E、G均完成了一半,F尚未开始,项目实际成本支出为12000元。

(1)请计算此时项目的计划值(PV)和挣值(EV)。

(2)请判断此时项目的成本偏差(CV)和进度偏差(SV),以及成本和进度执行情况。

正确答案:(1)PV=21600元,EV=20900元。

(2)CV=EV-AC=20900-12000=8900元,大于0,成本节约SV=EV-PV=20900-21600=-700元,小于0,进度滞后3.[问题3]若后续不作调整,项目工期是否有影响?为什么?正确答案:没有影响。

原因:G虽然拖延了1天,但G有4天的自由时差可以利用;F虽然滞后了3天,但F有3天的自由时差可以利用。

4.[问题4](1)请给出总预算(BAC)、完工尚需估算(ETC)和完工估算(EAC)的值。

(2)请预测是否会超出总预算(BAC)?完工偏差(V AC)是多少?正确答案:(1)BAC=31900元ETC=BAC-EV=31900-20900=11000元EAC=AC+ETC=12000+11000=23000元(2)不会超出总预算。

V AC=BAC-EAC=31900-23000=8900元,大于0,故不会超出总预算。

解析:本题目的核心为进度成本综合性计算题,知识点涉及网络图技术、关键路径识别、工期计算、进度与成本监控、挣值分析计算、预测技术应用等。

网络图技术中双代号网络图非常利于识别关键路径、工期、项目监控,自由时差的判断与利用,以及挣值分析的计算。

2016年软考程序员试题及答案解析

2016年软考程序员试题及答案解析

2016年软考程序员试题及答案解析第一篇:2016年软考程序员试题及答案解析一、选题题1.二进制语言是属于()A.面向机器语言 B.面向问题语言 C.面向过程语言 D.面向汇编语言【解析】人们研制了许许多多计算机程序设计语言,其中二进制语言直接来自计算机的指令系统,与具体计算机紧密相关,所以是一种面向机器语言。

面向问题语言是为了易于描述和求解某类特定领域的问题而专门设计的一种非过程语言。

面向过程语言是一种能方便描述算法过程的计算机程序设计语言。

有汇编语言,但没有面向汇编语言。

汇编语言也是一种面向机器的语言,与机器语言比较,汇编语言用有助于记忆的符号来代表二进制代码。

所以解答是A。

【答案】A 2.下列语言中不属于面向过程的语言是()A.高级语言 B.低级语言 C.C语言 D.PASCAL语言【解析】C语言和PASCAL等程序设计语言都是高级语言,它们用于描述复杂加工的处理过程,所以也称它们是面向过程语言。

低级语言是指机器语言和汇编语言,低级语言是面向机器的语言,而不是面向问题的语言。

所以解答是B。

【答案】B 3.下列字符中属于键盘符号的是()A.B.n C.t D.b 【解析】键盘符号是指键盘上有标记,并能在显示器上直接以其标记字样显示的字符。

有许多键盘上有标记的符号,它们不是用于直接显示的,键入这种字符用于表示特定的意义,如常用的回车符。

为了能让C程序标记这种符号,程序采用转义字符的方式书写这种字符。

如'n'、't'、'b'都不是键盘字符,在C语言中,它们都得用转义字符来表达。

只有字符才是键盘字符。

所以解答是A。

但在C6.下列字符列中,能作为单个标识符是()l A.?a B.a=2 C.a.3D.a___3 【解析】在C语言中,规定标识符是这样一种字符序列,由英文字母或下线字符开始,后接任1个英文字母、下线字符和数字符组成。

所以问题所列的字符列只有a_3是标识符,其余都l是标识符,一个是由字符’?’开头、一个中间有字符’=’,另一个有字符’.’。

2016软考试题及答案

2016软考试题及答案

2016软考试题及答案一、单选题(每题1分,共10分)1. 以下哪个选项不是软件测试的类型?A. 黑盒测试B. 白盒测试C. 灰盒测试D. 灰度测试答案:D2. 在软件开发过程中,需求分析阶段的主要任务是什么?A. 编写代码B. 设计数据库C. 确定软件需求D. 进行系统测试答案:C3. 敏捷开发方法的核心思想是什么?A. 强调文档B. 强调计划C. 强调团队合作D. 强调客户反馈答案:D4. 以下哪个不是面向对象编程的特性?A. 封装B. 继承C. 多态D. 过程化答案:D5. 在数据库设计中,为了减少数据冗余,通常采用什么策略?A. 数据分割B. 数据复制C. 数据规范化D. 数据合并答案:C6. 以下哪个不是操作系统的功能?A. 文件管理B. 设备管理C. 进程管理D. 网络管理答案:D7. 在软件工程中,模块化设计的主要目的是?A. 减少代码量B. 提高代码可读性C. 提高代码复用性D. 减少开发时间答案:C8. 以下哪个选项是UML(统一建模语言)的图?A. 数据流图B. 流程图C. 思维导图D. 甘特图答案:A9. 在软件开发过程中,哪个阶段是进行代码编写的?A. 需求分析B. 系统设计C. 编码实现D. 系统测试答案:C10. 以下哪个不是软件工程的基本原则?A. 模块化B. 可维护性C. 可扩展性D. 单线程答案:D二、多选题(每题2分,共10分)1. 以下哪些是软件测试的目的?A. 发现软件缺陷B. 验证软件功能C. 优化软件性能D. 减少开发成本答案:A、B、C2. 在面向对象编程中,以下哪些是类的基本组成?A. 属性B. 方法C. 接口D. 过程答案:A、B3. 以下哪些是软件开发过程中的文档?A. 需求规格说明书B. 项目计划书C. 用户手册D. 测试报告答案:A、B、C、D4. 在数据库设计中,以下哪些是关系型数据库的操作?A. 插入B. 删除C. 更新D. 查询答案:A、B、C、D5. 以下哪些是软件工程中的风险管理策略?A. 风险识别B. 风险评估C. 风险缓解D. 风险转移答案:A、B、C、D三、判断题(每题1分,共5分)1. 软件工程的目标是生产具有高质量软件的高效过程。

计算机水平考试中级软件设计师2016年下半年下午真题

计算机水平考试中级软件设计师2016年下半年下午真题(总分:90.00,做题时间:90分钟)一、下午试题(总题数:6,分数:90.00)试题一阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。

【说明】某证券交易所为了方便提供证券交易服务,欲开发一证券交易平台,该平台的主要功能如下:(1)开户。

根据客户服务助理提交的开户信息,进行开户,并将客户信息存入客户记录中,账户信息(余额等)存入账户记录中;(2)存款。

客户可以向其账户中存款,根据存款金额修改账户余额;(3)取款。

客户可以从其账户中取款,根据取款金额修改账户余额;(4)证券交易。

客户和经纪人均可以进行证券交易(客户通过在线方式,经纪人通过电话),将交易信息存入交易记录中;(5)检查交易。

平台从交易记录中读取交易信息,将交易明细返回给客户。

现采用结构化方法对该证券交易平台进行分析与设计,获得如图1-1所示的上下文数据流图和图1-2所示的0层数据流图。

(分数:15.00)(1).问题:1.1 (3分)使用说明中的词语,给出图1-1中的实体E1-E3的名称。

(分数:3.75)__________________________________________________________________________________________ 正确答案:(E1:客户服务助理,E2:客户,E3:经纪人。

)解析:本题要求识别E1-E3具体为哪个外部实体,通读试题说明,可以了解到适合充当外部实体的包括:客户、客户服务助理、经记人。

具体的对应关系,可以通过将顶层图与题目说明进行匹配得知。

如:从图中可看出E1会向交易平台发出数据流开户信息;;而从试题说明根据客户服务助理提交的开户信息,进行开户,并将客户信息存入客户记录中,账户信息存入账户记录中可以看出,E1对应是客户服务助理。

E2、E3同理可得。

(2).问题:1.2 (3分)使用说明中的词语,给出图1-2中的数据存储D1-D3的名称。

2016下半年软件评测师考试真题及答案-下午卷

2016下半年软件评测师考试真题及答案-下午卷试题一阅读下列C程序,回答问题1至问题3,将解答填入答题纸的对应栏内。

【C程序】int count(int x,int z){inty=0;while(x>0){ //lif(x==1) //2y=7; //3else{ //4y=x+z+4;if(y=7||y=21) //5,6x=1; //7}x--; //8}return y; //9}【问题1】(3分)请针对上述C程序给出满足100%DC(判定覆盖)所需的逻辑条件。

【问题2】(7分)请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。

【问题3】(5分)请给出问题2中控制流图的线性无关路径。

答案:【问题1】x>0;x<=0x==1;x!=1y==7或者y==21;y!=7且y!=21【问题2】V(g)=5【问题3】1:1,92:1,2,3,8,1,93:1,2,4,5,7,8,1,94:1,2,4,5,6,7,8,1,95:1,2,4,5,6,8,1,9解析:【问题1】解析:本题中的判定有x>0;x==1;y=7||y=21;三个判定点,所以要符合100%判定覆盖的要求,就需要使得每个判定结果的真假值都出现1次,即:x>0;x<=0;x==1;x!=1;y==7或者y==21;y!=7且y!=21【问题2】解析:控制流图是描述程序控制流的一种图示方法。

其基本符号有圆圈和箭线:圆圈为控制流图中的一个结点,表示一个或多个无分支的语句;带箭头的线段称为边或连接,表示控制流。

基本结构如下所示:控制流程图的环路复杂性 V(G)等于:(1)控制流程图中的区域个数。

(2)边数-结点数+2。

(3)判定数+1。

V(g)=5【问题3】线性无关路径是指包括一组以前没有处理的语句或条件的一条路径。

从控制流图来看,一条线性无关路径是至少包含有一条在其他线性无关路径中从未有过的边的路径:1:1,92:1,2,3,8,1,93:1,2,4,5,7,8,1,9 4:1,2,4,5,6,7,8,1,9 5:1,2,4,5,6,8,1,9试题二阅读下列说明,回答问题1和问题2,将解答填入答题纸的对应栏内。

2016年软件考试下午真题(试题及参考答案)

2016年软件考试下午真题(试题及参考答案)2016年下半年软件设计师考试下午真题(参考答案)试题部分1.阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。

【说明】某证券交易所为了方便提供证券交易服务,欲开发一证券交易平台,该平台的主要功能如下:(1)开户。

根据客户服务助理提交的开户信息,进行开户,并将客户信息存入客户记录中,账户信息(余额等)存入账户记录中;(2)存款。

客户可以向其账户中存款,根据存款金额修改账户余额;(3)取款。

客户可以从其账户中取款,根据取款金额修改账户余额;(4)证券交易。

客户和经纪人均可以进行证券交易(客户通过在线方式,经纪人通过电话),将交易信息存入交易记录中;(5)检查交易。

平台从交易记录中读取交易信息,将交易明细返回给客户。

现采用结构化方法对该证券交易平台进行分析与设计,获得如图1-1所示的上下文数据流图和图1-2所示的0层数据流图。

【问题1】(3分)使用说明中的词语,给出图1-1中的实体E1-E3的名称。

【问题2】(3分)使用说明中的词语,给出图1-2中的数据存储D1-D3的名称。

【问题3】(4分)根据说明和图中的术语,补充图1-2中缺失的数据流及其起点和终点。

【问题4】(5分)实际的证券交易通常是在证券交易中心完成的,因此,该平台的“证券交易”功能需将交易信息传递给证券交易中心。

针对这个功能需求,需要对图1-1和图1-2进行哪些修改,请用200字以内的文字加以说明。

2.阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】某宾馆为了有效地管理客房资源,满足不同客户需求,拟构建一套宾馆信息管理系统,以方便宾馆管理及客房预订等业务活动。

【需求分析结果】该系统的部分功能及初步需求分析的结果如下:(1)宾馆有多个部门,部门信息包括部门号、部门名称、电话、经理。

每个部门可以有多名员工,每名员工只属于一个部门;每个部门只有一名经理,负责管理本部门。

2016年下半年软件设计师考试下午真题(案例分析题)

2016年下半年软件设计师考试下午真题(案例分析题)案例分析题试题一(共15分)阅读下列说明,回答问题l至问题4,将解答填入答题纸的对应栏内。

【说明】某证券交易所为了方便提供证券交易服务,欲开发一证券交易平台,该平台的主要功能如下:(1)开户。

根据客户服务助理提交的开户信息,进行开户,并将客户信息存入客户记录中,账户信息(余额等)存入账户记录中;(2)存款。

客户可以向其账户中存款,根据存款金额修改账户余额;(3)取款。

客户可以从其账户中取款,根据取款金额修改账户余额;(4)证券交易。

客户和经纪人均可以进行证券交易(客户通过在线方式,经纪人通过电话),将交易信息存入交易记录中;(5)检查交易。

平台从交易记录中读取交易信息,将交易明细返回给客户。

现采用结构化方法对该证券交易平台进行分析与设计,获得如图1-1所示的上下文数一据流图和图1-2所示的O层数据流图。

【问题1](3分)使用说明中的词语,给出图1-1中的实体E1-E3的名称。

【问题2】(3分)使用说明中的词语,给出图1-2中的数据存储D1-D3的名称。

【问题3】(4分)根据说明和图中的术语,补充图1-2中缺失的数据流及其起点和终点。

【问题4】(5分)实际的证券交易通常是在证券交易中心完成的,因此,该平台的“证券交易”功能需将交易信息传递给证券交易中心。

针对这个功能需求,需要对图1-1和图1-2进行哪些修改,请用200字以内的文字加以说明。

试题二(共15分)阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】某宾馆为了有效地管理客房资源,满足不同客户需求,拟构建一套宾馆信息管理系统,以方便宾馆管理及客房预订等业务活动。

【需求分析结果】该系统的部分功能及初步需求分析的结果如下:(1)宾馆有多个部门,部门信息包括部门号、部门名称、电话、经理。

每个部门可以有多名员工,每名员工只属于一个部门;每个部门只有一名经理,负责管理本部门。

(2)员工信息包括员工号、姓名、岗位、电话、工资,其中,员工号唯一标识员工关系中的一个元组,岗位有经理、业务员。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2016年下半年下午程序员考试试题-案例分析-答案与解析试题一(共15分)阅读以下说明和流程图,填补流程图中的空缺,将解答填入答题纸的对应栏内。

【说明】设有整数数组A[1:N](N>1),其元素有正有负。

下面的流程图在该数组中寻找连续排列的若干个元素,使其和达到最大值,并输出其起始下标K、元素个数L以及最大的和值M。

例如,若数组元素依次为3,-6,2,4,-2,3,-1,则输出K=3,L=4,M=7。

该流程图中考察了A[1:N]中所有从下标i到下标j(j≥i)的各元素之和S,并动态地记录其最大值M。

【流程图】注:循环开始框内应给出循环控制变量的初值和终值,默认递增值为1,格式为:循环控制变量=初值,终值【参考答案】1、i,N2、S+A[j]3、S4、j-i+15、S【答案解析】要想在数组中寻找连续排列的若干个元素,使其和达到最大值,并输出其起始下标K、元素个数L以及最大的和值M。

那么,会将数组从第一个元素出发,依次比较A[1],A[1] +A[2],A[1] +A[2]+A[3],……,A[1] +A[2]+…+A[N],然后再比较A[2], A[2] +A[3],A[2] +A[3]+A[4],……,A[2] +A[3]+…+A[N],然后再比较A[3] +A[4],A[3] +A[4]+A[5],……,A[3] +A[4]+…+A[N],直到最后一个元素A[N].按照这种逻辑,要使用两个循环,且要保存之前求和项。

一个是i循环,从1到N递增,另一个是j循环,j表示的是求和项的最大下标值,那么j从i开始,且要小于N。

S+A[j]—>S不断保留A[i]+ A[i+1]+…A[j]的值,直到j循环结束。

并将S的值与之前保存的M的值进行比较,如果S>M,则将S的值赋给M,并求出L值,在这里,i是最小下标值,j是最大下标值,那么L=j-i+1。

如果S<M,则跳出循环。

试题二(共15分)阅读以下代码,回答问题:1至问题3 ,将解答填入答题纸的对应栏内。

【代码1】#include<stdio.h >void swap(int x, int y){int tmp =x; x= y; y= tmp;}int maim(){int a= 3, b= 7;printf("a1= %d b1=%d\n",a,b);Swap( a, b);Printf("a2 = %d b2=%d\n”,a,b);return 0;}china_nejcer 【代码2】#include<stdio.h>#define SPACE ¨ //空格字符Int main(){char str[128] =”Nothing is impossible! “;int i,num =0,wordMark=0;for(i=0;str[i];i++)If(str[i]=SPACE)WordMark=0;elseIf(wordMark=0){wordMark=1;Mun++;}Printf(“%d/n”,num)retun 0;}【代码3】#include<stdio.h>#define SPACE “//空格字符int countStrs(char *);int main(){char str[128] = " Nothing is impossible! ";Printf(‘%d/n,(1)(str))retum 0;}int countStrs(char *p){int num=0, wordMark= 0;for(;(2);p++) {If((3)=SPACE)wordMark= 0;elseif( !wordMark ) {wordMark = 1;++num}}return(4)}【问题1】(4分)写出代码1运行后的输出结果。

【参考答案】a1=3b1=7a2=3b2=7【问题2】(3分)写出代码2运行后的输出结果。

【参考答案】3【问题3】(8分)代码3的功能与代码2完全相同,请补充3中的空缺,将解答写入答题纸的对应栏内。

【参考答案】1、CountStr2、*p3、*p4、num【答案解析】此题考查C语言程序设计能力,要求掌握形参与实参,值传递与引用传递的区别1、本题考查函数中值传递与引用传递,在实参与形参传递过程中可以是值传递,值传递时,形参的改变不会影响实参,引用传递是地址的传递,实参将地址传递给形参时,形参的改变会影响实参的改变。

在本题中的第一次输出a,b变量的值时,结果是直接输出,所以a1=3,b1=7,而在调用swap函数时,实参a,b传递的是值传递,在函数swap(int x,int y)中形参x,y也是值类型,在函数swap内部是交换两个变量的值,交换完毕后x=y,y=x,但这个改变不会影响实参a,b,所以第二次输出a2,b2时,a,b的值不变还是3,7,所以输出结果是:a1=3 b1=7 a2=3 b2=72、本题是计算出字符数组中有多少个单词,单词之间是以空格’‘为标识,即遇到空格时变量wordMark=0,程序中再判断wordMark是否等于0,若等于0,则变量workMark 置为1,同时变量num是用于统计单词个数,此时num加1,最后输出num的值就是统计的单词个数。

程序运行结果是3。

3、本题是将上面的功能通过调用函数来完成的。

第1处就应该直接填写调用函数的函数名,即countStrs,调用者将数组名作为实参,数组名代表的是数组的首地址,所以这里是引用传递,函数countStrs的形参p是一个指针变量,它接收实参str数组的首地址,这样实参与形参都是指针变量。

在函数countStrs内部,定义两个局部变量num用于统计个数,WordMark用于标识空格,在for循环中,第2处应该设置终止条件,即*p,表示指针指向的内容不为空,第3处是判断当前的指向元素是否等于SPACE,即当前的*p是否是空格’‘,如果是则将标识变量WordMark等于0,否则变量num自增,最后函数应该返回num的值,所以4处应该填num。

答案是:1) countStrs 2) p[i]!='\0'或者是p[i] 3) p[i] 4) num试题三(共15分)阅读以下说明和代码,填补代码中的空缺,将解答填入答题纸的对应栏内。

【说明】下面的程序利用快速排序中划分的思想在整数序列中找出第k小的元素(即将元素从小到大排序后,取第k个元素)。

对一个整数序列进行快速排序的方法是:在待排序的整数序列中取第一个数作为基准值,然后根据基准值进行划分,从而将待排序的序列划分为不大于基准值者(称为左子序列)和大于基准值者(称为右子序列),然后再对左子序列和右子序列分别进行快速排序,最终得到非递减的有序序列。

例如,整数序列“19, 12, 30, 11,7,53, 78, 25"的第3小元素为12。

整数序列“19, 12,7,30, 11, 11,7,53. 78, 25, 7"的第3小元素为7。

函数partition(int a[], int low,int high)以a[low]的值为基准,对a[low]、a[low+l]、…、a[high]进行划分,最后将该基准值放入a[i] (low≤i≤high),并使得a[low]、a[low+l]、,..、A[i-1]都小于或等于a[i],而a[i+l]、a[i+2]、..、a[high]都大于a[i]。

函教findkthElem(int a[],int startIdx,int endIdx,inr k)在a[startIdx]、a[startIdx+1]、...、a[endIdx]中找出第k小的元素。

【代码】#include <stdio.h>#include <stdlib.h>Int partition(int a [],int low, int high){//对 a[low..high]进行划分,使得a[low..i]中的元素都不大于a[i+1..high]中的元素。

int pivot=a[low]; //pivot表示基准元素Int i=low,j=high;while((1)){While(i<j&&a[j]>pivot)--j;a[i]=a[j]While(i<j&&a[i]>pivot)++i;a[j]=a[i]}(2); //基准元素定位return i;}Int findkthElem(int a[],int startIdx,int endIdx, int k){//整数序列存储在a[startldx..endldx]中,查找并返回第k小的元素。

if (startldx<0 ||endIdx<0 || startIdx>endIdx || k<1 ||k-l>endIdx ||k-1<startIdx)Return-1; //参数错误if(startIdx<endldx){int loc=partition(a, startIdx, endldx);∥进行划分,确定基准元素的位置if (loc==k-1) ∥找到第k小的元素return (3);if(k-l <loc) //继续在基准元素之前查找return findkthElem(a,(4),k);else //继续在基准元素之后查找return findkthElem(a,(5),k);}return a[startIdx];}int main(){int i, k;int n;int a[] = {19, 12, 7, 30, 11, 11, 7, 53, 78, 25, 7};n= sizeof(a)/sizeof(int) //计算序列中的元素个数for (k=1;k<n+1;k++){for(i=0;i<n;i++){printf(“%d/t”,a[i]);}printf(“\n”);printf(“elem %d=%d\n,k,findkthElem(a,0,n-1,k));//输出序列中第k小的元素}return 0;}【参考答案】1、!i=j或者i<j2、a[i]=pivot3、a[loc]4、startIdx,loc-15、loc+1,endIdx【答案解析】此题考查排序算法的应用,快速排序的思想是:通过一趟排序将待排序的记录划分为独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后利用递归再分别对这两部分记录继续进行排序,以达到整个序列有序。

相关文档
最新文档