重要提示: 请勿将账号共享给其他人使用,违者账号将被封禁!
查看《购买须知》>>>
当前位置: 首页 > 计算机类考试 > 软考中级
网友您好, 请在下方输入框内输入要搜索的题目:
搜题

题目

[主观题]

阅读下列函数说明和C代码及流程图,将应填入(n)处的字句写在对应栏内 [说明] 分糖果问题是一个经

阅读下列函数说明和C代码及流程图,将应填入(n)处的字句写在对应栏内

[说明]

分糖果问题是一个经典问题。问题描述如下:幼儿国有n(<20)个孩子围成一圈分糖果,老师先随机地发给每个孩子若干颗糖果,然后按以下规则调整:每个孩子同时将自己手中的糖果分一半给坐在他右边的小朋友;如共有8个孩子,则第1个将原来的一半分给第2个,第2个将原有的一半分给第3个……第8个将原来的一半分给第1个,这样的平分动作同时进行;若平分前,某个孩子手中的糖果是奇数颗,则必须从老师那里要一颗,使他的糖果变成偶数。小孩人数和每个小孩的初始数由键盘输入。经过多少次调整,使每个孩子手中的糖果一样多,调整结束时每个孩子有糖果多少颗,在调整过程中老师又新增发了多少颗糖果。

[C程序]

include <stdlib.h>

include <stdio.h>

bool allequall (int child[], int n ) //判断各小孩子手中的糖果是否相等

{

for (int i=0; i<n-1; i++)

if (child[i]!=child[i+1] )

return false; //不相等返回假

return true; //相等返回真

}

const int MaxNum=20; //定义最大人数

//主函数

void main ()

{

int Num=0;

int *child;

int *child1;

//构造两个相应大小的数组child代表小朋友现有的粮果数child1代表小朋友原来有的糖果数

int Tnum=0;

int i=0;

do{

printf ("Pelase input the number of the children: ").,

scanf ("%d",&Num );

if (Num>MaxNum )

printf ("Error Number!!" );

} while (Num>MaxNum );

child=new int [Nmn];

child1=new int [Num];

for (i=0; i<Num; i++ ) //将数组赋值

{

printf ("Input NO. %d child's candy numbers: ",i+1);

scanf ("%d", &child[i] );

}

while ((1) )

{

for (i=0; i<Num; i++ )

{

if((2) )

{

(3)

Tnum++;

}

}

for (i=0; i<Num; i++ )

child1[i]=child[i]; //将child1赋值用来记忆原来小朋友的粮果数

for (i=0; i<Nam; i++ )

(4)

for (i=0; i<Num-1; i++)//用循环实现前一个小朋友粮果数加后一个小朋友粮果数的一半

{

child[i]/=2;

child[i]+=child 1 [i+1];

}

child[Num-1]/=2;

(5)

}

printf ("每个同学最后分到糖果数目是%d\n", child[1]);

printf ("老师分发出的糖果是%d\n", Tnum );

}

图12-7是一种解决问题的流程图,请根据该流程图将对应C代码(n)处补充完整。

阅读下列函数说明和C代码及流程图,将应填入(n)处的字句写在对应栏内 [说明] 分糖果问题是一个经阅

查看参考答案
更多“阅读下列函数说明和C代码及流程图,将应填入(n)处的字句写在对应栏内 [说明] 分糖果问题是一个经”相关的问题

第1题

阅读以下关于软件测试的说明,回答司题l至问题3,将解答填入答题纸的对应栏内。【说明】使用在汽车、飞

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

栏内。

【说明】

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

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

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

阅读以下关于软件测试的说明,回答司题l至问题3,将解答填入答题纸的对应栏内。【说明】使用在汽车、飞阅

【问题1】(6分)

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

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

【问题2】(5分)

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

【问题3】(4分)

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

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

点击查看答案

第2题

阅读下列说明、流程图和算法,将应填(n)处的字句写在对应栏内。 [说明] 下面的流程图(如图3所示)用N

阅读下列说明、流程图和算法,将应填(n)处的字句写在对应栏内。

[说明]

