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

题目

[主观题]

阅读以下预备知识、函数说明和C代码,将应填入(n)处的字句填写完整。[说明] (1)对给定的字符集合及

阅读以下预备知识、函数说明和C代码,将应填入(n)处的字句填写完整。

[说明]

(1)对给定的字符集合及相应的权值,采用哈夫曼算法构造最优二叉树,并用结构数组存储最优二叉树。例如,给定字符集合{a,b,c,d)及其权值2、7、4、5,可构造如图3-26所示的最优二叉树,以及相应的结构数组Ht(如表3-12所示,其中数组元素Ht[0]不用)。

阅读以下预备知识、函数说明和C代码,将应填入(n)处的字句填写完整。[说明] (1)对给定的字符集合

结构数组Ht的类型定义如下:

阅读以下预备知识、函数说明和C代码,将应填入(n)处的字句填写完整。[说明] (1)对给定的字符集合

(2)用“0”或“1”标识最优二叉树中分支的规则是:从一个结点进入其左(右)孩子结点,就用“0”(或“1”)标识该分支(示例见图3-26)。

阅读以下预备知识、函数说明和C代码,将应填入(n)处的字句填写完整。[说明] (1)对给定的字符集合

(3)若用上述规则标识最优二叉树的每条分支后,从根结点开始到叶子结点为止,按经过分支的次序将相应标识依次排列,可得到由“0”、“1”组成的一个序列,称此序列为该叶子结点的前缀编码。例如图3-26所示的叶子结点a、b、c、d的前缀编码分别是110、0、111、10。

[函数说明1]

函数void LeafCode (int root,int n)的功能是:采用非递归方法,遍历最优二叉树的全部叶子结点,为所有的叶子结点构造前缀编码。其中,形参root为最优二叉树的根结点下标;形参n为叶子结点个数。

在函数void LeafCode (int root,int n)构造过程中,将Ht[p].weight域用做被遍历结点的遍历状态标志。

[函数4.1]

阅读以下预备知识、函数说明和C代码,将应填入(n)处的字句填写完整。[说明] (1)对给定的字符集合

[函数说明2]

函数void Decode (char (作图)buff,int root)的功能是:将前缀编码序列翻译成叶子结点的字符序列,并输出。其中,形参root为最优二叉树的根结点下标;形参buff指向前缀编码序列。

[函数4.2]

阅读以下预备知识、函数说明和C代码,将应填入(n)处的字句填写完整。[说明] (1)对给定的字符集合

查看参考答案
更多“阅读以下预备知识、函数说明和C代码,将应填入(n)处的字句填写完整。[说明] (1)对给定的字符集合及”相关的问题

第1题

阅读以下预备知识、函数说明和C代码,将应填入(n)处的字句写在对应栏内。 [预备知识] ①对给定的字符

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

[预备知识]

①对给定的字符集合及相应的权值,采用哈夫曼算法构造最优二叉树,并用结构数组存储最优二叉树。例如,给定字符集合{a,b,c,d}及其权值2、7、4、5,可构造如图3所示的最优二叉树和相应的结构数组Ht(数组元素Ht[0]不用)(见表5)。

阅读以下预备知识、函数说明和C代码,将应填入(n)处的字句写在对应栏内。 [预备知识] ①对给定的字

结构数组HT的类型定义如下:

define MAXLEAFNUM 20

struct node {

char ch; / * 当前结点表示的字符,对于非叶子结点,此域不用*/

int weight; / * 当前结点的权值*/

int parent; / * 当前结点的父结点的下标,为0时表示无父结点*/

int Ichild, rchild

/ *当前结点的左、右孩子结点的下标,为0时表示无对应的孩子结点* /

} Ht[2 * MAXLEAFNUM];

②用'0'或'1'标识最优二叉树中分支的规则是:从一个结点进入其左(右)孩子结点,就用'0'('1')标识该分支(示例如图3所示)。

③若用上述规则标识最优二叉树的每条分支后,从根结点开始到叶子结点为止,按经过分支的次序,将相应标识依次排列,可得到由'0'、'1'组成的一个序列,称此序列为该叶子结点的前缀编码。如图3所示的叶子结点a、b、c、d的前缀编码分别是110、0、111、10。

【函数5.1说明】

函数void LeafCode (int root, int n)的功能是:采用非递归方法,遍历最优二叉树的全部叶子结点,为所有的叶子结点构造前缀编码。其中形参root为最优二叉树的根结点下标;形参 n为叶子结点个数。

在构造过程中,将Ht[p]. weight域用作被遍历结点的遍历状态标志。

【函数5.1】

char * * Hc;

void LeafCode (int root, int n)

