试题五
阅读以下说明和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的左子树或右
试题二
阅读以下说明和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;
}
阅读以下说明和C语言代码,回答问题1至问题4,将解答填入对应栏内。
【说明】
在嵌入式操作系统设备管理的实现上,常使用到C语言的函数指针变量,由统一的管理函数调用不同的设备驱动程序。下面的一段C语言代码是驱动管理程序 manage_device调用4个不同设备驱动程序,但没有用到函数指针变量。
【C语言代码】
/*变量与类型说明*/
#include "stdio.h"
#include "stdlib.h"
extern int sys_status;
extern int Dev_drv1(int arg1, int arg2);
extern int Dev_drv2(int arg1, int arg2);
extern int Dev_drv3(int arg1, int arg2);
extern int Dev_drv4(int arg1, iht arg2);
#define NOERROR 0
type struct {
int _fd;
} TYP_DEV_TAB;
TYP DEV_TAB dev_tab[50]= {101,99, 80, 120,};
/*程序代码*/
void manage_device(int devid, int arg1, int arg2)
{ int place ;
int ret;
for(place=0 ; place<50 ; place++)
if dev_tab [place]. fd == devid) break;
if(place>=50)
printf(" NO DEVICE fd = %d/n ",devid);
switch(dev_tab [place]._fd) {
case
试题二
阅读以下说明和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;
}
试题五
阅读以下说明和C 语言函数,将应填入 (n) 处的字句写在答题纸的对应栏内。
[说明]
二叉排序树或者是一棵空树,或者是具有如下性质的二叉树:若它的左子树非空,则左子树上所有结点的值均小于根结点的值;若它的右子树非空,则右子树上所有结点的值均大于根结点的值;左、右子树本身就是两棵二叉排序树。
函数insert_BST (char *str)的功能是:对给定的字符序列按照ASCII 码值大小关系创建二叉排序树,并返回指向树根结点的指针。序列中重复出现的字符只建一个结点,并由结点中的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; root->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 /*否则
【问题1】 该商务网站有一个购物车模块,购物车模块中自定义了两个session属性如下。 ①CID用来记录用户选择的商品; ②CNUM用来记录相应商品的数量。 请根据表7-4所列的购物情况,将(1)~(3)空缺处对session对象处理方式的内容填写完整。 表7-4 Session对象处理方式表
|