[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷16及答案与解析.doc

上传人:livefirmly316 文档编号:507360 上传时间:2018-11-29 格式:DOC 页数:11 大小:176KB
下载 相关 举报
[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷16及答案与解析.doc_第1页
第1页 / 共11页
[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷16及答案与解析.doc_第2页
第2页 / 共11页
[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷16及答案与解析.doc_第3页
第3页 / 共11页
[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷16及答案与解析.doc_第4页
第4页 / 共11页
[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷16及答案与解析.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、软件水平考试(初级)程序员下午(应用技术)模拟试卷 16及答案与解析 1 阅读以下说明和流程图,将应填入 (n)处的字句写在对应栏内。 说明 设学生某次考试的成绩按学号顺序逐行存放于某文件中,文件以单行句点 “.”为结束符。下面的流程图读取该文件,统计出全部成绩中的最高分 max和最低分 min。2 阅读下列程序说明和 C程序,将应填入 (n)处的字句写在对应栏内。 函数 2.1说明 下面程序的功能是计算 x和 y的最小公倍数。 函数 2.1 main() int m,n,d,r; seanf(“%d %d“, if(m n) r=m;m=n;n=r; (1); while (d%n! =0)

2、 (2); printf(“%dn“,d); 函数 2.2说明 下述程序接收键盘输入,直到句点 “.”时结束。输入的字符被原样输出,但连续的空格输入将转换成一个空格。 函数 2.2 #include stdio.h main() char c,preChar=0; c = getchar(); while(c! = .) if(3) putchar(c); else if(preChar! = ) putchar(c); (4); c=(5); 3 阅读下列函数说明和 C函数,将应填入 (n)处的字句写在对应栏内。 说明 二叉树的二叉链表存储结构描述如下: lypedef struct BiT

3、Node datatype data; street BiTNode *lchiht, *rchild; /*左右孩子指针 */ BiTNode, *BiTree; 下列函数基于上述存储结构,实现了二叉树的几项基本操作: (1) BiTree Creale(elemtype x, BiTree lbt, BiTree rbt):建立并返回生成一棵以 x为根结点的数据域值,以 lbt和 rbt为左右子树的二叉树; (2) BiTree InsertL(BiTree bt, elemtype x, BiTree parent):在二叉树 bt中结点 parent的左子树插入结点数据元素 x; (3

4、) BiTree DeleteL(BiTree bt, BiTree parent):在二叉树 bt中删除结点 parent的左子树,删除成功时返回根结点指针,否则返回空指针; (4) frceAll(BiTree p):释放二叉树全体结点空间。 函数 BiTree Create(elemtype x, BiTree lbt, BiTree rbt) BiTree p; if (p = (BiTNode *)malloc(sizeof(BiTNode)= =NULL) return NULL; p- data=x; p- lchild=lbt; p- rchild=rbt; (1); BiTr

5、ee InsertL(BiTree bt, elemtype x,BiTree parent) BiTree p; if (parent= =NULL) return NULL; if (p=(BiTNode *)malloc(sizeof(BiTNode)= =NULL) return NULL; p- data=x; p- lchild= (2); p- rchild= (2); if(parent- lchild= =NULL) (3); else p- lchild=(4); parent- lchild=p; return bt; BiTree DeleteL(BiTree bt,

6、BiTree parent) BiTree p; if (parent= =NULL|parent- lchild= =NULL) return NULL; p= parent- lchild; parent- lchild=NULL; freeAll(5); return bt; 4 阅读下列程序说明和 C程序,将应填入 (n)处的字句写在对应栏内。 说明 本程序将自然数 1, 2, , N2(N=5)按蛇形方式逐个顺序存入 N阶矩阵。令 n=N-1,则矩阵中的每一元素可用 aij标记,其中 i,j(0i, jn)分别为其所在行的行号和所在列的列号。蛇形方式顺序存放的方法是从 an0开始、到

7、 a0n为止,依次填 入由 1递增的自然数,交替地对每一斜列从左上角向右下角或从右下角向左上角排列。程序的输出为: 程序 #include stdio.h #include math.h #define SIZE.10int aSIZE SIZE,k;void write(int n) /*输出矩阵 */ int i,j; for(i=0;i =n;i+ +) for(j=0; j =nj j+ +) printf(“%4d“,aij); printf(“n“); void makeline(int row_start, int col_start, int row_end) /*完成矩阵一条

8、斜线的整数填写 */ int i,j, sign; sign=(1) =0)? 1:-1; for(i = row_start,j = col_start; (row_end-i) * sign =0; i+=sign,j+=sign) aij=(2);void makeArray(int n) /*完成矩阵每条斜线的整数填写 */ int d; for(d=1;d =(3);d+ +) if(d =n+1) if(d%2) makeline(4); else makeline(n+1-d,0,n); else if(d%2) makeline(5); else makeline(0,d-n-

9、1,2*n-d+1);void main() int n, N=5; k=1; n=N-1; makeArray(n); write(n); 5 阅读以下说明及 Visual Basic程序代码,将应填入 (n)处的字句写在对应栏内。 说明 下面的程序演示了根据随机产生的奖牌数,生成金银奖牌榜的 过程。程序使用的排序法是简单排序法。以金牌得数为例,其思想是选择最大的元素,将它交换到最前面;然后对剩下的部分采用同样的方法,直到全部排序完成。 程序界面中,左右两个文本框分别用于存放随机产生的奖牌数以及生成的奖牌榜,名为 Text1和Text2,上下两个按钮分别名为 Command1和 Comman

10、d2。代码中使用的量主要有:一维数组 cntries,用于存储 10个国家的名称,二维数组 medals,其元素medals(i,0)和 medals(i,1)分别用于存放第 i个 (i从 0开始 )国家的金、银牌数目。Visual Basic代码 Dim cntries(10) As String, medals(10,2) As Integer随机产生奖牌数Sub newMedals() 为数组 cntries和 medals赋值 End Sub输出奖牌榜 Sub printOut(txt As (1) ) Dim strResuh As String, i As Integer strR

11、esult=“国家 ”Data Souse=“ char name 10; int deg; (1) int sum; static int num; public: Stud(int n,char na,int d) no=n; deg=d; strcpy(name,na); (2); (3); static double avg() return (4); void disp() printf(“% -5d% -8s%3dn“,no,name,deg); ; int Stud: sum = 0; int Stud: num=0; void main() Stud s1(1,“Li“,81)

12、, s2(2,“Zhao“,84.5),s3(3,“Zhang“,87); printf(“nNo. Name Graden“); s1.disp(); s2.disp(); s3.disp(); printf(“Avg=%gnn“,(5); 8 阅读以下说明和 java代码,将应填入 (n)处的字句写在对应栏内。 说明 本程序使用类来管理员工的通讯地址信息。已知程序的输出为: 输出记录: 5 姓名:王丽华 街道地址:中华路 15号 市:襄樊市 省:湖北省 邮政编码: 430070 Java代码 public class Employee protected String (1); prote

13、cted String street; protected String city; protected String prov; protected String post; protected int no; public Empbyee() public Employee(String name,String street,String city,String prov,String post, (2) ) this.name=name; this.street=street; this.city=city; this.prov=prov; this.post=post; this.no

14、=no; public static void main(Stringargs) Employee emp=new Employee(“王华 ”, “中华路 15号 ”, “武汉市 ”, “湖北省 ”,“430070”, 1); emp.changeName(“王丽华 ”); (3) (“襄樊市 ”); emp.changeNo(5); (4); void changeName(String name)this.name=name; void changeStreet(String street)this.street=street; void changeCity(String city)t

15、his.city=city; void changeProv(String prov)this.prov=prov; void changeNo(int no)(5); void display() System.out.println(“输出记录: ”+this.no); System.out.Println(“姓名: ”+this.name); System.out.println(“街道地址: ”+this.street); System.out.println(“市: ”+this.city); System.out.println(“省: ”+this.prov); System.o

16、ut.println(“邮政编码: ”+this.post); 软件水平考试(初级)程序员下午(应用技术)模拟试卷 16答案与解析 1 【正确答案】 (1) maxa (2) mina (3) a=“.“ (4) a max或 amax或 max a或 maxa (5) a min或 amin或 min a或 mina 【试题解析】 本题用到的三个变量及其作用分别为: a,存放读入的一行数据;max存放最高分; min存放最低分。算法首先读入文件的第一行数据 a,若 a为文件结束符 “.”,则算法提前结束;否则为 max和 min赋初值 a,循环读入文件其余部 分,直至文件末尾。循环过程中,当

17、某行数据 a大于 max时,更新 max的值;当某行数据 a小于 min时,更新 min的值。 2 【正确答案】 (1)d=m (2) d+=m或 d=d+m (3) c!= (4) preChar=c (5) getchar() 【试题解析】 (1)下文使用了变量 d,因此需在此初始化,由下面循环的条件“d%n!=0” 知初值不能是 n,因此必为 m; (2)此处 while循环生成最小公倍数 d,其终止条件是 n整除 d,因此循环过程中需要保证 m整除 d并且 d尽可能地小,于是 d应以 m为增量递增; (3)当输入的字符非空格时,原样输出; (4)程序中变量 preChar用于记录上一次

18、读入的字符,循环过程中应不断更新其值; (5)接收下一个输入。 3 【正确答案】 (1) return p (2) NULL (3) parent- lchild=p (4) parent- lchild (5) p 【试题解析】 (1)此处应返回新建的二叉树; (2)新元素结点初始化时,数据域取值 x,左右孩子指针指向 NULL; (3)若 parent结点的左孩子结点空,则直接令其左孩子指针指向 p; (4)若 parent结点的左孩子结点不空,则让新结点 p充当其左子树的根; (5)此处需释放二叉树 p(parent的左子树 )所占用的空间。 4 【正确答案】 (1) row_end-r

19、ow_start (2) k+ (3) 2* n+1 (4) n,d-1,n+1-d (5) 2*n-d+1,n,0 【试题解析】 本程序中二维数组 a用于存放矩阵元素, k表示当前应存放的元素 (从 1开始递增的某个自然数 )。数据的填充按斜对角线进行, n+1阶矩阵的斜对角线有 2*n+1条 (包括两个单点 an0、 a0n。函数 makeArray对斜对角线进行编号,从矩阵左下角开始依次为 d=1, , 2*n,对于每条斜对角线,根据数据在其上的填充方式 (左上角到右下角还是右下角到左上角 )确定起点行号 row_start、列号 col_start以及终点行号 row_end,再调用函

20、数 makeline为这条线上填数。makeline函数根据 row_end-row_start的正负判断数值填充方式。 5 【正确答案】 (1) TextBox (2) ByRef (3) medals(k,0) medals(j,0) (4) Exit For (5) medals(k,1) medals(j,1) 【试题解析】 (1)由 printOut过程中 “txt.Text”及按钮单击事件中调用语句“printOut Text1”可知, txt是一个文本框控件 (TextBox)类型的参数; (2)过程 exchange的作用是交换两个参数的值,因此参数调用方式应为传址调用; (3

21、)此处,仅当第 k个国家金牌数大于第 j个国家金牌数,即 medals(k,0)medals(j,0)时,才需要更新 j的值; (4)由于金牌数已按降序排 列, medals(k,0) medals(j,0)表明第 k个位置及以后各国家的金牌数都小于第 j个国家金牌数。而对银牌二次排序时,只需要考虑金牌数相同的情形,因此此处应即刻退出 For循环; (5)参考 (3),此处是比较银牌数,仅当第 k个国家银牌数人于第 j个国家银牌数,即 medals(k,1) medals (j,1)时,才需要更新 j的值。 6 【正确答案】 (1) RecordSource (2) DataSource (3

22、) MoveLast (4) (5) DataGrid1.SelEndCol或 DataGrid1.SelStartCol 【试题解析】 (1)界面上呈现的数据集是整个成绩表,即 Adodc1的RecordSource; (2)DataGrid控件通过 DataSource属性实现与 ADO Data控件的绑定; (3)根据程序说明,单击 “添加 ”按钮,光标指向最后一条数据记录; (4)DataGrid1.SelStartCol 0表示用户没有选择列, DataGrid1.SelStartColDataGrid1.SelEndCol表示用户选定了多列,都与程序说明中不符; (5)DataGr

23、id1的 Columns属性返回一个列的集合变量,因此此处应填入所选列的序号,由前文可知,填入 DataGrid1.SelEndCol或 DataGfid1.SelStartCol均可。 7 【正确答案】 (1) static (2) sum+=d (3) num+ (4) sum/num (5) Stud:avg() 【试题解析】 (1)根据题意, sum数据成员是静态变量; (2) (3):在 Stud类的构造函数中,应该对 sum数据成员累加并对 num成员增1; (4)avg函数是计算平均数的,所以应该返回 syam/num; (5)C+语言程序设计中,类的静态数据成员或函数可以利用类名加作用域分辨符“:”来访问或调用。 8 【正确答案】 (1) name (2) int no (3) emp.changeCity (4) emp.display() (5)this.no=no 【试题解析】 本程序创建一个 employee类,包括姓名、街道地址、市、省、邮政编码和记录号等信息以及若干函数:构造函数 employee()初始化每个成员;changname()、 changeno() 等用于更改类中各属性的值; display()函数用于打印数据。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1