{/*为最优二叉树中的n个叶子结点构造前缀编码,root是树的根结点下标* /

int i,p = root,cdlen =0;char code[20];

Hc=(char* * )malloc(.(n +]) *sizeof(char* )); /* 申请字符指针数组* /

for(i=1;i< =p;++i)

Ht[ i]. weight =0;/* 遍历最优二叉树时用作被遍历结点的状态标志*/

while(p) {/*以非递归方法遍历最优二叉树,求树中每个叶子结点的编码*/

if(Ht[p], weight ==0) { /*向左*/

Ht[ p]. weight =1

if (Ht[p],lchild !=0) { p=Ht[P].lchild; code[cdlen++] ='0';]

else if (Ht[p]. rchild ==0) {/* 若是叶子结点,则保存其前缀编码*/

Hc[p] = (char * ) malloc((cdlen + 1 ) * sizeof (char) );

(1); strcpy(He[ p] ,code);

}

}

else if (Ht[ pi, weight == 1) { /*向右*/

Ht[p]. weight =2;

if(Ht[p].rchild !=0) {p=Ht[p].rchild; code[cdlen++] ='1';}

}

else{/* Ht[p]. weight ==2,回退*/

Ht[p]. weight =0;

p=(2);(3); /*退回父结点*/

}

}/* while结束* /

}

【函数5.2说明】

函数void Decode(char*buff, int root)的功能是:将前缀编码序列翻译成叶子结点的字符序列并输出。其中形参root为最优二叉树的根结点下标;形参buff指向前缀编码序列。

【函数5.2】

void Decode(char * buff, int root)

Iint pre =root,p;

while (* buff! = '\0') {

p = root;

while (p!=0){/*存在下标为p的结点*/

pre=p;

if((4))p=Ht[p].lchild; /*进入左子树*/

else p = Ht[p]. rchild; / *进入右子树*./

buff ++; / * 指向前缀编码序列的下一个字符* /

}

(5);

printf("%c", Ht [ pre]. ch);

}

}

点击查看答案

第2题

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

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

【预备知识】

①对给定的字符集合及相应的权值,采用哈夫曼算法构造最优二叉树,并用结构数组存储最优二叉树。例如,给定字符集合{a,b,c,d}及其权值2、7、4、5,可构造如图3所示的最优二叉树和相应的结构数组Ht(数组元素Ht[0]不用)(见表5)。

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

图3最优二叉树

表5 结构数组Ht

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

结构数组Ht的类型定义如下:

define MAXLEAFNUM 20

struct node{

char ch;/*当前结点表示的字符,对于非叶子结点,此域不用*/

int weight;/*当前结点的权值*/

int parent;/*当前结点的父结点的下标,为0时表示无父结点*/

int lchild,rchild;

/*当前结点的左、右孩子结点的下标,为0时表示无对应的孩子结点*/

}Ht[2*MAXLEAFNUM];

②用′0′或′1′标识最优二叉树中分支的规则是:从一个结点进入其左(右)孩子结点,就用′0′(′1′)标识该分支(示例如图3所示)。

③若用上述规则标识最优二叉树的每条分支后,从根结点开始到叶子结点为止,按经过分支的次序,将相应标识依次排列,可得到由′0′、′1′组成的一个序列,称此序列为该叶子结点的前缀编码。例如图3所示的叶子结点a、b、c、d的前缀编码分别是110、0、111、10。

【函数5.1说明】

函数void LeafCode(int root,int n)的功能是:采用非递归方法,遍历最优二叉树的全部叶子结点,为所有的叶子结点构造前缀编码。其中形参root为最优二叉树的根结点下标;形参n为叶子结点个数。

在构造过程中 ,将Ht[p].weight域用作被遍历结点的遍历状态标志。

【函数5.1】

char**Hc;

void LeafCode(int root,int n)

{/*为最优二叉树中的n个叶子结点构造前缀编码,root是树的根结点下标*/

int i,p=root,cdlen=0;char code[20];

Hc=(char**)malloc((n+1)*sizeof(char*));/*申请字符指针数组*/

for(i=1;i<=p;++i)

Ht[i].weight=0;/*遍历最优二叉树时用作被遍历结点的状态标志*/

while(p){/*以非递归方法遍历最优二叉树,求树中每个叶子结点的编码*/

if(Ht[p].weight==0){/*向左*/

Ht[p].weight=1;

if (Ht[p].lchild !=0) { p=Ht[p].lchild; code[cdlen++]=′0′;}

else if (Ht[p].rchild==0) {/*若是叶子结 点,则保存其前缀编码*/

Hc[p]=(char*)malloc((cdlen+1)*sizeof(char));

(1) ;strcpy(He[p],code);

}

}

else if (Ht[p].weight==1){/*向右*/

Ht[p].weight=2;

if(Ht[p].rchild !=0){p=Ht[p].rchild;code[cdlen++]=′1′;}

}

else{/*Ht[p].weight==2,回退*/

Ht[p].weight=0;

p= (2) ; (3) ;/*退回父结点*/

}

}/*while结束*/

}

【函数5.2说明】

函数void Decode(char*buff,int root)的功能是:将前缀编码序列翻译成叶子结点的字符序列并输出。其中形参root为最优二叉树的根结点下标;形参buff指向前缀编码序列。

【函数5.2】

void Decode(char*buff,int root)