下面的流程图(如图3所示)用N - S盒图形式描述了数组A中的元素被划分的过程。其划分方法是:以数组中的第一个元素作为基准数,将小于基准数的元素向低下标端移动,而大于基准数的元素向高下标端移动。当划分结束时,基准数定位于A[i],并且数组中下标小于i的元素的值均小于基准数,下标大于i的元素的值均大于基准数。设数组A的下界为 low,上界为high,数组中的元素互不相同。例如,对数组(4,2,8,3,6),以4为基准数的划分过程如下:

阅读下列说明、流程图和算法,将应填(n)处的字句写在对应栏内。 [说明] 下面的流程图(如图3所示)

[流程图]

[算法说明]

将上述划分的思想进一步用于被划分出的数组的两部分,就可以对整个数组实现递增排序。设函数int p(int A[],int low,int hieh)实现了上述流程图的划分过程并返回基准数在数组A中的下标。递归函数void sort(int A[],int L,int H)的功能是实现数组A中元素的递增排序。

[算法]

void sort(int A[],int L,int H) {

if (L<H) {

k=p(A,L,R); //p()返回基准数在数组A中的下标

sort((4)); //小于基准敷的元素排序

sort((5)); //大于基准数的元素排序

}

}

点击查看答案

第3题

阅读以下关于某订单管理系统的技术说明、部分UML类图及C++代码,将C++程序中(1)~(5)空缺处的语句填

阅读以下关于某订单管理系统的技术说明、部分UML类图及C++代码,将C++程序中(1)~(5)空缺处的语句填写完整。

[说明]

某订单管理系统的部分UML类图如图5-15所示。

阅读以下关于某订单管理系统的技术说明、部分UML类图及C++代码,将C++程序中(1)~(5)空缺处

图5-15中,Product表示产品,ProductList表示产品目录,Order表示产品订单,Orderltem表示产品订单中的一个条目,OrderList表示订单列表,SalesSystem提供订单管理系统的操作接口。

请完善类Order的成员函数getOrderedAmount()和类SalesSystem的statistic()方法,各个类的属性及部分方法定义参见下面的C++代码。

[C++代码]

阅读以下关于某订单管理系统的技术说明、部分UML类图及C++代码,将C++程序中(1)~(5)空缺处

点击查看答案

第4题

阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。【说明】 函数QuickSort是在一维数组A[

阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。

【说明】

函数QuickSort是在一维数组A[n]上进行快速排序的递归算法。

【函数】

void QuickSort(int A[ ],int s,int t)

{ int i=s,j=t+1,temp;

int x=A[s];

do{

do i ++ ;while (1);

do j -- ;while(A[j]>x);

if(i<j){temp=A[i];(2);(3);}

}while(i<j);

A[a] =A[j];A[j] =x;

if(s<i-1) (4);

if(j+1<t) (5);

}

点击查看答案

第5题

●试题四 阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 函数Qui

●试题四

阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

函数QuickSort是在一维数组A[n]上进行快速排序的递归算法。

【函数】

void QuickSort(int A[],int s,int t)

{int i=s,j=t+1,temp;

int x=A[s];

do{

do i++;while (1) ;

do j--;while(A[j]>x);

if(i<j){temp=A[i]; (2) ; (3) ;}

}while(i<j);

A[a]=A[j];A[j]=x;

if(s<i-1) (4) ;

if(j+1<t) (5) ;

}

点击查看答案

第6题

●试题二 阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 该程序

●试题二

阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

该程序运行后,输出下面的数字金字塔

●试题二 阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 该程序●

【程序】

include<stdio.h>

main ()

{char max,next;

int i;

for(max=′1′;max<=′9′;max++)

{for(i=1;i<=20- (1) ;++i)

printf(" ");

for(next= (2) ;next<= (3) ;next++)

printf("%c",next);

for(next= (4) ;next>= (5) ;next--)

printf("%c",next);

printf("\n");

}

}

点击查看答案

第7题

阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。[说明] 函数Printprime(int UpBound)

阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。

[说明]

函数Printprime(int UpBound)的功能是输出1到UpBound以内的全体素数。

[函数2.1]

void PrintPrime(int UpBound)

printf("2," );

for(i=3; i<UpBound; i+ =2) {

int k = sqrt(i);

for(j=3; j<= k;(1)) /*检查i是否有3到k以入的奇因数*/

if((2)) break;

fi((3)) printf("%d", i);

[函数2.2说明]

递归函数invert(int a[],int k),int k)的功能是将数组a中的前k个元素逆置。

[函数2.2]

void invert(int a[ ], int k)

{ int t;

if ((4)) {

invert((5));

t=a[0];

a[0] =a[k-1];

a[k-l]=t;

}

}

点击查看答案

第8题

阅读下列函数说明和C代码,将应填入(n)外的字句写在对应栏内。 [说明] 为网球比赛的选手安排比赛日

阅读下列函数说明和C代码,将应填入(n)外的字句写在对应栏内。

[说明]

为网球比赛的选手安排比赛日程。设有n(n=2m)位选手参加网球循环赛,循环赛共进行n-1天,每位选手要与其他n-1位选手赛一场,且每位选手每天赛一场,不轮空。

设n位选手被顺序编号为1,2,…,n,比赛的日程表是一个n行n-1列的表,第i行j列的内容是第i号选手第j天的比赛对手。用分治法设计日程表,就是从其中一半选手(2m-1位)的比赛日程导出全体2m选手的比赛日程。从众所周知的只有两位选手的比赛日程出发,反复这个过程,直至为n位选手安排好比赛日程为止。

如两位选手比赛日程表如下所示:

阅读下列函数说明和C代码,将应填入(n)外的字句写在对应栏内。 [说明] 为网球比赛的选手安排比赛日

如四位选手比赛日程表如下所示:

阅读下列函数说明和C代码,将应填入(n)外的字句写在对应栏内。 [说明] 为网球比赛的选手安排比赛日

函数中使用的预定义符号如下:

define M 64

int a[M+1][M];

[函数]

voidd main(){

int twoml,twom,i,j,m,k;

printf("指定n(=2的k次幂)位选手,请输入k:\n");

scanf("%d",&k);

/*8预设两位选手的比赛日程*/

a[1][1] =2;

a[2][1] =1;

m=1;

twoml=1;

while ((1) ){

m++;

twoml+=twoml;

twom=twoml*2;/*为2^m位选手安排比赛日程*/

/*填日程表的左下角*/

for(i=twoml+1; (2) ;i++){

for(j=1; j<=twoml-1; j++){

a[i][j]=a[i-twoml][j]+twoml;

}

}

/*填日程表的右上角*/

a[1][twoml]= (3) ;/+填日程表右上角的第1列*/

for(i=2; i<=twoml; i++){

a[i][twoml]=a[i-1][twoml]+1;

}

/*填日程表右上角的其他列,参照前一列填当前列*/

for(j=twoml+1; j(twom;j++){

for(i=1; i a[i][j]= (4) ;

}

a[twoml][j]=a[1][j-1];

}

/*填日程表的右下角*/

for(j=twoml; j for(i=1;i<=twoml; i++){

a[ (5) [j]=i;

}

}

/*输出日程表*/

for(i=1; i<=twom; i++){

for(j=1;j printf("%4d",a[i][j]);

}

printf("\n");

}

printf("\n");

}

}

(1)

点击查看答案

第9题

阅读下列函数说明和C代码,填入(n)处字句,并回答相应问题。[说明] 背包问题就是有不同价值、不同重

阅读下列函数说明和C代码,填入(n)处字句,并回答相应问题。

[说明]

背包问题就是有不同价值、不同重量的物品n件,求从这n件物品中选取一部分物品的选择方案,使选中物品的总重量不超过指定的限制重量,而且选中物品的价值之和为最大。

背包问题是一个典型的NP完全难题。对该问题求解方法的研究无论是在理论上,还是在实践中都具有一定的意义。如管理中的资源分配、投资决策、装载问题等均可建模为背包问题。

常用的背包问题求解方法很多,但本题中采用了一种新的算法来求解背包问题。该算法思想为:首先要对物品进行价重比排序,然后按价重比从大到小依次装进包裹。这种方法并不能找到最佳的方案,因为有某些特殊情况存在,但只要把包中重量最大的物品取出,继续装入,直到达到limitweight,这时的物品就是limit weight的最大价值。这种算法不需要逐个进行试探,所以在数据非常大时,执行效率主要由排序的时间复杂度决定。该算法的流程图为图11-4。

仔细阅读程序说明和C程序流程图及源码,回答问题1和问题2。

[流程图11-4]

阅读下列函数说明和C代码,填入(n)处字句,并回答相应问题。[说明] 背包问题就是有不同价值、不同重

[程序说明]

struct Thing:物品结构

typedef struct Bag:背包结构类型

input ():将物品按序号依次存入数组函数

inbag ():物品按物价比入包函数

init ():初始化函数

sort ():对物品按价格重量比排序函数

outbag ():取出包中weiht最大的物品函数

print ():最佳方案输出函数

[C程序]

define N 255

struct Thing {

double weight;

double value;

double dens;

}thing[N];

typedef stmct Bag {

Thing thing [N];

double weighttmp;

double sumvalue;

}bag,best;

inbag ()

{

do{

bag.thing[i]=thing[i]

(1)

(2)

i++;

}while ((3) )

}

init ()

{

for (inti=0; i<N; i++)

{

input (thing[i].weight, thing [i].value)

thing [i].dens=thing[i].value/thing [i].weight;

};

}

main ()

{

init ();

sort ();

inbag ();

do {

best=bag; //把包中物品放入暂存数组

outbag (); //取出包中weight最大的物品

(4)

}while ((5))

print (best); //输出temp因为是最佳方案

}

根据程序说明及流程图、部分C源码,充分理解算法思想,填入(n)处。

点击查看答案

第10题

阅读下列说明和流程图,将应填入(n)处。[流程图说明] 流程图1-1描述了一个算法,该算法将给定的原字

阅读下列说明和流程图,将应填入(n)处。

[流程图说明]

流程图1-1描述了一个算法,该算法将给定的原字符串中的所有前导空白和尾部空白都删除,但保留非空字符之间的空白。例如,原字符串“ File Name ”,处理后变成“File Name”。流程图1-2、流程图1-3、流程图1-4分别详细描述了流程图1-1中的框A,B,C。

假设原字符串中的各个字符依次存放在字符数组ch的各元素ch(1),ch(2),…,ch(n)中,字符常量KB表示空白字符。

流程图1-1的处理过程是:先从头开始找出该字符串中的第一个非空白字符ch(i),再从串尾开始向前找出位于最末位的非空白字符ch(j),然后将ch(i),…,ch(j)依次送入 ch(1),ch(2),…中。如果原字符串中没有字符或全是空白字符,则输出相应的说明。在流程图中,strlen是取字符串长度函数。

阅读下列说明和流程图,将应填入(n)处。[流程图说明] 流程图1-1描述了一个算法,该算法将给定的原

[问题]在流程图1-1中,判断框P中的条件可表示为:

i>(5)

点击查看答案
赏学吧APP
TOP
重置密码
账号:
旧密码:
新密码:
确认密码:
确认修改
购买搜题卡查看答案
购买前请仔细阅读《购买须知》
请选择支付方式
微信支付
支付宝支付
点击支付即表示你同意并接受《服务协议》《购买须知》
立即支付
搜题卡使用说明

1. 搜题次数扣减规则:

功能 扣减规则
基础费
(查看答案)
加收费
(AI功能)
文字搜题、查看答案 1/每题 0/每次
语音搜题、查看答案 1/每题 2/每次
单题拍照识别、查看答案 1/每题 2/每次
整页拍照识别、查看答案 1/每题 5/每次

备注:网站、APP、小程序均支持文字搜题、查看答案;语音搜题、单题拍照识别、整页拍照识别仅APP、小程序支持。

2. 使用语音搜索、拍照搜索等AI功能需安装APP(或打开微信小程序)。

3. 搜题卡过期将作废,不支持退款,请在有效期内使用完毕。

请使用微信扫码支付(元)
订单号:
遇到问题请联系在线客服
请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系在线客服
恭喜您,购买搜题卡成功 系统为您生成的账号密码如下:
重要提示: 请勿将账号共享给其他人使用,违者账号将被封禁。
发送账号到微信 保存账号查看答案
怕账号密码记不住?建议关注微信公众号绑定微信,开通微信扫码登录功能
警告:系统检测到您的账号存在安全风险

为了保护您的账号安全,请在“赏学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!

- 微信扫码关注赏学吧 -
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反赏学吧购买须知被冻结。您可在“赏学吧”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
- 微信扫码关注赏学吧 -
请用微信扫码测试
温馨提示
每个试题只能免费做一次,如需多次做题,请购买搜题卡
立即购买
稍后再说
赏学吧