阅读以下说明和代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 下面的程序利用快

题目

阅读以下说明和代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 下面的程序利用快速排序中划分的思想在整数序列中找出第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+1]、…、 a[high]进行划分,最后将该基准值放入a[i] (low≤i≤high),并使得a[low]、a[low+1]、,..、 A[i-1]都小于或等于a[i],而a[i+1]、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-1>endIdx ||k-1<startIdx) Return-1; //参数错误 if(startIdx<endldx){ int loc=partition(a, startIdx, endldx); ∥进行划分,确定基准元素的位置 if (loc==k-1) ∥找到第k小的元素 return (3) ; if(k-1 <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<j
2、a[i]=pivot
3、a[loc]
4、startIdx,loc-1  
5、loc+1,endIdx
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

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

[说明]

如图10-4所示是电子商务系统平台结构示意图。

请把空缺的地方填写完整。


正确答案:(1)接口中间层。 (2)Web服务器。 (3)数据库服务器。
(1)接口中间层。 (2)Web服务器。 (3)数据库服务器。

第2题:

阅读以下说明,回答问题,将解答填入对应的解答栏内。

. [说明] 请完成流程图以描述在数据A(1)至A(10)中求最大数和次大数的程序的算法。并将此改成PAD图。该算法的流程图如下图:


正确答案:(1)max2 =A(1) mex1 =A(2) (2)i< =10 (3)max1 =A(i)1 max2 = max1 (4)i=i+1
(1)max2 =A(1) mex1 =A(2) (2)i< =10 (3)max1 =A(i)1 max2 = max1 (4)i=i+1 解析:本题的算法思想是:先输入A(1)到A(10)的值,然后判断前两个数的大小。用变量max1存储最大数,用变量max2.存储次大数。然后逐个读入数据,分别和max1,max2比较,保证最大的存入max1,次大的存入max2。

第3题:

阅读以下说明,回答问题1和问题2,将解答填入对应栏内。

【说明】

在信息系统工程监理中,由于各方面的原因,对于监理单位而言,也是存在风险的。

监理工作的风险有哪些?


正确答案:行为责任风险工作技能风险技术资源风险管理风险。
行为责任风险,工作技能风险,技术资源风险,管理风险。

第4题:

阅读下列说明、c++代码和运行结果,填补代码中的空缺(1)~(6),将解答填入

答题纸的对应栏内。

【说明】

很多依托扑克牌进行的游戏都要先洗牌。下面的c++程序运行时先生成一副扑克牌,

洗牌后再按顺序打印每张牌的点数和花色。

【c++代码】

inciude <iostream>

4Finclude <stdlib. h>

include <ctime>

inciude <aigorithm>

include <string>

Using namespace std

Const string Rank[13]={”A”,”2”,”3”,”4“,“5”,”6,”’“7”8“,9”,”10,”J”,

”Q”,”K”}j//扑克牌点数


正确答案:
分析本题考查c-++语言程序设计能力,涉及类、对象、函数的定义和相关操作。要求考生根据给出的案例和代码说明,认真阅读,理清程序思路,然后完成题目。本题目中涉及到扑克牌、牌桌等类以及洗牌和按点数排序等操作。根据说明进行设计。定义了两个数组,Rank表示扑克牌点数,Suits表示扑克牌花色,定义时进行初始化,而且值不再变化,故用const修饰。Card类有两个属性,rank和suit,在使用构造函数Card(intrankintsuit)新建一个Card的对象时,所传入的参数指定rank和suit这两个属性值。因为参数名称和属性名称相同,所以用this->前缀区分出当前对象。在类Card中包含方法getRank()和getSuit(),分别返回当前对象的rank和suit属性值。printCard()函数打印扑克牌点数和花色。DeckOfCards类包含Card类型元素的数组deck[52],表示牌桌上一副牌(52张)。构造函数中对牌桌进行初始化并进行洗牌。先用Card对象填充牌桌,即创建52个Card对象并加入deck数组。然后洗牌,即将数组中的Card对象根据花色和点数随机排列。printCards0函数将所有Card对象打印出来。主控逻辑代码在main函数中实现。在main()函数中,先初始化DeckOfcards类的对象指针d,即生成一个牌桌:Deckofcards*d=newdeckofcards()并发牌,即调用d的printCards()函数,实现打印一副扑克牌中每张牌的点数和花色。在printCards()函数体内部,为每个数组元素调用当前对象的pnntCard()一张牌。Main()函数中使用完数组对象之后,需要用delete操作进行释放对象,对d对象进行删除,即deleted。因此,空(1)和(2)需要表示当前对象的this->;空(3)需要牌桌上纸牌对象,即数组元素deck[i]:空(4)也需要纸牌对象调用printCard(),即数组元素deck[i].:空(5)处为创建DeckOfCards类的对象指针d的newDeckofcards0;空(6)需要用对象指针d调用打印所有纸牌的pnntCards()函数,即d->printCards0.试题五参考答案(1)this->(2)this->(3)deck[i]或*(deck+i)或等价表示(4)deck[i]或*(deck+i)或等价表示(5)newDeckOfCards()(6)d->printCards0或等价表示

