![](https://cos-cdn.shuashuati.com/pipixue-wap/2020-1230-1107-56/ti_inject-812ce.png)
阅读以下说明和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); }