{ int pre=root,p;

while(*buff!=′\0′){

p=root;

while(p!=0){/*存在下标为p的结点*/

pre=p;

if((4) )p=Ht[p].lchild;/*进入左子树*/

else p=Ht[p].rchild;/*进入右子树*/

buff++;/*指向前缀编码序列的下一个字符*/

(5) ;

printf(″%c″,Ht[pre].ch);

}

}

点击查看答案

第3题

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

●试题八

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

【说明】

以下程序的功能是:从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。

【程序】

#include<stdio.h>

main()

{FILE*fp;

charstr[100];inti=0;

if((fp=fopen("text.txt" (1) ))==NULL)

{printf("can't open this file.\n");exit(0);}

printf("input astring:\n");gest(str);

while(str[i])

{if(str[i]>=′a′ && str[i]<=′z′)

str[i]= (2) ;

fputc(str[i], (3) );

i++;

}

fclose(fp);

fp=fopen("test.txt", (4) );

fgets(str,100,fp);

printf("%s\n",str);

(5) ;

}

点击查看答案

第4题

阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。【说明】 以下程序的功能是:从键盘上输

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

【说明】

以下程序的功能是:从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。

【程序】

include < stdio. h >

main()

{ FILE * fp;

char str[100]; int i=0;

if((fp=fopen("text.txt"(1))) ==NULL)

{ printf("can't open this file. \n") ;exit(0) ;}

printf(" input astring: \n" ); gest(str);

while(str[i] )

{ if(str[i] >='a' && str[i] <='z')

str[i]=(2);

fputc(str[i],(3));

i++;

}

fclose(fp);

fp=fopen(" test.txt",(4));

fgets(str, 100, fp);

printf("%s\n" ,str);

(5);

}

点击查看答案

第5题

阅读以下说明,以及用C++在开发过程中所编写的程序代码,将应填入(n)处的字句写在对应栏内。【说明】

阅读以下说明,以及用C++在开发过程中所编写的程序代码,将应填入(n)处的字句写在对应栏内。

【说明】

在下面函数横线处填上适当的字句,使其输出结果为:

构造函数.

构造函数.

1,2

5,6

析构函数

析构函数.

【C++代码】

include "iostream.h"

class AA

{ public;

AA(int i,int j)

{A=i; B=j;

cout<<"构造函数.\n";

}

~AA(){(1);}

void print();

private:

int A, B;

};

void AA∷print()

{cout<<A<<","<<B<<endl;}

void main()

{

AA *a1, *a2;

(2)=new AA(1, 2);

a2=new AA(5, 6);

(3);

a2->print();

(4) a1;

(5) a2;

}

点击查看答案

第6题

阅读以下说明和 C 函数,填补函数代码中的空缺,将解答填入答题纸的对应栏内。 【说明 1】 函数 f(d

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

点击查看答案

第7题

阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。 【说明2.1】 以下C语言函数用二分插

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

【说明2.1】

以下C语言函数用二分插入法实现对整型数组a中n个数的排序功能。

【函数2.1】

void fun1 (int a[])

{ int i,j,k,r,x,m;

for(i=2;i<=n;i++)

{ (1);

k=1;r=i-1;

while(k<=r)

{ m=(k+r)/2;

if(x<a[m])r=m-1;

else (2);

}

for(j=i-1;j>=k;j--)

a[j+l]=a[j];

(3);

}

}

【说明2.2】

以下程序可以把从键盘上输入的十进制数(long型)以二~十六进制形式输出。

【程序2.2】

include<stdio.h>

main()

{ charb[16]={'0','l','2','3 ,4,'5','6','7','8','9','A','B','C','D','E','F'};

int c[64],d,i=0,base;

long n;

printf("enter a number:\n");

scanf("%1d",&n);

printf("enter new basc:\n");

scanf("%d", &base);

do

{ c[i]=(4);

i++; n=n/base;

} while(n!=0);

printf("transmite new base:\n");

for(--i;i>=0;--i)

{ d=c[i];

printf("%c",(5));

}

}

点击查看答案

第8题

阅读下列函数说明和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);

}

点击查看答案

第9题

●试题四 阅读下列函数说明和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) ;

}

点击查看答案

第10题

阅读以下函数说明和C代码,将C程序中(1)~(5)空缺处的语句填写完整。[说明] 函数int Toplogical(Lin

阅读以下函数说明和C代码,将C程序中(1)~(5)空缺处的语句填写完整。

[说明]

函数int Toplogical(LinkedWDigraphG)的功能是对图G中的顶点进行拓扑排序,并返回关键路径的长度。其中,图G表示一个具有n个顶点的AOE-网,图中顶点从1~n依次编号,图G的存储结构采用邻接表表示,其数据类型定义如下。

阅读以下函数说明和C代码,将C程序中(1)~(5)空缺处的语句填写完整。[说明] 函数int Top

例如,某AOE-网如图6-22所示,其邻接表存储结构如图6-23所示。

阅读以下函数说明和C代码,将C程序中(1)~(5)空缺处的语句填写完整。[说明] 函数int Top

[函数]

阅读以下函数说明和C代码,将C程序中(1)~(5)空缺处的语句填写完整。[说明] 函数int Top

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

1. 搜题次数扣减规则:

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

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

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

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

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

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