1、软件水平考试(初级)程序员下午(应用技术)模拟试卷 49及答案与解析 1 路由器 R1 的状态信息如图 3-2 所示。由图可知, R1 开启了 DHCP 服务。为了保证 WWW 服务器的 IP地址固定为 192.168.0.4,则应采用静态 IP地址分配方式,并且与 (3)_绑定。 WWW 服务器的默认网关地址应设置为 (4)_ 。 2 阅读下列函数说明和 C函数,将应填入 (n)处的字句写在对应栏内。 说明 循环队列的类型定义如下 (其中队列元素的数据类型为 datatype): typedef struct datatype dataMAXSIZE; /*数据的存储区 */ int fro
2、nt,rear; /*队首、队尾指针 */ int num; /*队列中元素的个数 */ c _ SeQueue; /*循环队 */ 下面函数及其功能说明如下: (1) c_SeQueue* Init_SeQueue():新建队列; (2) int ln_SeQueue( c_SeQueue *q, datatype x):将元素 x插入队列 q,若成功返回1否则返回 0; (3) int Out_SeQueue (c_SeQueue *q, datatype *x):取出队列 q队首位置的元素,若成功返回 1否则返回 0。 函数 c_SeQueue* Init_SeQueue() q=mal
3、loc(sizeof(c_SeQueue); q- front=q- rear=MAXSIZE-1; (1); return q; int In_SeQueue( c_SeQueue *q, datatype x) if(q- num= =MAXSIZE) return 0; /*队满不能入队 */ else q- rear=(2); q- dataq- rear=x; (3); return 1; /*入队完成 */ int Out_SeQueue( c_SeQueue *q, datatype *x) if (q- num= =0) return 0; /*队空不 能出队 */ else
4、*x=(4); /*读出队首元素 */ q- front=(5); q- num- -; return 1; /*出队完成 */ 3 阅读以下说明和 C语言函数,将应填入 (n)处。 说明 二叉排序树或者是一棵空树,或者是具有如下性质的二叉树:若它的左子树非空,则左子树上所有结点的值均小于根结点的值;若它的右子树非空,则右子树上所有结点的值均大于根结点的值;左、右子树本身就是两棵二义排序树 。 函数 insert_BST(char *str)的功能是:对给定的字符序列按照 ASC 码值大小关系创建二叉排序树,并返回指向树根结点的指针。序列中重复出现的字符只建一个结点,并由结点中的 Count域
5、对字符的重复次数进行计数。 二叉排序树的链表结点类型定义如下: 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)
6、 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- L
7、ch; /*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; 4 函数 Node *difference(A,B)用于求两个集合之
8、差 C=A-B,即当且仅当 e是 A中的一个元素,但不是 B中的元素时, e是 C中的元素。集合用有序链表实现,用一个空链表表示一个空集合,表示非空集合的链表根据元素之间按递增排列。执行C=A-B之后,表示集合 A和 B的链表不变,若结果集合 C非空,则表示其链表根据元素之值按递增排列。函数 append()用于在链表中添加节点。 C函数 typedef struct node int element; struct node *link; Node; Node *A, *B, *C; Node *append(last, e) Node *last; int e; last- link=(N
9、ode *)malloc(sizeof(Node); last- link- element=e; return(last- link); Node *difference(A,B) Node *A, *B; Node *c, *last; C=last=(Node *)malloc(sizeof(Node); while( (1) ) if(A- element B- element) last=append(last, A- element); A=A- link: else if( (2) ) A: A- link; B: B- link; elSe (3) ; while( (4) )
10、 last=append(last, A- element); A=A- link: (5) ; last=c; c=c- link; free(last); return(c); 5 阅读以下说明及 Visual Basic代码,将应填入 (n)处的字句写在对应栏内。 说明 下图是一个简易文本编辑器程序的运行界面: 用户打开磁盘上的某个文件后,可以直接对文本进行编辑,也可以利用界面提供的按钮完成相应操作。主要操作介绍如下: (1)打开文件:打开文件对话框,其中 仅显示 “*.txt”类型的文件。用户选中某一文件后,其内容将呈现于界面文本框内; (2)查找:提示用户输入要查找的内容,将首次出现
11、的查找内容以蓝色高亮标记; (3)替换:若文本框中已选中某段文本,则提示用户输入要替换的内容,在文本框中完成替换。 在开发过程中,文本框名为 Text1, “打开文件 ”、 “保存文件 ”、 “查找 ”、 “替换 ”、 “退出 ”按钮分别命名为 Command1至 Command5。 Visual Basic代码 Dim fileName As StringDim fso As New (1), ts As Object打开文本文件 Private Sub Command1_Click() CommonDialog1.Filter = “*.txt“ CommonDialog1.ShowOpe
12、n fileName =(2) 保存所打开的文件名 Set fso=CreateObjeet(“Scripting.FileSystemObject“) Set ts=fso.OpenTextFile(fileName, ForReading) If Not ts.AtEndOfStream Then Text1.Text =(3) End If ts. CloseEnd Sub保存文本文件 Private Sub Command2_Click() Set ts = fso.OpenTextFile(fileName, ForWriting) (4) ts.CloseEnd Sub查找字符串
13、Private Sub Command3_Cliek() Dim search As String, position As Integer search = InputBox(“输入要查找的字符串 :“) position = InStr(Text1.Text, search) 在文本中查找字符串 If position 0 Then 若找到指定的字符串 Text1.SelStart = position - 1 设置选定文本的起始位置 Text1.SelLength = Len(search) 设置选定文本的长度 Else MsgBox “没有发现要查找的字符串 “ End IfEnd S
14、ub替换选中的字符串 Private Sub Command4_Click() Dim object As String If (5) 0 Then 若已经选中了要替换的文本 object = InputBox(“输入要替换的字符串 :“) Text1.SelText = object 替换文本 Else MsgBox “请先选中要替换的文本 !“ End IfEnd Sub退出程序 Private Sub Command5_Click() EndEnd Sub 6 阅读以下关于某绘图系统的技术说明、部分 UML类图及 C+程序,将 C+程序中 (1) (6)空缺处的语句填写完整。 【说明】
15、某绘图系统存在 Point、 Line和Square这三种图元,它们具有 Shape接口,图元的类图关系如图 5-10所示。 现要将 Circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供 XCircle类,且完全满足系统新增的 Circle图元所需的功能,但 XCircle不是由 Shape派生而来,它提供了的接口不被系统直接使用。【 C+代码 5-1】既使用了 XCircle又遵循了 Shape规定的接口,即避免了从头开发一个新的 Circle类,又可以不修改绘图系统中已经定义的接口。【 C+代码 5-2】根据用户指定的参数生成特定的图元实例,并对它进行显示操作。 该绘图系统
16、定义的接口与 XCircle提供的显示接口及其功能如表 5-13所示。 【 C+代码 5-1】 class Circle: public (1) Private; (2) m_circle; Public; void display() m_circle. (3) ; 【 C+代码 5-2】 class Factory public; (4) getShapeInstance(int type) /生成特定类实例 Switch(type) case 0: return new Point; case 1: return new Rectangle; case 2: return new Lin
17、e; case 3: return new Circle; default: return NULL; ; void main(int argc, char *argv) if(argc !=2) cout “error parameters!“ endl; return; int type=atoi(argv1); Factory factory; Shape *s; s=factory.(5); if(s=NULL) cout “Error get the instance!“ endl; return; s-display(); (6); Return; 7 阅读以下说明和 Java程序
18、,将应填入 (n)处的字句写在对应栏内 说明 以下程序的功能时三角形、矩形和正方形的面积输出。 程序由 5个类组成: areatest是主类,类 Triangle, Rectangle和 Square分别表示三角形、矩形和正方形,抽象类 Figure提供了一个计算面积的抽象方法。 Java程序 public class areatest public static viod main(string args) FigureFigures= New triangle(2,3,3),new rectangle(5,8),new square(5) ; for(int i=0; i Figures.
19、length;i+) system.out.println(Figures+“area=“+Figures.getarea(); public abstract class figure public abstract double getarea(); public class rectangle extends (1) double height; double width; public rectangle (double height,double width) this.height=height; this.width=width; public string tostring()
20、 return“rectangle:height=“+height+“,width=“+width+“:“; public double getarea() return (2) public class square exends (3) public square(double width) (4); public string tostring() return“square:width=“+width“:“; public class triangle entends (5) double la; double lb; double lc; public triangle(double
21、 la,double lb,double lc) this.la=la;this.lb=lb;this.lc=lc; public string tostring()( return“triangle:sides=“+la+“,“+lb+“,“+lc+“:“; public double get area() double s=(la+lb+lc)/2.0; return math sqrt(s*(s-la)*(s-lb)*(s-lc); 软件水平考试(初级)程序员下午(应用技术)模拟试卷 49答案与解析 1 【正确答案】 WWW服务器的 MAC地址 192.168.0.1 2 【正确答案】
22、(1) q- num=0 (2) (q- rear+1) % MAXSIZE (3) q- num+ (4) q- dataq- front (5) (q- front+1)%MAXSIZE 【试题解析】 (1)新建的队列中元素个数应为 0; (2)向循环队列中添加新元素后,队尾指针应向后移动一位; (3)向循环队列中添加新元素后,队列中元素个数应增 1; (4)取出队首位置的元素; (5)从循环队列中取出一个元素后,队首指针应向后移动一位。 3 【正确答案】 (1) *s=str(2) p=root(3) p=NULL (4) parent- Rch(5) parent- Lch 【试题解析
23、】 本题考查二叉排序树在链表存储结构上的运算。 函数 insert_BST(char *str)的功能是对给定的字符序列 str按照 ASC 码值大小关系创建二叉排序树,并返回指向树根结点的指针,序列中重复出现的字符只建一个结点,并由结点中的 Count域对字符的重复次数进行计数。 根据 程序代码中对字符序列中字符的引用情况,可知需要在空 (1)处定义字符指针 s,其初值应为参数 str的值。 for语句的作用是对序列中的每个字符 *s,用while循环从树根结点出发查找 *s所在结点。由于 while的条件 p为非空指针时循环,因此此前应设置 p的初值,显然空 (2)是为 p没初值 root
24、,从而对每个字符 *s都可以从树根出发,开始查找结点。若树中已存在当前字符 *s的结点,则 *s字符的计数值加 1,并结束对该字符的查找过程,若树中不存在 *s的结点,则会进入树的一个空子树 (以 p为空表示 ),因此空 (3)处应填入 “p=NULL”或 “中 !p”。 插入新的结点时,需要建立其与父结点的关系,在查找结点的过程中 parent表示待插入结点的父结点。因此根据二叉排序树的定义,待插入元素的值大于其父结点的值,则作为右子结点插入,否则作为左子结点插入。所以,空 (4)、 (5)分别填入 parent- Rch和 parent- Lch。 4 【正确答案】 (1) B- link
25、 (2) A- element=B- element (3) B=B- link (4) A link!=NULL (5) last- link=NULL 【试题解析】 本题用链表表示集合,通过比较链表的元素值判断集合的元素之间的关系。第一个 while循环的条件是链表 B指针不指向空,即空 (1)应填 “B-link”。由于 A, B两集合都是按递增排列的,则如果 A中的元素小于 B中的元素, A中元素直接放入集合 C中,集合 A指向其下一个元素;如果 A中的元素等于 B中的元素,集合 A, B分别指向下一个元素,即空 (21填 “A- element=B-element”;如果 A中的元素
26、大于 B中的元素,集合 B指向其下一个元素,即空 (3)填 “B=B- link”。第二个循环的条件是链表 A指针不指向空时,将 A中元素直接加入到 C中,即空 (4)填 “A- link!=NULL”。将链表 C最后节点指针指向空,即空 (51填 “last- link=NULL”。 5 【正确答案】 (1) FileSystemObject (2) CommonDialog1.filename (3) ts.ReadAll (4) ts. Write Text1.Text (5) Text1.SelLength 【试题解析】 (1)FSO对象的声明格式是: Dim对象名 As New Fi
27、leSystemObject; (2)文件对话框中选中的文件名称 (含磁盘路径 )包含在 filename属性中; (3)此处要获取文件的全部内容,因此需用 ReadAll方法读取整个文件; (4)此处要将文本框内容 Text1.Text更新至文件,应使用 Write方法一次性写入; (5)文本框中是否选定了内容可以根据属性 SelLength (选定长度 )是否为零来判断。 6 【正确答案】 (1)Shape (2)XCircle (3)displayIt() (4)Shape* (5)getShapeInstance(type) (6)ddete s 【试题解析】 这是一道考查用接口实现类
28、的功能扩充的程序分析题。本试题的解答思路如下。 由于 C+具有多继承性,因此在 C+实现中,通常采用多继承来代替接口。 由题干关键信息 “某绘图系统存在 Point、 Line和 Square 3种图元,它们具有Shape接口 现要将 Circle图元加入此绘图系统以实现功能扩充 ”可知,试题明确要求 Circle具有 Shape接口,因此 (1)空缺处应填入 “Shape”。 由于【 C+代码 5-1】既使用了 XCircle,又遵循了 Shape规定的接口,即重用XCinle类而不用从头开发一个新的 Circle类。因此,凡是 Circle类实现 Shape的接口时,都应调用相应的 XCi
29、rcle类提供的方法。即 (2)空缺处应填入 “Xcircle”, (3)空缺处应填入 “displayIt()”。 通过阅读【 C+代码 5-2】程序,由于 (5)空缺处调用 factory对象的方法,而类Factory只有一个方法为 getShapeInstance,因此 (5)空缺处应填入“getShapeInstance(type)”。其中,参数 type为用户运行程序时指定的参数,表明需要生成哪种类型的对象。 同理,由于 s是 Shape*类型,因此 (4)空缺处所在的语句 “getShapeInstance(int type)”的返回值类型为 Shape*,即 (4)空缺处应填入
30、“Shape*”。 由于程序退出前需要释放指针 s所占用的内存空间,因此 (6)空缺处应填入 “delete s”。 7 【正确答案】 (1) Figure (2) height*width (3) rectangle (4) super(width,width) (5) Figure 【试题解析】 本题考查 Java编程。 Figure类是一个抽象类,其他三个类 rectangle、 square、 triangle都要直接或间接继承该类,所以 (1) (5)处应为 “Figure”。 (2)处是要计算矩形面积,矩形面积等于长乘以宽,所以 (2)处应为 “height*width”。正方形是一个特殊的矩形,所以可以继承矩形类,所以 (3)处应为 “rectangle”, (4)处应为 “super(width,width)”。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1