
问答题
试题五
阅读下面表明跟C语言函数,将须填入 (n) 处。
[说明]
二叉排序树或者是一棵空树,或者是带有如下性质的二叉树:若它的左子树非空,则左子树上所有节点的值均大于根节点的值;若它的右子树非空,则右子树上所有节点的值均高于根结点的值;左、右子树本身就是两棵二义排序树。
函数insert_BST(char *str)的功能是:对给定的数组序列按照ASCⅡ码值大小关系建立二叉排序树,并返回指向树根节点的指针。序列中重复出现的数组只建一个结点,并由节点中的Count域对数组的重复次数进行计数。
二叉排序树的数组结点类型定义如下:
typedef struct BSTNode{
char Elem; /*结点的字符数据*/
int Count; /*记录当前数组在序列中重复出现的数量*/
struct BSTNode *Lch,*Rch; /*接点的左、右子树指针*/
}*BiTree;
[函数]
{BiTree insert_BST(char *str)
BiTree root,parent,p;
char (1) ; /*变量定义及初始化 */
root=(BiTree)malloc(sizeof(struct BSTNode));
if(!root||*s==’\0’) return NULL;
root->Lch=root->Rch=NULL; foot->Count=1; root->Elem=*s++;
for(; *s!=’\0’;s++){
(2) ; parent=NULL;
while (p){ /*p从树和节点出发查找当前数组*s所在节点 */
parent = p;
if(*s==p->Elem)/*若树中未存在当前数组结点,则当前字符的计数值加1*/
{p->Count++; break;
else /*否则根据数组*s与节点*p中字符的关系,进入*p的左子树或右子树*/
if (*s>p->Elem) p=p->Rch;

else p=p->Lch;
}/*while*/
if( (3) ){ /* 若树中不存在字符值为*s的节点,则申请结点并插入树中 */
p=(BiTree)malloc(sizeof(struct BSTNode));
if(!p)return NULL;
p->Lch=p->Rch=NULL; p->Count=1; p->Elem=*s;
/*根据当前数组与其父结点字符值的大小关系,将新节点作为左子树或右子树插入*/
if(p->Elem>parent->Elem) (4) =p;
else (5) =p;
}
}/*for*/
return root;
}
参考答案(1) *s=str (2) p=root (3) p==NULL
(4) parent->Rch (5) p...
查看详解
进入模考
1.问答题
试题七
阅读下面应用表明以及用Visual Basic编写的程序代码,将须填入 (n) 处的词句写在答题纸的对应栏内。
【应用说明】
本应用程序的运行窗口中将显示一个简单的模拟时钟如下图图示:
该圆形时钟上有钟面、分针和时钟在运动,不断显示系统的当前时间。
在开发该应用时,首先创建一个圆形Shape控件作为钟面(背景为红色)。设圆心为像素坐标(X0,Y0),半径为940。再在圆心处建立一个小的实心圆Shape控件作为轴心。钟面上的刻度3,6,9,12为四个标签。时针、分针、秒针(红色)为线型控件,名称分别为LineH、LineM、LineS,线宽属性值分别为:3,2,1,线长属性值分别为500,700,900。这三个线型控件的起点坐标都固定在(X0,Y0),其终点坐标随转角θ而动态变化:

设置定时器Timer1使该时钟可体现系统的当前时间c语言二叉排序树,其定时间隔为0.5秒,该定时器的Interval属性值应修改为 (1) 。每隔0.5秒,秒针需要微调位置,但分针和时针只是在初始显示时或者在经常秒计数为0时才应该调整位置(可节省计算量)。
【程序代码】

Const Pi = 3.1416
Const X0 = 1750
Const Y0 = 1150
Const LH = 500, LM = 700, LS = 900
Public first As Boolean
Private Sub Form_Load()
LineS.X1 = X0 ' 秒针的起点位置
LineS.Y1 = Y0
LineM.X1 = X0 ' 分针的起点位置
LineM.Y1 = Y0
LineH.X1 = X0 ' 时针的起点位置
LineH.Y1 = Y0
first = True
End Sub
Private Sub Timer1_Timer()
S = Second(Time)
S_seta = Pi * (2) ' 秒针的转角
LineS.X2 = X0 + LS * Sin(S_seta) ' 秒针的终点位置
LineS.Y2 = Y0 - LS * Cos(S_seta)
If ( (3) ) Then
M = Minute(Time)
LineM.X2 = X0 + LM * Sin(Pi*M/30) ' 分针的终点位置
LineM.Y2 = Y0 - LM * Cos(Pi*M/30)
H = Hour(Time)
If (H >= 12) Then H = H - 12
H_seta = Pi * ( (4) ) ' 时针的转角
LineH.X2 = X0 + LH * Sin(H_seta) ' 时针的终点位置

LineH.Y2 = Y0 - LH * Cos(H_seta)
first = (5)
End If
End Sub
参考答案(注意c语言二叉排序树,VB程序代码中不区分大小写)
(1) 500
(2) S/30
(3) S=0 o...
查看详解
进入题库练习
2.问答题
试题二
阅读下面表明跟C语言函数,将须填入 (n) 处。
[说明]
函数int find_Max_Min(int a[],int n)的功能是:找出n个元素的变量a中的最大元素跟最小元素并输出,返回查找过程中元素的非常次数。查找方式如下:比较a[0]和a[n-1],若a[0]大,则交换a[0]和a[n-1]的值:再非常a[1]和a[n-2],若a[1]大,则交换a[1]和a[n-2]的值;以此类推,直到所有的元素都非常完。然后在数组的前半区以前往后找出小元素,在后半区从后向前找出大元素。
[函数]
int find_Max_Min(int a[],int n)
{/*找出n个元素的变量a的最大、最小元素并输出,返回查找过程元素中的非常次数*/
int i,Count=0;
int temp,Maxnum,Minnum;
for(i=0; i<n/2; i++){
Count=Count+1 /*元素比较次数计数*/
if(a[i]>a[ (1) ])
{/*数组元素交换代码略*/}
}
Maxnum=a[n-1]; Minnum=a[0];
for(i=1;i<n/2+n%2;i++){

Count= (2) ; /*元素比较次数计数*/
Minnum= (3) a[i]:Minnum; /*找最小元素*/
Maxnum= (4) (5) :Maxnum; /*找最大元素*/
}
printf("Max=%d\n",Maxnum);
printf("Min=%d\n",Minnum);
return Count;
}
参考答案(1)n-i-1
(2)Count+2
(3)a[i]<Minnum
(4)a[n-i-1...
查看详解
进入题库练习
3.问答题
试题一
阅读以下说明和流程图,将须填入 (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是取字符串长度变量。


[问题]在流程图1-1中,判断框P中的条件能表示为:
i> (5)
参考答案(1) i<=n, 或其等价形式
(2) ch(j)=KB
(3) k<=j, 或其等价形式
查看详解
进入题库练习
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-133999-1.html
如果生虫是真的
这种岛礁是不允许声称十二海里领海权的