[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷48及答案与解析.doc
《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷48及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷48及答案与解析.doc(16页珍藏版)》请在麦多课文档分享上搜索。
1、软件水平考试(初级)程序员下午(应用技术)模拟试卷 48及答案与解析 1 阅读以下说明和算法,完善算法并回答问题,将解答写在对应栏内。 说明 假设以二维数组 G1m,1n表示一幅图像各像素的颜色,则 Gi,j表示区域中点 (i,j处的颜色,颜色值为 0到 k的整数。 下面的算法将指定点 (i0,j0)所在的同色邻接区域的颜色置换为给定的颜色值。约定所有与点 (i0,j0)同色的上、下、左、右可连通的点组成同色邻接区域。 例如,一幅 89像素的图像如图 1-1所示。设用户指定点(3,5),其颜色值为 0, 此时其上方 (2,5)、下方 (4,5)、右方 (3,6)邻接点的颜色值都为0,因此这些点
2、属于点 (3,5)所在的同色邻接区域,再从上、下、左、右四个方向进行扩展,可得出该同色邻接区域的其他点 (见图 1-1中的阴影部分 )。将上述同色区域的颜色替换为颜色值 7所得的新图像如图 1-2所示。 算法 输入:矩阵 G,点的坐标 (i0,j0),新颜色值 newcolor。 输出:点 (i0,j0)所在同色邻接区域的颜色置换为 newcolor之后的矩阵 G。 算法步骤 (为规范算法,规定该算法只在第七步后结束 ): 第一步:若点 (i0,j0)的颜色值与新颜色值 newcolor相同,则 (1); 第二步:点(i0,j0)的颜色值 oldcolor ;创建栈 S,并将点坐标 (i0,j
3、0)入栈; 第三步:若 (2),则转第七步; 第四步:栈顶元素出栈 (x,y) ,并 (3); 第五步: 1) 若点 (x,y-1)在图像中且 Gx,y-1等于 oldcolor,则 (x,y-1)入栈 S; 2) 若点 (x,y+1)在图像中且 Gx,y+1等于 oldcolor,则 (x,y+1)入栈 S; 3) 若点 (x-1,y)在图像中且 Gx-1,y等于 oldcolor,则 (x-1,y)入栈 S; 4) 若点 (x+1,y)在图像中且 Gx+1,y)等于 oldcolor,则 (x+1,y)入栈 S: 第六步:转 (4); 第七步:算法结束。 问题 是否可以将算法中的栈换成队列
4、 ?回答: (5)。 2 阅读下列函数说明和 C函数,将应填入 (n)处的字句写对应栏内。 说明 二叉树的二叉链表存储结构描述如下: typedef struct BiTNode datatype data; struct BiTNode *lchild, * rchild; /*左右孩子指针 */ BiTNode,* BiTree; 对二叉树进行层次遍历时,可设置一个队列结构,遍历从二叉树的根结点开始,首先将根结点指针入队列,然后从队首取出一个元素,执行下面两个操作: (1) 访问该元素所指结点; (2) 若该元素所指结点的左、右孩子结点非空,则将该元素所指结点的左孩子指针和右孩子指针顺序入
5、队。 此过程不断进行,当队列为空时,二叉树的层次遍历结束。 下面的函数实现了这一遍历算法,其中 Visit(datatype a)函数实现了对结点数据域的访问,数组 queueMAXNODE用以实现队列的功能,变量 front和 rear分别表示当前队首元素和队尾元素在数组中的位置。 函数 void LevelOrder(BiTree bt) /*层次遍历二叉树 bt*/ BiTree QueueMAXNODE; int front,rear; if(bt= =NULL)return; front=-1; rear=0; queuerear=(1); while(front (2) ) (3)
6、; Visit(queuefront- data); /*访问队首结点的数据域 */ if(queuefront lchild!: NULL) rear+; queuerear=(4); if(queuefront- rchild! =NULL) rear+; queuerear=(5); 3 阅读以下函数说明和 C语言函数,将应填入 (n)处的字句写在对应栏内。 说明 某银行共发出 M张储蓄卡,每张储蓄卡拥有唯一的卡号,每天每张储蓄卡至多支持储蓄卡持有者的 N笔 “存款 ”或 “取款 ”业务。程序中用数组 cardMN+3中的每一行存放一张储蓄卡的有关信息,其中: cardi0存放第 i张卡
7、的卡号; cardi1存放第 i张卡的余额; cardi2存放第 i张卡的当日业务实际发生笔数; cardi3 cardiN+2存放第 i张卡的当日存取款金额,正值代表存款,负值代表取款。 当持卡者输入正确的卡号、存款或取款金额后,程序进行相应的处理;若输入不正确的数据,程序会提示持卡者重新输入;若输入的卡号为负数时,银行终止该卡的当日业务。 C程序 #include stdio.H #define M 6 #define N 5 long cardMN+3=9801,2000,0,9812,2000,2,9753,3000,1, 8750,500,0,9604,2800,3,),(8901,
8、5000,5,; int locate(long cardN+3,int m,long no) int i; for(i=0;i m;i+) if(1)=no) return i; (2); main() long cardNo,money; int k; while(1) printf(“请输入卡号 :n“); scanf(“%1d“, if(cardNo 0) break; k=locate(card,M,cardNo); if(k=-1) printf(“不存在 %id号的储蓄卡 n“,cardNo); continue; printf(“请输入金额 (正值代表存款,负值代表取款 ):n
9、“); scanf(“%id“, if(cardk1+money 0) printf(“存款余额不足 ,不能完成本次的取款业务 n“); continue; if(cardk2=N) printf(“已完成本卡的当日业务 n“); continue; /*处理一笔业务的数据 */ cardk (3)=money; (4); (5); 4 已知一棵二叉树用二叉链表存储, t指向根节点, P指向树中任一节点。下列算法为输出从 t到 P之问路径上的节点。 C程序 #define MaxSize 1000 typedef struct node TelemType data ; struct node
10、 *ichiid, *rchiid; BiNode, *BiTree; void Path(BiTree t, BiNode *P) BiTree *stackMaxsize, *stacklMaxsize,*q; int tagMaxsize, top=0, topl; q=t; /*通过先序遍历发现 P*/ dowhile(q!=NULL q!=p) /*扫描左孩子, _日相应的节点不为 P*/ (1) ; stacktop=q; tagtop=0; (2) ; if(top 0) if(stacktop=P) break; /*找到 P,栈底到栈顶为 t到 P*/ if(tagtop=1
11、)top-; else q=stacktop; q=q- rchiid; tagtop=1; (3) ; top-; topl=0; while(top 0) q=stacktop; /*反向打印准备 */ topl+; (4) ; top-; while( (5) ) /*打印栈的内容 */ q=stackltoplj printf(q- data); topl-; 5 阅读以下应用说明及 Visual Basic程序代码,根据要求回答问题 1至问题 4。 【说明】 某学期成绩管理系统的 “增、删、改数据表中的记录 ”对话框如图 1-19所示。 图 1-19对话框中共定义了 6个标签、 6个
12、文本框、 4个命令按钮和 1个 Data数据控件。其中 Data数据控件是 Visual Basic的标准控件。利用它能方便地创建应用程序与数据库之间的连接,并实现对数据资源的访问。【添加】 (cmdAdd)按钮用于向学生成绩数据表添加一条空记录:【修改】 (cmdEdit)按钮用于修改当前所显示的一条数据记录:命令按钮【删除】 (cmdDelete)用于删除当前显示的一条数据记录;单击【退出】 (cmdExit)按钮,系统将退出图 1-19所示的对话框。 表 1-13是学生成绩表结构的示例;表 1-14是学生成绩表的示例。 图 1-19将表 1-14数据 库中的记录信息显示到相应的文本框中。
13、要在各文本框 (txtStu(i), i=0,1,2,3,4,5)中显示 Data数据控件所连接的数据表中的数据,必须将文本框与 Data数据控件进行绑定。【 Visual Basic程序】 Private Sub Form_Load() For i = 0 To 5 txtStu(i).Locked = True Next iEnd Sub Private Sub cmdAdd Click() cmdEdit.Enabled = Not cmdEdit.Enabled (1) For i = 0 To 5 txtStu(i) .Locked = Not txtStu(i).Locked Ne
14、xt i If cmdAdd. Caption = “添加 “ Then (2) Datal.Caption = “新记录 “ cmdAdd.Caption = “保存 “ cmdExit.Caption = “取消 “ txtStu(0).SetFocus Else Datal.Recordset.Update (3) cmdAdd.Caption = “添加 “ End IfEnd SubPrivate Sub cmdEdit_Click() cmdAdd. Enabled = Not cmdAdd. Enabled cmdDelete. Enabled = Not cmdDelete.
15、Enabled For i = 0 To 5 txtStu(i).Locked = Not txtStu(i).Locked Next i If cmdEdit.Caption = “修改 “ Then Datal.Recordset.Edit cmdEdit.Caption = “保存 “ cmdExit.Caption = “取消 “Else (4) cmdEdit.Caption = “修改 “ End IfEnd SubPrivate Sub cmdDelete_Click() answer = MsgBox(“确实删除该记录吗 ?“, vbYesNo + vbQuestion, “警
16、告 “) If answer = vbYes Then Datal.Recordset.Delete (5) If Datal.Recordset.EOF Then (6) End If End IfEnd Sub Private Sub cmdExit_Click() If cmdExit.Caption = “退出 “ Then End Else (7) cmdAdd. Enabled= True cmdEdit.Enabled = True cmdDelete. Enabled= True For i = 0 To 5 txtStu(i).Locked = Not txtStu(i).L
17、ocked Next i cmdExit.Caption = “退出 “ cmdAdd.Caption = “添加 “ cmdEdit.Caption = “修改 “ (8) End IfEnd SubPrivate Sub Datal_Reposition() Datal.Caption = “第 “ /初始化构造函数 int seek(T c); void disp( ) for(int i=0;i n;i +) cout Ai “ “; cout endl: template class T Sample T : :Sample(T a ,int i) n=i: for( intj =0
18、;j i;j + ) (1); template class T int Sample T : seek( T c) int low =0,high = n-1 ,mid; while(2) mid = (low + high)/2; if(3) return mid; else if( (4) ) low=mid+|; else (5); return-1; void main( ) char a =“acegkmpwxz“; Sample char s(a, 1); cout “元素序列 :“ ;s. disp( ); cout “元素 g的下标 :“ s. seek(g) endl; 1
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 软件 水平 考试 初级 程序员 下午 应用技术 模拟 48 答案 解析 DOC
