ImageVerifierCode 换一换
格式:DOC , 页数:9 ,大小:56.50KB ,
资源ID:507387      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-507387.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文([计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷40及答案与解析.doc)为本站会员(hopesteam270)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

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

1、软件水平考试(初级)程序员下午(应用技术)模拟试卷 40 及答案与解析 1 阅读以下说明和流程图,回答问题将解答填入对应栏。 说明 本流程图实现采用递归函数来求一个整数数组中从元素 0到元素 n中的最小值。该算法思想是这样的,首先我们假设有一个求数组中最小元素的函数,然后,在求某一具有 n的元素的数组的最小值时,只要求将前 n-1的元素的最小值与第 n个元素比较即可。不断地重复这一过程,直到数组中只剩下一个元素,那么它必定是最小值。 注: int min(int X,int y)为返回两数中最小数的函数。 int minInArray(int a,int n)为返回数组中最小数的函数。 min

2、A为数组中最小值。 问题 l 将流程图的 (1) (4)处补充完整。 问题 2 min()函数的定义为 (5)。 2 阅读以下函数说明和 C语言函数,将应填入 (n)处的字句写在对应栏内。 说明 1 本程序输入一字符串,并将其中的大写字母变成小写字母。 C函数 1 #include stdio.h void main() int i=0; char s120; printf(“Enter a string.n“); scanf(“%s“,s); while( (1) ) if( (2) ) si=si-A+a; i+; printf(“%sn“,S); 说明 2 本程序用二分法,在已按字母次序

3、从小到大排序的字符数组 listlen中,查找字符 c,若 c在数组中,函数返回字符 c在数组中的下标,否则返回 -1。 C函数 2 int search(char list, char c,int len) ( intlow=0, high=len-1,k; while( (3) ); k=(10w+high)/2; if( (4) ) return k; else if( (5) )high=k-1; else low=k+1; return -1; 3 阅读以下函数说明和 C语言函数,将应填入 (n)处的字句写在对应栏内。 说明 函 数 void diff(Node*A,Node*B,N

4、ode*r)的功能是:根据两个由整数按升序构成的单链表 L1 和 L2(分别由 A,B指向 )构造一个单链表 L3(由 *r指向 ),要求 L3 中的所有整数都是 L1,并且不是 L2 中的整数,还要求 L3 中的所有整数都两两不等。 C函数 #include malloc.h typedef struct node int data; struct node*next; Node; void diff(Node*A,Node*B,Node*r) int lastnum; Node*P; *r=NULL; if(!A) return; while(1) if(A- data B- data)

5、lastnum=A data; p=(Node*)malloc(sizeof(Node); P- data=lastnum; P- next=*r; (2); do A=A- next; while( (3) ; else iffA- data B- data) B=B- next; else (4); lastnum=A- data; while (A while(A) lastnum=A- data; p=(Node*)malloc(sizeof(Node); P- data=lastnum; (5); *r=P; while(A 4 阅读以下函数说明和 C语言函数,将应填入 (n)处的字

6、句写在对应栏内。 说明 设一个环上有编号为 0 n-1的 n粒颜色不尽相同的珠子 (每粒珠子颜色用字母表示, n粒珠子的颜色由输入的字符串表示 )。从环上的某两粒珠子间剪开,则环上珠子形成一个序列然后按以下规则从序列中取走珠子:首先从序列左端取走所有连续的同色珠子;然后从序列右端在剩下的珠子中取走所有连续的同色珠子 ,两者之和为该剪开处可取走珠子的粒数。在不同位置剪开,能取走的珠子也不尽相同。 本程序所求的是在环上哪个位置剪开,按上述规则可取走的珠子粒数最多。程序中用数组存储字符串。例如: 10粒珠子颜色对应字符串为 “aaabbbadcc”,在 0号珠子前剪开,序列为 aaabbbadcc,

7、从左端取走 3粒 a色珠子,从右端取走 2粒 c色珠子,共取走 5粒珠子。若在 3号珠子前剪开,即 bbbadccaaa,共取走 6粒珠子。 C函数 int count(char*s,int start,int end) inti,c=0,color=sstart,step=(start end)?-1:1; for(i=start;si=color;i+=step) if(step 0 (2) ; return c; void main() char t,s120; int i,j,C,len,maxc,cut=0; printf(“请输入环 上代表不同颜色珠子字符串 :“); scanf(

8、“%s“,s ); len=strlen(s); for(i=maxc=0;i len;i+) /*尝试不同的剪开方式 */ c=count(s,0,len-1); if(c len) C+=count( (3); if(c maxc)cut=i;maxc=c; ) /*数组 s的元素循环向左移动一个位置 */ t=s0; for(j=1;i len;i+) (4); (5); printf(“在第 %d号珠子前面剪开,可以取走 %d个珠子 .n“,cut,maxc); 5 阅读以下说明和 C+程序,将应填入 (n)处的字句写在对应栏内。 说明 下面程序实现十进制向其它进制的转换。 C+程序

9、#include“ioStream.h“ #include“math.h“ #include typedef struct node int data; node*next; Node; Class Transform DUDlic: void Trans(int d,int i); /d为数字 ;i为进制 void print(); private: Node*top; ; void Transform:Trans(int d,int i) int m,n=0; Node*P; while(d 0) (1); d=d/i; p=new Node; if(!n) p- data=m; (2);

10、 (3); n+; else p- data=m; (4); (5); void Transform:print() Node*P; while(top!=NULL) p=top; if(p- data 9) cout data+55; else cout data; top=p- next; delete p; 6 阅读以下说明和 Java程序,将应填入 (n)处的字句写在对应栏内 说明 以下程序的功能时三角形、矩形和正方形的面积输出。 程序由 5个类组成: areatest是主类,类 Triangle, Rectangle和 Square分别表示三角形、矩形和正方形,抽象类 Figure提

11、供了一个计算面积的抽象方法。 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.length;i+) system.out.println(Figures+“area=“+Figures.getarea(); public abstract class figure public abstract double getarea()

12、; public class rectangle extends (1) double height; double width; public rectangle (double height,double width) this.height=height; this.width=width; public string tostring() return“rectangle:height=“+height+“,width=“+width+“:“; public double getarea() return (2) public class square exends (3) publi

13、c 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 la,double lb,double lc) this.la=la;this.lb=lb;this.lc=lc; public string tostring()( return“triangle:sides=“+la+“,“+lb+“,“+lc+

14、“:“; public double get area() double s=(la+lb+lc)/2.0; return math sqrt(s*(s-la)*(s-lb)*(s-lc); 软件水平考试(初级)程序员下午(应用技术)模拟试卷 40 答案与解析 1 【正确答案】 (1) minInArray(a,n); (2) 1; (3) minA=an-1; (4) minA=min(minInArray(a,n-1), an); (5) x y?x:y; 【试题解析】 本题目考查流程图。 题目是利用递归来求数组中的最小值,则一定是反复的调用一个求数组最小值的函数,直到比较数组中最后只剩下

15、两个数,则 (1)中填入的应是“minlnArray(a,n)”,然后,判断 n的值是否为 1,如果是,则说明数组中只有一个数,则它一定就是最小值,可以直接输出,所以 (2)应填入 “1”, (3)应填入“minA=an”;如果 n的值不是 1,则说明要继续递归,则再次调用求数组最小值的函数,把数组前 n-1项的最小值同第 n项做比较,所以 (4)填入“minA=min(minInArray(a,n-1), an)”,由 于 min()是一个比较函数,返回两数中较小的数,我们可以用三元运算符直接定义为 x y?x:y。 2 【正确答案】 (1) si (2) A =si&si = Z (3)

16、low =high (4) listk=c (5) listk c或 c listk 【试题解析】 函数 1的功能是将读入的字符串中大写字母变成小写字母,因此对读入的每个字符首先判断该字符是否为 0,所以 (1)填 “si”;然后判断该字符是否为大写字母, (2)填 “A =si&si =Z”。 函数 2根据二分查找的特点,函数 search 中 while循环的过程是将 (low+high)/2对应的元素与给定的字符 C比较,找到则返回,因此 (4)填 “listk=c”;否则继续。当 listk c时, high=k-1;当 listk c时, low=k+1。所以 (5)填 “listk

17、 c”或 “c listk”。直到 low high时循环终止,所以 (3)应填 “low =high”。 3 【正确答案】 (1) A&B (2) *r=p (3) A&A- data=lastnum (4) B=B- next (5) D- next=*r 【试题解析】 程序的思路是:在链表 A和链表 B 的指针均未到链尾时,从链表A取一个元素和链表 B中第一个元素进行比较,所以 (1)应填 “A&B”。如果链表A元素小于链表 B的元素,则将链表 A中元素直接插入链表 C中,指针后移,则(2)填 “*r=p”,在后移中屏蔽所有相同元素,则 (3)应填 “A&A- data=lastnum”

18、;如果链表 A元素大于链表 B 的元素,将链表 B 指针后移;如果链表 A元素等于链表 B 的元素,链表 A和链表 B 的指针都向后移,即 (4)填 “B=B- next”。如果链表B 已经到链尾,但链表 A没有结束,则将链表 A中的剩余元素加入到链表 C中,所以 (5)应填 “p- next=*r”。 4 【正确答案】 (1) step 0&i end (2) +c (3) s,len-1,c (4) sj-1=sj (5) slen-1=t 【试题解析】 依据取珠子个数最多的规则, count函数每次从左或从右取出相同颜色的珠子,因此从右到左的条件为 step 0&i end,即 (1)应

19、填 “step 0&iend”。当是同色珠子时,计数值加 1,所以 (2)填 “+c”。从右到左计算时,函数count调用的实参次序为 s,len-1,C。即 (3)应填 “s,len-1,c”。在尝试不同的剪开方式时,数组 s的元素要循环向左移动一个位置,则 (4)填 “sj-1=sj”,(5)填 “slen-1=t”。 5 【正确答案】 (1) m=d%i (2) top=p (3) top- next=NULL (4) p- next=top (5) top=p 【试题解析】 本题考查 C+编程,主要考查了链表的使用。 所有的问题只出在函数 Trans 中,它的功能是完成将十进制数 d

20、转换为任意进制i的数,并存在数组中。函数中首先定义了一个指向链表结点的指针,然后开始进行转换,进制转换应该是一个很常见的问题,就是不断的求模运算,所以 (1)处应填入 “m=d%i”。然后,我们要把求模的结果保存到链表结点中,并使链表首指针指向该结点,结点中指向下一个结点 ”的指针设为空,所以 (2)处应填入 “top=p”,(3)处应填入 “top- next=NULL”。由于求 模运算是从低位到高位逐位求出的,所以在我们在进行完第二次求模运算后,应该将第二次运算的结果放到链表首位,所以 (4)处应填入 “P- next=top”, (5)处应填入 “top=p”。 6 【正确答案】 (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