第5题:

阅读以下说明和 C 函数,填补函数代码中的空缺,将解答填入答题纸的对应栏内。 【说明 1】 函数 f(double eps) 的功能是:利用公式计算并返回 π 的近似值。【说明 2】 函数fun(char *str)的功能是:自左至右顺序取出非空字符串 str中的数字字符,形成一个十进制整数(最多 8 位)。例如,若 str中的字符串为 "iyt?67kp f3g8d5.j4ia2e3p12", 则函数返回值为 67385423。


正确答案:(1)n+2
(2)-s 或-1*s
(3) *p!= ' \ 0'或等价形式
(4) num*10 或等价形式
(5) p++或等价形式

第6题:

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

[说明]

电子商务系统的外部社会环境如图10-5所示。

请把空缺的地方填写完整。


正确答案:(1)原料供应商。 (2)企业电子商务系统。 (3)消费者。
(1)原料供应商。 (2)企业电子商务系统。 (3)消费者。

第7题:

阅读以下说明,回答问题,将解答填入答题纸的对应栏内。

[说明]

某电子商务网站采用ASP+SQL Server开发的电子商务网站系统,提供了商品查询、网上购物车、订单管理、后台商品管理和支付等功能。其后台修改商品页面如图6-12所示。

通常,客户端浏览器不能执行(1)。

(1) A.HTML代码 B.VBScript代码 C.JavaScript代码 D.ASP内置对象代码


正确答案:D或ASP内置对象代码
D,或ASP内置对象代码

第8题:

阅读下面的说明,回答问题1~问题4,将解答填入答题纸对应的解答栏内。

[说明]

阅读以下说明,回答问题1~问题4,将解答填入答题纸对应的解答栏内。

windows Server 2003是一个多任务多用户的操作系统,能够以集中或分布的方式实现各种应用服务器角色,是目前应用比较广的操作系统之一。

Windows内置许多应用服务功能,将下表中(1)~(5)处空缺的服务器名称填写在答题纸对应的解答栏内。

(1)


正确答案:域名(DNS)服务器
域名(DNS)服务器

第9题:

阅读以下关于软件测试的说明,回答司题l至问题3,将解答填入答题纸的对应

栏内。

【说明】

使用在汽车、飞机中的嵌入式软件, 日于直接影响人的生命及财产安全,测试要求

更为严格。语句覆盖、判定覆盖、条件覆盖和MC/DC覆盖是通常对这类软件的要求。

以下是一段C语言代码,请仔细阅读并回答相关问题:

【问题1】(6分)

请根据测试要求,简要说明语句覆盖、判定覆盖、条件覆盖和MC/DC覆盖的含义。

将答案填写在答题纸的对应栏中。

【问题2】(5分)

画出以上代码的流程图,将答案填写在答题纸的对应栏中。

【问题3】(4分)

请根据【说明】中的C语言代码,计算满足MC/DC覆盖要求的用例数量及条件取

值范围,将答案填写在答题纸的对应栏中.


正确答案:
试题三分析
本题考查嵌入式软件测试的基本知识.
语句覆盖要求设计足够多的测试用例,运行被测程序,使得程序中每条语句至少被
执行一次。定覆盖(分支覆盖)要求设计足够多的测试用例,运行被测程序,使得程序
中的每个判断的“真”和“假”都至少被执行一次。条件覆盖要求设计足够多的测试用
例,运行被测程序,使得判定中的每个条件获得各种可能的结果,即每个条件至少有一
次为真值,有一次为假值。MC/DC覆盖要求每个条件的取值都有覆盖,每个判定值都有
覆盖且每个条件都能独立影响判定结果,各覆盖率的含义如表2.5所示。

