首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内。 【说明】 本程序从正文文件text.in中读入一篇英文短文,统计该短文中不同单词及出现次数,并按词典编辑顺序将单词及出现次数输出到正文文件word.out中。 程序用一棵有
阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内。 【说明】 本程序从正文文件text.in中读入一篇英文短文,统计该短文中不同单词及出现次数,并按词典编辑顺序将单词及出现次数输出到正文文件word.out中。 程序用一棵有
admin
2010-01-15
31
问题
阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内。
【说明】
本程序从正文文件text.in中读入一篇英文短文,统计该短文中不同单词及出现次数,并按词典编辑顺序将单词及出现次数输出到正文文件word.out中。
程序用一棵有序二叉树存储这些单词及其出现的次数,边读入边建立,然后中序遍历该二叉树,将遍历经过的二叉树上的结点内容输出。
【函数】
# include <stdio.h>
# include <malloc.h>
# include <ctype.h>
# include <string.h>
# define INF "text.in"
# define OUTF "word.our’
typedef struct treenode {
char *word;
int count;
struct treenode *left, *right;
} BNODE;
int getword(FILE *fpt, char *word)
{ char c;
c=fgetc(tpt);
if (c==EOF)
return 0;
while(!(tolower(c)>= ’a’ && tolower(c)<= ’z’))
{ c=fgetc(fpt);
if (c==EOF)
return 0;
} /* 跳过单词间的所有非字母字符 */
while(tolower(c)>= ’a’ && tolower(c)<= ’z’)
{ *word++=c;
c=fgetc(fpt);
}
*word=’\0’;
return 1;
}
void binary_tree(BNODE **t, char *word)
{ BNODE *ptr, *p; int compres;
p=NULL;
(1);
while (ptr) /* 寻找插入位置 */
{ compres=strcmp(word, ptr->word);/* 保存当前比较结果 */
if (!compres)
{ (2); return;}
else
{ p=ptr;
ptr=compres>0 ? ptr->right: ptr->left;
}
}
ptr=(BNODE *)malloc(sizeof(BNODE));
ptr->left=ptr->right=NULL;
ptr->word=(char *)malloc(strlen(word)+1);
strcpy(ptr->word, word);
(3);
if (p==NULL)
*t=ptr;
else if (compres>0)
p->right=ptr;
else
p->left=ptr;
}
void midorder(FILE *fpt, BNODE *t)
{ if (t==NULL)
return;
midorder(fpt,(4));
fprintf(fpt, "%s %d\n", t->word, t->count);
midorder(fpt, t->right);
}
void main()
{ FILE *fpt; char word[40];
BNODE *root=NULL;
if ((fpt=fopen(INF, "r"))==NULL)
{ printf("Can’t open file %s\n", INF);
return;
}
while(getword(fpt, word)==1)
binary_tree((5));
fclose(fpt);
fpt=fopen(OUTF, "w");
if (fpt==NULL)
{ printf("Can’t open fife %s\n", OUTF);
return;
}
midorder(fpt, root);
fclose(fpt);
}
选项
答案
(1)ptr=*t (2)ptr->count++ (3)ptr->count=1 (4)t->left (5)&root,word
解析
本题考查在C语言中实现字母的统计和有序二叉树的建立及遍历。
题目要求统计一篇英文短文中不同单词及出现次数,并将这些单词及其出现的次数用一棵有序二叉树存储,然后中序遍历该二叉树,将遍历经过的二叉树上的结点的内容输出。内容的输出是按词典编辑顺序将单词及出现次数输出的,因此二叉树的排序是按单词在词典中编辑顺序进行的,并且有序二叉树是动态生成的。
本题目的关键是有序二叉树是动态生成的,我们先来看其生成的步骤:
(1)如果相同键值的结点已在二叉排序中,则不再插入,只需修改其count的值即可;
(2)如果二叉排序树为空树,则以新结点为根建立二叉排序树;
(3)根据要插入结点的键值与插入后父结点的键值比较,就能确定新结点是父结点的左子结点,还是右子结点,并作相应插入。
重复这几步,直到单词统计结束。
下面我们来分析代码。函数getword()已经完全实现了,用来统计短文中的单词,并返回1,说明此单词出现了一次。函数binary_tree()是用来生成有序二叉树的。函数 midorder()用来实现中序遍历。
第(1)空在函数binary_tree()中,结合程序不难看出,此空应该是赋初值,而且是给指针变量ptr赋值。函数binary_tree()的形参中有一个指针变量*t,用来传递待插入到有序二叉树中的结点地址,在这里是让指针变量ptr指向这个地址,因此答案为ptr=*t。
第(2)空在条件判断语句if(!compres)下,而compres存放的是上步的比较结果值,如果条件判断语句结果为真,说明word与ptr->word的值相等,即树中已经存在该字母结点,根据有序二叉树的生成步骤知道,不需要再插入,只需修改其count的值即可,因此,第(2)空答案为ptr->count++。
第(3)空在动态生成了新结点后面。生成了一个新结点后,自然要对新结点的几个域值进行赋初值,程序中对指针域都赋了空,对字符指针域也赋了值,剩下的只有count值没有被修改,那么此空应该是用来修改count的值。在一个字母对应的结点刚插入树中时,它肯定是第一次出现,因此,此空答案为ptr->count=1。
第(4)空在函数midorder()中,此函数的功能是实现对有序二叉树的中序遍历。它是用递归方法来实现的,如果树不为空,应该先对其左子树进行递归遍历,然后才是右子树,因此,第(4)空答案为t->left。
第(5)空是当主函数调用函数binary_tree()时,需要传递的参数。根据binary_tree()的定义,我们知道它的第一个参数是指向有序二叉树的二重指针,而第二个参数是指向当前需要处理的字母的指针。在主函数中,表明有序二叉树是一重指针root,而存放当前需要处理字母的是word数组。在一重指针与二重指针进行参数传递时,需要注意加取地址运算符“&”,因此,此空答案为&root,word。
转载请注明原文地址:https://jikaoti.com/ti/IXW7FFFM
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
以下文件格式中,()是视频文件。
企业数字化转型是指企业在数字经济环境下,利用数字化技术和能力实现业务的转型、创新和增长。企业数字化转型的措施不包括()。
某计算机房夏季的环境温度要求控制在28℃至32℃,该范围可简写为______。
在Excel的A1单元格中输入函数“=ROUND(3.1415,2)”,则A1单元格中显示的值为(57)。
要使Word能自动提醒英文单词的字母拼写是否正确,应设置Word的(47)选项功能。
某互联网公司建立的用户画像(标签化的用户信息)包括人口属性和行为特征两大类,()属于行为特征。
PowerPoint可以通过插入(55)来完成统计、计算等功能。
某咨询顾问公司派小强统计本市各品牌汽车的占有率,以下4种统计方法中,小强应采用______方法,使估算结果较为可信。
为使双击指定类型的文件名就能调用相应的程序来打开处理它,需要将这种文件类型与相应的程序建立文件(23)。
企业信息化总体架构中,计算机硬件、网络系统、操作系统、数据库管理系统等属于(16)。
随机试题
影响彩色血流成像帧频的因素有
下列哪项不符合阿米巴肝脓肿的诊断
股四头肌的作用是
【背景资料】某施工单位承接了一座多跨变截面预应力混凝土连续箱桥梁,大桥分为上下游两幅,每幅单箱顶板宽10.5m,底板宽6m。大桥采用钻孔灌注桩基础,双柱式桥墩(墩柱高从15m至26m不等),普通钢筋混凝土盖梁。上部结构0号块采用墩顶
根据《水工建筑物地下开挖工程施工技术规范》(DL/T5099-2011),单向开挖洞室,安全地点至爆破工作面的最小距离为()m。
金融机构经营对象的特殊性是指()。
小甜由于在数学的学习过程中几次受到表扬,就表现出喜欢上这门课。反之,她的英语总是很差,所以她不喜欢英语。这种学习动机属于()。
领导让一位老同志来带小张工作,但是某次工作由于小张粗心大意导致领导批评了这位老同志,从此之后,这位老同志任何工作都亲力亲为,不再交给小张完成。如果你是小张,你怎么处理?
实践作为检验真理的标准,既是确定的又是不确定的。其不确定性是因为
在下列模式中,能够给出数据库物理存储结构与物理存取方法的是()。
最新回复
(
0
)