首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C代码,将应填入(n)处的字句写在对应栏内。 [说明] 下面程序用来将打乱的单词还原为原来的次序,比如将rty还原为try。单词的原来次序存储于wordlist.txt文件中,原则上可用穷举法(rty对应的穷举为:rty、ry
阅读以下说明和C代码,将应填入(n)处的字句写在对应栏内。 [说明] 下面程序用来将打乱的单词还原为原来的次序,比如将rty还原为try。单词的原来次序存储于wordlist.txt文件中,原则上可用穷举法(rty对应的穷举为:rty、ry
admin
2010-12-17
57
问题
阅读以下说明和C代码,将应填入(n)处的字句写在对应栏内。
[说明]
下面程序用来将打乱的单词还原为原来的次序,比如将rty还原为try。单词的原来次序存储于wordlist.txt文件中,原则上可用穷举法(rty对应的穷举为:rty、ryt、try、tyr、ytr、yrt),但考虑到破译速度,采用如下方法。
注意到单词列表中不存在组成字符完全相同的单词(如Hack12与Hack21包含完全相同的字符),因此将单词中的字符进行重组再进行比较,例如,try单词重组为rty(按ASCⅡ码顺序),这样不管打乱的单词是什么顺序,只要是由r、t、y三个字母组成的均破译为try,大大提高破译速度。程序中借助二叉排序树以进一步提高查找效率,二叉排序树左子树(如果有)上的节点对应的值均小于根节点的值,右子树(如果有)上的节点对应的值均大于根节点的值。
函数中使用的符号定义如下:
#define NumberofWords 1275//单词总数
#define MaxLength 10//最长单词所含字符数
char WordList[NumberofWords][MaxLength];//存储单词列表
int cmp(Node *q,Node *p);//q与p比较。p小,返回负值;P大返回正值:相等,返回0
typedef struct Node(//二叉树节点
char *eleLetters;//重组后的字符串
int index;//对应单词表中的下标
struct Node *lChiId,*rChiid;//左右子节点
}Node;
[C代码]
void reCompose(Node *p,char *temp)
//重纰,亦即将temp字符串中的字符升序排序,存储于p节点中
//采用直接插入排序法
{
char c;
strcpy(p->eleLetters,temp);//
int len=strlen(temp);
int i,j,k;
for(i=0;i<len-1;i++){
k=i;
for(j=i+1;j<lan;j++){
if(p->eleLetters[j]<P->eleLetters[k])k=J;
}
if( (1) ){
C=P->eleLetters
;
P->eleLetters
=P->eleLetters[k];
P->eleLetters[k]=c;
}//if
}//for
};
int find(Node &root,char *temp)
//在二叉排序树root中查找与temp匹配的单词。
//若匹配返回相应单词在WordList中下标;若查找失败,返回-1
{
Node *P,*q;
int flag;
P=(2);//临时存储
reCompose(p,temp);//将temp重组
q=&root;
while((flag=(3))&&q !=NULL){
if(flag<0){//搜索左子树
q=q->lChiid;
}else(//搜索右子树
q=q->rChild;
}
}//while
if(flag==0){//找到匹配的,保存下标
return (4);
}
}
if( (5) ){//查找失败
printf("cant unscramble the following word:%s",temp);;
return -1;
}
};
(5)
选项
答案
q==NULL
解析
该题涉及二叉排序树的应用、直接插入排序算法等。
空(1)所在函数是直接插入排序的一个实现,理解了直接插入排序算法很容易得出答案,条件(1)成立时,需要进行交换,故空(1)应填“k!=i”。
空(2)比较简单,p声明为指针,在引用(reCompse(p,temp)之前需要申请空间,故空(2)应填“(Node *)malloc(sizeof P)”。
接下来在二叉排序上进行查找。while循环体内只有两个分支,一个是flag<0时继续往左子树搜索,另一个就是往右子树搜索,此时应该对应的是flag>0。据此可判知,flag存储的是查找节点p与当前节点q之间的大小关系,显然是调用类Node的cmp方法,故空(3)应填“cmp(q,p)”。注意,不能填成“cmp(p,q)”,那样将不可能找到匹配的,因为该二叉排序树是左子树小于根节点,而cmp(q,p)当p比q小时返回负值,搜索应往左子树继续。
空(4)是找到匹配时返回,根据函数注释,函数find的返回值是匹配单词在WordList数组中的下标,结构Node的index域正好存储的是下标。故空(4)应填“q->index”。
空(5)是查找失败的情况,对应条件为“q==NULL”。故空(5)应填“q==NULL”。
转载请注明原文地址:https://kaotiyun.com/show/3qDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
下图所示的二叉树进行顺序存储(根结点编号为1,对于编号为i的结点,其左孩子结点为2i,右孩子结点为2i+1)并用一维数组BT来表示,已知结点X、E和D在数组BT中的下标为分别为1、2、3,可推出结点G、K和H在数组BT中的下标分别为____________
MVC模式(模型.视图一控制器)是软件工程中的一种软件架构模式,把软件系统分为模型、视图和控制器三个部分。________________不属于MVC模式的优点。
一个Web信息系统所需要进行的测试包括____________。①功能测试②性能测试③可用性测试④客户端兼容性测试⑤安全性测试
程序质量评审通常是从开发者的角度进行评审,其内容不包括____________。
某企业有生产部和销售部,生产部负责生产产品并送入仓库,销售部从仓库取出产品销售。假设仓库可存放n件产品。用PV操作实现他们之间的同步过程如下图所示。其中,信号量S是一个互斥信号量,初值为(1);S1是一个(2);S2是一
________________不属于网络测试对象。
正确的集成测试描述包括(43)。①集成测试也叫做组装测试,通常是在单元测试的基础上,将模块按照设计说明书要求进行组装和测试的过程②自顶向下的增殖方式是集成测试的一种组装方式,它能较早地验证主要的控制和判断点,对于输入输出模块、复杂算法模
“<titlestyle="italic">science</title>”是XML中一个元素的定义,其中元素的内容是(29)。
下图是________________设计模式的类图,该设计模式的目的是________________,图中,Decorator和Component之间是________________关系,ConcreteDecorator和Decorator之间是_
给出关系R(A,B,C)和S(A,B,C),R和S的函数依赖集F={A→B,B→C}。若R和S进行自然连接运算,则结果集有3个属性。关系R和S________。
随机试题
金属材料的化学性能是指金属材料发生化学反应的能力。()
寒邪食积,大便不通宜用身面浮肿,胸胁积液宜用
评定生产技术方案最基本的标准是()。
受法律保护的物权有( )。
根据公司法律制度的规定,当公司出现特定情形,继续存续会使股东利益受到重大损失,通过其他途径不能解决,持有公司全部股东表决权10%以上的股东提起解散公司诉讼的,人民法院应当受理。下列各项中,属于此类特定情形的是()。
个人取得下列各项所得,必须自行申报纳税的有()。
分析指将整体材料分解成其构成成分并理解组织结构,包括对要素的分析、________的分析、组织原理的分析。
西方宗教学的奠基人麦克斯.缨勒解释道:“宗教是一种内心的本能或气质,它独立地、不借助感觉和理性,能使人们领悟在不同名称和各种伪装下的无限。”把宗教解释为“独立地、不借助感觉和理性”而领悟“无限”的才能,真是高明之极。让宗教站在“无限”上,也就一劳永逸地摆脱
0,15,26,15,4,()。
文档“北京政府统计工作年报.docx”是一篇从互联网上获取的文字资料,请打开该文档并按下列要求进行排版及保存操作:除封面页和目录页外,在正文页上添加页眉,内容为文档标题“北京市政府信息公开工作年度报告”和页码,要求正文页码从第l页开始,其中奇数页眉居右
最新回复
(
0
)