【问题2]
本问题考查程序流程图的画法。注意开始、结束的符号。
根据源代码,程序流程图如下。

【问题3]
本问题考查MC/DC覆盖率判定的综合运用。
MC/DC与代码中的逻辑运算有关。本题代码中的逻辑运算为x>0&&y>0。根据
MC/DC的定义,MC/DC覆盖要求每个条件的取值都有覆盖,每个判定值都有覆盖且每
个条件都能独立影响判定结果。对于a&&b这样的逻辑运算,真值表如下。

对测试用例1和测试用例2,条件a不变,因为条件b的不同而导致结果的不同,
因此条件b独立影响判定的结果。对测试用例2和测试用例3,因为条件b不变,条件a
的不同而导致结果的不同,因此条件a独立影响判定的结果。综合以上,对逻辑运算a&&
b应产生三个测试用例,包括:(True,False)、(True,True)、(False,True)。
所以本题用例数量:3个;条件取值范围:(x>0andy<=0)、(x<=0andy>0)及(x>0
andy>0)。
参考答案

【问题2]
【问题3]
用例数量:3个;
条件取值范围:
(x>0andy<=0)、(x<=0andy>0)及(x>0andy>0)

第10题:

阅读以下说明和Java程序,填补代码中的空缺(1)~(6),将解答填入答题纸的

对应栏内。

【说明】

很多依托扑克牌进行的游戏都要先洗牌。下面的Java代码运行时先生成一副扑克

牌,洗牌后再按顺序打印每张牌的点数和花色。

【Java代码】


正确答案:
本题考查Java语言程序设计的能力,涉及类、对象、方法的定义和相关操作。要求考生根据给出的案例和代码说明,认真阅读,理清程序思路,然后完成题目。先考查题目说明。本题目中涉及到扑克牌、牌桌、玩家等类以及洗牌和按点数排序等操作。根据说明进行设计。Card类内定义了两个static枚举类型,Face枚举扑克牌点数,Suit枚举扑克牌花色。Card类有两个枚举类型的属性,face和suit,而且值不再变化,故用final修饰。在使用构造方法publicCard(Faceface,Suitsuit)新建一个Car:d的对象时,所传入的参数指定face和suit这两个属性值。因为参数名称和属性名称相同,所以用this前缀区分出当前对象。在类Card中包含方法getFace()和getSuit(),分别返回当前对象的face和suit属性值。getCard()方法返回string来表示一张牌,包括扑克牌点数和花色。牌桌类Deckofcands包含持有Card类型元素的List类型对象的声明List,用以存储牌。List是Java中的一种集合接口,是Collection的子接口。构造方法中用Card对象填充牌桌并进行洗牌。先用Card对象填充牌桌,即创建52个Card对象加入deck数组,表示牌桌上一副牌(52张)。然后洗牌,即将数组中的Card对象根据花色和点数随机排列,使用集合工具类Collechons中的shuffle方法,对以List类型表示的deck数组进行随机排列。Collectians是Java集合框架中两个主要工具类之一,用以进行集合有关的操作。printCards()方法将所有Card对象打印出来,按4列显示52张牌。每张拍的打印用list.get(i)获得list表示的deck中的第i个Card对象,然后进一步调用此对象的getCard()方法,得到String表示的当前一张牌。玩家类中包括启动发牌洗牌等操作,主入口方法main中实现创建牌桌对象,并调用按4列显示52张牌。在main()中,先初始化Deckofcards类的对象player,即生成一个牌桌:Deckofcardsplayer=newDeckofcards()并发牌,即调用player的printCards()方法,实现按4列显示52张牌打印一副扑克牌中每张牌的点数和花色。在pnntCards()方法体内部,用list调用每个数组元素,井为每个数组元素调用getCard()返回当前对象所表示一张牌的花色和点数。用格式化方法进行打印,即:因此,主(1)和(2)需要表示当前对象的this.;空(3)需要牌桌上纸牌对象,并将数组元素下标加1,即数组元素deck[count++];空(4)也需要用list对象获得纸牌对象的字符串表示,即list后的get(1)getCard();空(5)处为创建DeckOf℃ards类的对象指针player的newDeckOfCards();空(6)需要用对象player调用打印所有纸牌的printCards()函数,即player.。试题六参考答案(l)this(2)this.(3)deck[count++]或等价表示(4)get(i)getCard()(5)newDeckOfCards()(6)player.

更多相关问题