[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷34及答案与解析.doc
《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷34及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷34及答案与解析.doc(13页珍藏版)》请在麦多课文档分享上搜索。
1、软件水平考试(初级)程序员下午(应用技术)模拟试卷 34及答案与解析 1 阅读下列算法说明和算法,将应填入 (n)处的语句写在对应栏内。 1. 【说明】 实现连通图 G的深度优先遍历 (从顶点 v出发 )的非递归过程。 【算法】 第一步:首先访问连通图 G的指定起始顶点 v; 第二步:从 V出发,访问一个与 v(1)p,再从顶点 P出发,访问与 p(2)顶点 q,然后从 q出发,重复上述过程,直到找不到存在 (3)的邻接顶点为止。 第三步:回退到尚有 (4)顶点,从该顶点出发,重复第二、三步,直到所 有被访问过的顶点的邻接点都已被访问为止。 因此,在这个算法中应设一个栈保存被 (5)的顶点,以
2、便回溯查找被访问过顶点的未被访问过的邻接点。 2 阅读以下函数说明和 C语言函数,将应填入 (n)处的字句写在对应栏内。 【说明】 实现矩阵 (3行 3列 )的转置 (即行列互换 )。 例如,输入下面的矩阵: 100 200 300 400 500 600 700 800 900 程序输出: 100 400 700 200 500 800 300 600 900 【函数】 int fun(int array33) int i,j,t; for(i=0;(1);i+) for(j=0;(2);j+) t=arrayij; (3); (4); main() int i,j; int array33
3、=100,200,300,400,500,600,700,800,900; clrscr(); for (i=0;i 3;i+) for(j=0;j 3;j+) printf(“%7d“,arrayij); printf(“n“); fun(5); printf(“Converted array:n“); for(i=0;i 3;i+) for(j=0;j 3;j+) printf(“%7d“,arrayij); printf(“n“); 3 阅读以下函数说明和 C语言函数,将应填入 (n)处的字句写在对应栏内。 【说明】 对 20个数进行排序,可以利用选择法,即从后 19个比较过程中,选择一
4、个最小的与第 一个元素交换,依次类推,即用第二个元素与后 18个进行比较,并进行交换。 【函数】 #define N 20 main() int i,j,min,tem,aN; printf(“please input twenty num:n“); for(i=0;i N;i) printf(“a%d=“,i); scanf(“%d“, printf(“n“); for(i=0;i N;i) printf(“,“,ai); printf(“n“); for(i=0;(1);i) min=(2); for(j=(3);j N;j+) if(4) min=j; tem=ai; (5); amin
5、=tem; printf(“After sorted n“); for(i=0;i N;i+) printf(“,“,ai); 4 阅读以下函数说明和 C语言函数,将应填入 (n)处的字句写在对应栏内。 【说明】 已知某数列的前两项为 2和 3,其后继项根据当前最后两项的乘积按下列规则生成: (1)若乘积为一位数,则该乘积即为数列的后继项; (2)若乘积为二位数,则 该乘积的十位数和个位数依次作为数列的两个后继项。 本程序输出该数列的前 n项以及它们的和。其中,函数 sum(n,pa)返回数列的前 n项之和,并将生成的前 n项存放于首指针为 pa的数组中。程序中规定输入的 n值必须大于 2并且
6、不超过给定的常数值 MAXNUM。 例如:若输入 n值为 10,则程序输出如下内容: sum(10)=44 2 3 6 1 8 8 6 4 2 4 #include stdio.h #define MAXNUM 100 int sum(int n,int *pa) int count,total,temp; *pa=2; (1)=3; total=5; count=2; while(count+ n) temp+=*(pa-1)*pa; if(temp 10) total+=temp; *(+pa)=temp; else (2)=temp/10; total+=*pa; if(count n)
7、 count+;pa+; (3)=temp%10; total+=*pa; (4); main() int n,*p,*q,numMAXNUM; do printf(“Input N=?(2 N %d):“,MAXNUM+1); scanf(“%d“, while(5); printf(“nsum(%d)=%dn“,n,sum(n,num); for(p=num,q= (6) ;p q;p+)printf(“%4d“,*p); printf(“n“); 5 阅读以下说明,以及用 C+在开发过程中所编写的程序代码,将应填入 (n)处的字句写在对应栏内。 【说明】 在下面程序横线处填上适当的字句,
8、 3个 (2)空填的是一样的。使其输出结果为: x=5 x=6 y=7 x=8 z=9 【程序】 #include iostream.h class X1 int x; (1); X1(int xx=0)x=xx; (2) void Output() cout “x=“ x end; ; (3) Y1:public X1 int y; public: Y1(int xx=0,int yy=0);X1(xx)y=yy; (2) void Output() (4) Output(); cout “y=“ y endl; ; class Z1:public X1 int z: (5); Z1(int
9、 xx=0,int zz=0):X1(xx)(z=zz; (2) void Output() X1 Output(); cout “z=“ z endl; ; void main() X1 a(5);Y1 b(6,7);Z1 c(8,9); X1*p3= For(int i=0;i 3;i+) pi- Output();cout endl; 6 阅读以下说明, Java代码将应填入 (n)处的字句写在对应栏内。 【说明】 链表和栈对象的共同特征是:在数据上执行的操作与在每个对象中实体存储的基本类型无关。例如,一个栈存储实体后,只要保证最后存储的项最先用,最先存储的项最后用,则栈的操作可以从链表
10、的操作中派生得到。程序 6-1实现了链表的操作,程序 6-2实现了栈操作。 import java.io.*; class Node /定义结点 private String m_content; private Node m_next; Node(String str) m_content=str; m_next=null; Node(String str,Node next) m_content=str; m_next=next; String getData() /获取结点数据域 return m_content; void setNext(Node next /设置下一个结点值 m_n
11、ext=next; Node getNext() /返回下一个结点 return m_next; ) 【程序 6-1】 class List Node Head; List() Head=null; void insert(String str) /将数据 str的结点插入在整个链表前面 if(Head=null) Head=new Node(str); else (1) void append(String str) /将数据 str的结点插入在整个链表尾部 Node tempnode=Head; it(tempnode=null) Heed=new Node(str); else whit
12、e(tempnode.getNext()!=null) (2) (3) String get() /移出链表第一个结点,并返回该结点的数据域 Srting temp=new String(); if(Head=null) System.out.println(“Errow! from empty list!“) System.exit(0); else temp=Head.getData(); (4) return temp; 【程序 6-2】 class Stack extends List void push(String str) /进栈 (5) String pop() /出栈 ret
13、urn get(); 软件水平考试(初级)程序员下午(应用技术)模拟试卷 34答案与解析 1 【正确答案】 (1)邻接的顶点 (2)邻接的且未被访问的 (3)未访问过 (4)未被访问过的邻接点的 (5)访问过 【试题解析】 本题考查连通图的深度优先遍历算法的非递归过程。 在做题前,我们首先来了解一下图的遍历。和树的遍历类似,图的遍历也是从某个顶点出发,沿着某条搜索路径对图中每个顶点各做一次且仅做一次访问。 连通图的深度优先遍历可定义如下:首先访问出发点 v,并将其标记为已访问过;然后依次从 v出发搜索 v的每个邻接点 w。若 w未曾访问过,则以 w为新的出发点继续进行深度优先遍历,直至图中所有
14、和源点 v有路径相通的顶点 (亦称为从源点可达的顶点 )均已被访问为止。其关键是每次遍历都是往下直到最后再往回搜索,找到还未被访问过的邻接点的顶点,然后从该顶点出发,对它及下面的顶点进行深度 优先遍历。下面来具体分析其算法。 第 (1)空在第二步中,在访问起始顶点 v后应该访问的结点,那么这个结点肯定是与起始顶点 v邻接的顶点,因此此空答案为 “邻接的顶点 ”。 第 (2)空是在访问 p顶点后应该访问的顶点,接下来应该也是访问与 p顶点邻接的顶点,但这个时候 p顶点的邻接顶点中有已经被访问过了的顶点,因此在访问前还需判断此顶点是否被访问过了,所以此空答案为 “邻接的且未被访问的 ”。 第 (3
15、)空也在第二步中,结合前后的内容,可以知道此空是要判断是否还可以找到与当前访问顶点邻接而未被访问的顶点,根据上 面分析,如果找不到,才往回搜索,因此此空答案为 “未访问过 ”。 第 (4)空是回退过程中要注意的地方,一般回退到还未被访问过的邻接点的顶点,接着访问这个未被访问过的邻接点。因此此空答案为 “未被访问过的邻接点的 ”。 第 (5)空是存放在栈中的内容,栈具有后进先出的特点,根据上面对深度优先遍历的分析可以知道,在回退的过程中需要用到被访问过的顶点,而且回退的过程是按遍历的顶点的顺序回退的,越后被访问的顶点越先被回退,因此此空答案是“访问过 ”。 2 【正确答案】 (1)i 3 (2)
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 软件 水平 考试 初级 程序员 下午 应用技术 模拟 34 答案 解析 DOC
