[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷19及答案与解析.doc
《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷19及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷19及答案与解析.doc(17页珍藏版)》请在麦多课文档分享上搜索。
1、软件水平考试(初级)程序员下午(应用技术)模拟试卷 19及答案与解析 1 阅读以下说明和流程图,将应填入 (n)处的字句写在对应栏内。 说明 下面的流程图用于统计一个英文句子中单词的个数 N。假设该英文句子中只含字母、空格和句点 “.”,其中句点表示结尾,空格之间连续的字母串称为单词。 流程图 2 阅读下列函数说明和 C函数,将应填入 (n)处的字句写在对应栏内。 函数 2.1说明 下面程序的功能是:将由键盘输入的某个十进制数转换成对应的 R进制数并输出。这里 R是 2到 16的整数,由键盘输入。例如, 输入 n=128, base=13后的输出为 9B。 函数 2.1 #include st
2、dio.h main() char b16=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F; int c64,n,i=0,base; printf(“Enter a number:“);scaaf(“%d“, printf(“Enter new base:“);scanf(“%d“, doci=(1); i+; n=n/base; while(2); printf(“Transmit new base:“); for(- -i;i =0;- -i)printf(“%c“,(3); 函数 2.2说明 所谓回文字符中是指正序和逆序拼写相同的字符串,例如 astrtsa, adgdt
3、dgda等。下面函数 int fun(char *str)的功能是判断字符串 str是否是回文,当字符串是回文时,函数返回 1,否则返回 0。 函数 2.2 int fun(char *str) int i,j,l; for(i=0;stri! =0;i+); l=i/2; for(j=0,i- -;j =1;(4) if(5) return 0; return 1; 3 阅读下列函数说明和 C函数,将应填入 (n)处的字句写在对应栏内。 说明 邻接表是图的一种顺序存储与链式存储结合的存储方法。其思想是:对于图 G中的每个顶点 vi,将所有邻接于 vi的顶点 vj连成一个单链 表,这个单链表就
4、称为顶点 vi的邻接表,其中表头称作顶点表结点 VertexNode,其余结点称作边表结点EdgeNode。将所有的顶点表结点放到数组中,就构成了图的邻接表 AdjList。邻接表表示的形式描述如下: #define MaxVerNum 100 /*最大顶点数为 100*/ typedef struct node /*边表结点 */ int adjvex; /*邻接点域 */ struct node *next; /*指向下一个边表结点的指针域 */ EdgeNode; typedef struct vnode /*顶点表结点 */ int vertex; /*顶点域 */ EdgeNode
5、*firstedge; /*边表头指针 */ VertexNode; typedef VertexNode AdjListMaxVerNum; /*AdjList是邻接表类型 */ typedef struct AdjList adjlist; /*邻接表 */ int n; /*顶点数 */ ALGraph; /*ALGraph是以邻接表方式存储的图类型 */ 深度优先搜索遍历类似于树的先根遍历,是树的先根遍历的推广。 下面的函数利用递归算法,对以邻接表形式存储的图进行深度优先搜索:设初始状态是图中所有顶点未曾被访问,算法从某顶点 v出发,访问此顶点,然后依次从v的邻接点出发进行搜索,直至所
6、有与 v相连的顶点都被访问;若图中尚有顶点未被访问 ,则选取这样的一个点作起始点,重复上述过程,直至对图的搜索完成。程序中的整型数组 visited的作用是标记顶点 i是否已被访问。 函数 void DFSTraverseAL(ALGraph *G)/*深度优先搜索以邻接表存储的图 G*/ int i; for(i=0;i (1);i+) visitedi=0; for(i=0;i (1);i+)if(2) DFSAL(G,i); void DFSAL(ALGraph *G,int i) /*从 Vi出发对邻接表存储的 图 G进行搜索 */ EdgeNode *p; (3); p=(4); w
7、hile(p!=NULL) /*依次搜索 Vi的邻接点 Vj*/ if(! visited(5) DFSAL(G,(5); p=p- next; /*找 Vi的下一个邻接点 */ 4 阅读下列函数说明和 C函数,将应填入 (n)处的字句写在对应栏内。 说明 Kruskal算法是一种构造图的最小生成树的方法。设 G为一无向连通图,令 T是由 G的顶点构成的于图, Kmskal算法的基本思想是为 T添加适当的边使之成为最小生成树:初始时, T中的点互相不连通;考察 G的边集 E中的每条边,若它的两个顶点在 T中不连通,则将此边添加到 T中,同时合并其两顶点所在的连通分量,如此下去,当添加了 n-1
8、条边时, T的连通分量个数为 1, T便是 G的一棵最小生成树。 下面的函数 void Kruskal(EdgeType edges,int n)利用 Kruskal算法,构造了有 n个顶点的图 edges的最小生成树。其中数组 father用于 记录 T中顶点的连通性质:其初值为 fatheri=-1 (i=0,1,n -1),表示各个顶点在不同的连通分量上;若有fatheri=j, j -1,则顶点 i, j连通;函数 int Find(int father,int v)用于返回顶点 v所在树形连通分支的根结点。 函数 #define MAXEDGE 1000 typedef struct
9、 int v1; int v2; EdgeType; void Kruskal(EdgeType edges,int n) int fatherMAXEDGE; int i,j,vf1,vt2; for(i=0;i n;i+ +) fatheri=-1; i=0; j=0; while(i MAXEDGE vf2=Find(father,edgesi.v2); if(2) (3)=vf1; (4); printf(“%3d%3dn“,edgesi.v1,edgesi.v2); (5); int Find(int father,int v) int t; t=v; while(fathert =
10、0) t=fathert; return(t); 5 阅读以下应用说明及 Visual Basic程序代码,根据要求回答问题 1至问题 4。 说明 某文件管理系统的图片浏览器如图 3-19所示。运行程序时,用户只要通过驱动器列表 框、目录列表框和文件列表框,选择文本文件所在的驱动器、文件夹及相应的文件名后,在图像框中将显示出相应的文件图像。 在开发过程中,假设驱动器列表框名为 drvFile,目录列表框名为 dirFile,文件列表框名为 filFile,选择文件类型组合框名为 cboFile,图像框名为 IMG onClick=over(this) title=放大 Show。 图 3-19
11、 图片浏览器 Visual Basic程序 Private Sub Form_Load () IMG onClick=over(this) title=放大 Show.Stretch=True cboFile.Addltem “位图文件 (*.bmp)“ cboFile.Addltem “图标文件 (*.ico)“ cboFile.Addltem “图元文件 (*.wmf)“ cboFile.Addltem “JPEG文件 (*.jpg)“ cboFile.Addltem “GIF文件 (*.gif)“ cboFile.ListIndex = 0 (1) End Sub Private Sub
12、 drvFile_Change () (2) End Sub Private Sub dirFile_Change () (3) End Sub Private Sub cboFile_Click () (4) Case 0 filFile. Pattern= “*.bmp“ Case 1 filFile. Pattern= “*.ico“ Case 2 filFile. Pattern= “*.wmf“ Case 3 filFile. Pattern= “*.jpg. Case 4 filFile. Pattern= “*.gif“ End Select End Sub Private Su
13、b filFile_Click() If (5) Then IMG onClick=over(this) title=放大 Show. Picture= LoadPieture(filFile. Path+ filFile.FileName) Else IMG onClick=over(this) title=放大 Show. Picture= LoadPicture( (6) + “ + (7) ) End If End Sub 5 请根据 说明 和图 3-19的显示结果,从以下备选答案 中为程序 (1) (7)空缺处选择正确的答案。 备选答案 A. filFile.path B. dirF
14、ile.Path=drvFile.Drive C Right(filFile.Path, 1) = “ D filFile.Pattern =“*.bmp“ E filFile.Path = dirFile.Path F filFile.FileName G Select Case cboFile.ListIndex 6 filFile.Pattern属性用于指定文件列表框中所显示的文件类型。若要同时显示 *.jpg和 *.gif两种文件类型, filFile.Pattern的属性值应如何设置 ? 7 若要在图 3-19窗口 (窗体名为 frm001)中新增一个命令按钮,单击该命令按钮后,图像
15、框所显示的图像就会成为此窗口的背景图像。请写出该命令按钮单击事件过程内的程序代码。 8 假设某应用程序开发工程 (默认的工程名为 “工程 1”)已先后创建了名为 Form01和Form02的两个窗体。为使窗体 Form02成为运行该工程时的启动窗体,在开发 过程应进行的操作过程如下。 在工程对话框中,用鼠标右键单击 “工程 1(工程 1)”,在选择 (8)命令,系统弹出如图 3-20所示的对话框。切换至图 3-20的 “通用 ”选项,在 “(9)”下拉列表框中,选择 “ (10)”。 9 阅读以下应用说明、图和 C+程序,将 C+程序中 (1) (6)空缺处的语句填写完整。 【说明】 以下【
16、C+程序】用于实现两个多项式的乘积运算。多项式的每一项由类 Item描述,而多项式由类 List描述。类 List的成员函数主要有: createList():创建按指 数降序链接的多项式链表,以表示多项式: reverseList():将多项式链表的表元链接顺序颠倒: multiplyList(ListL1, ListL2)计算多项式 L1和多项式 L2的乘积多项式。 【 C+程序】 #include iostream.h class List; class Item friend class List; private: double quot ; int exp ; Item *next
17、; Public: Item(double_quot,int_exp) (1) ; ; class List private: Item *list; Public: List() list=NULL: void reverseList(); void multiplyList(List L1,List L2); void createList(); ; void List:createList() Item *p,*U,*pre; int exp; double quot; list = NULL; while (1) cout “输入多项式中的一项 (系数、指数 ) :“ endl; ci
18、n quot exp: if ( exp 0 ) break ; /指数小于零,结束输入 if ( quot=0 ) continue; p = list; while ( (2) ) /查找插入点 pre = p; p = p- next; if ( p != NULL continue ; u =(3); if (p = list) list = u; else pre- next = u; u - next = p; void List:reverseList() Item *p, *u; if ( list=NULL ) return; p = list - next; list -
19、next = NULL; while ( p != NULL) u = p - next; p - next = list; list = p; p = u; void List:multiplyList ( List L1, List L2 ) Item *pL1,*pL2,*u; int k, maxExp; double quot; maxExp =(4): L2.reverseList(); list=NULL; for ( k = maxExp;k = 0;k- ) pL1 = L1.list; while ( pL1 != NULL pL2 = L2.1ist; while (pL
20、2 NULL quot = 0.0; while (pL1 != NULL pL2 = pL2 - next; else if ( pL1 - exp + pL2 - exp k ) pL1 = pL1 - next; else pL2 = pL2 - next; if ( quot !=0.0 ) u = new item( quot, k ); u - next = list; list = u; reverseList (); L2. reverseList (): void main() List L1,L2,L; cout “创建第一个多项式链表 n“; L1.createList(
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 软件 水平 考试 初级 程序员 下午 应用技术 模拟 19 答案 解析 DOC
