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

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

1、软件水平考试(初级)程序员下午(应用技术)模拟试卷 42及答案与解析 1 阅读以下说明和流程图,回答问题将解答填入对应栏。 说明 下面的流程图,用来完成计算一组数组中的中值,其方法是:将数组中的一个值与其他值比较,并计算大于等于被比较数的数值的个数,以及小于等于被比较数的数值的个数,如果两数都大于 n/2,则已经找到了中值,否则继续之前的步骤。 注:流程中循环开始的说明按照 “循环变量:循环初值,循环终值,增量 ”格式描述; 问题 将流程图的 (1) (5)处补充完整。 2 阅读以下函数说明和 C语言函 数,将应填入 (n)处的字句写在对应栏内。 说明 1 函数 void fun(char*w

2、,char x,int*n)用来在 w数组中插入 x, w数组中的数已按由小到大顺序存放, n指存储单元中存放数组中数据的个数,插入后数组中的数仍有序。 C函数 1 void fun(char*W,char x,int*n) int i,P; p=0; w*n=x; while(x wp) (1) ; for(i=*n,i p;i-)wi=(2); wp=x; +*n; 说明 2 函数 void revstr(char*s)将字符串 s逆置。例如:字符串 “abcde”,经过逆置后变为“edcba”。 C函数 2 void revstr(char*s) char*p,c; if(s=NULL)

3、return; p=(3); /*p指向字符串 s的最后一个有效字符 */ while(s p) /*交换并移动指针 */ C=*s; (4)=*p; (5)=c; 3 阅读以下函数说明和 C语言函数,将应填入 (n)处的字句写在对应栏内。 说明 已知 r1.n是 n个记录的递增有序表,用折半查找法查找关键字为 k的记录。若查找失败,则输出 “failure“,函数返回值为 0;否则输出 “success”,函数返回值为该记录的序号值。 C函数 int binary search(struct recordtype r,int n,keytype k) intmid,low=1,hig=n;

4、while(low =hig) mid=(1); if(k rmid.key) (2); else if(k=rmid.key) printf(“succesSn“); (3); else (4); printf(“failuren“); (5); 4 阅读以下函数说明和 C语言函数,将应填入 (n)处的字句写 在对应栏内。 说明 本程序实现对指定文件内的单词进行计数。其中使用二叉树结构来保存已经读入的不同单词,并对相同单词出现的次数进行计数。此二叉树的左孩子结点的字符串值小于父结点的字符串值,右孩子结点的字符串值大于父结点的字符串值。函数getword(char*filename, char

5、*word)是从指定的文件中得到单词。 char*strdup(char*S)是复制 S所指向的字符串,并返回复制字符串的地址。 C程序 #include stdio.h #include ctype.h #include string.h #define MAXWORD 100 struct node char*word; int count; struct node*left; struct node*right; struct node*addtree(struct node*P,char*w) int cond; if(p=NULL) /*向树中插入结点 */ P=(struct no

6、de*)malloc(sizeof(struct node); P- word=strdup(w); P- count=1; (1) ; elseif(oond=strcmp(w,p- word)=0) (2) ; else if(cond 0)p- left=(3); else p- right=(4); return p; main() Struct node*root; char wordMAXWORD; root=NULL; filename=“example.dat“; while(getword(filename,word)!=EOF) root=(5); 5 阅读以下说明和 C+

7、程序,将应填入 (n)处的字句写在对应栏内。 说明 下面程序输出一个矩形面积,以及矩形区域上的假想的作物产量。 C+程序 #include iostream.h class crop_assessment int actual_crop; int ideal_crop; public: void set(int in_actual,int in_ideal) actual crop=in_actual; ideal_crop=in_ideal; int get_actual_crop(void) (1) ; int get_ideal_crop(void) (2) ;) ; Class lot

8、_size int length; int width; (3) crop; public: void set(int 1,int w,int a,int i) length=1; width=w; crop.set(a,i); int get_area(void)return length*width; int get_data(void)return (4) ; int get_data2(void)freturn (5) ; int main() Los_size small, medium; small.set(5,5,5,25); medium.set(10,10,10,50); c

9、out “For a small lot of area“ smallget_area() “n”; cout “the actual crops are$“ small.get_data2() “n“; cout “and ideal crops are$” small.get_data() “n“; cout “For a medium Lot of area“ medium.get area() :n”; cout “the actual crops are$“ medium.get_data2() “n“; cout “and ideal crops are$“ medium.get_

10、data() “n“; return 0; 6 阅读以下说明和 Java代码,将解答写在对应栏内。 说明 已知类 Stock和类 JavaMain都定义在 JavaMain.java文件中,类 stock的定义中有四处错误,分别在代码的第 01、 02、 06、 07行。请修改错误并给出修改后该行的完整代码,并写出改正错误后程序运行的输出结果。 Java代码 01 public class Stock 02 static 03 shares=0; 04 Share_val=0.0; 05 06 private Stock()tgetData(); 07 private Stock(int n,

11、double pr=0) 08 shares=n; 09 share val=pr; 10 getData(); 11 12 public void getData() 13 System.out.print(shares+“:“+share_val+“ “); 14 15 Drivate int shares; /非静态变量 16 Drivate double share val; /非静态变量 17 ; 18 19 publiC class JavaMain 20 public static void main(String args) 21 Stock a=new Stock(); 22

12、 Stock b=new Stock(1,67.5); 23 /其他代码省略,且代码无输出 24 25 软件水平考试(初级)程序员下午(应用技术)模拟试卷 42答案与解析 1 【正确答案】 (1) j=-1; (2) xj!=xi; (3) count_lower+; (4) count_lower (n/2.0)|count higher(n/2.0); (5) xj; 【试题解析】 本题目考查流程图。 算法描述在题目中已经详细给出,通过阅读题目可知 j用来定位数组中一个被比较的数, i用来循环遍历数组中所有的数。 j应该从第 0个数开始,又由于要执 行一步 j=j+1,所以 (1)中应填入

13、 “j=-1”, counUligher+说明遍历的数比被比较的数大,即 (2)中应填入 “xj!=xi”相应的, (3)中就应填入 “count_lower+”,题目说明中已经指出,当 count_lower和 count_higher都大于 n/2时,就说明找到了中值,所以 (4)应当填入 “count_lower (n/2.0)count_higher(n/2.0)”,最后,如果循环结束,则 xi就应该是中值, (5)中应填入 “xj”。 2 【正确答案】 (1) p+ (2) wi-1 (3) s+strlen(s)-1 (4) *s+或 *(s+) (5) *p-或 *(p-) 【试

14、题解析】 函数 1的 fun()中的 while循环是为了找到 x的插入位置,因此 (1)填 “p+”, for循环是移动数组中的元素,因此 (2)填 “wi-1”。 对于函数 2,设字符串的长度为 n,则该函数的思想为将 *(s+j)与 *(s+n-1+i)对换, i=0n/2。采用指针来实现, s为起始地址, p定位为最后一个字符的位置,所以空 (3)应 填 “s+strlen(s)-1”;采用 *s与 *p交换后为 s+与 P-。即空 (4)填 “*s+”或 “*(s+)”,空 (5)填 “*p-”或 “*(p-)”。 3 【正确答案】 (1) (low+hig)/2 (2) hig=m

15、id-1 (3) returnmid (4) low=mid+1 (5) return 0 【试题解析】 折半查找法也就是二分法:初始查找区间的下界为 1,上界为len,查找区间的中界为 k=(下界 +上界 )/2。所以 (1)应填 “(low+hig)/2”。中界对应的元素与要 查找的关键字比较。当 k rmid.key时, (2)填 “hig=mid-1”;当k=rmid.key时, (3)填 “return mid”;当 k rmid.key时, (4)填 “low=mid+1”。如果 low hig时循环终止时,仍未找到需查找的关键字,那么根据题意返回 0,即空 (5)填 “retur

16、n 0”。 4 【正确答案】 (1) p- left=p- right=NULL (2) p- count+ (3) addtree(p-left,w) (4) addtree(p- right,w) (5) addtree(root,word) 【试题解析】 在用二叉树结构来保存指定文件内的单词时,采用递归调用。首先在树中创建一个结点,因此空 (1)填 “p- left=p- right=NULL”。如果要插入的字符串已经存在,则计数值加 1,即空 (2)填 “p- count+”;如果要插入的字符串小于此结点上字符串的值,则再次调用此函数,即空 (3)填 “addtree(p- left,

17、w)”;如果要插入的字符串大于此结点上字符串的值,则再次调用函数为空 (4),即“addtree(p- right,w)”。在主函数中调用空 (5),即 “addtree(root,word)”。 5 【正确答案】 (1) return actual_crop (2) return ideal_crop (3) Crop_assessment (4) crop get_ideal_crop() (5) crop.get_actual_crop() 【试题解析】 本题以 C+语言为载体,考查面向对象程序设计中的几个重要概念类的嵌套及函数的使用。 本题的功能是通 过已定义的粮食收成类定义了一个计算

18、特定矩形域上粮食收成的类,在主函数中定义了两个对象,并调用了相应的函数,来输出理想和实际的粮食产量。 首先,由于 Crop_assessment定义的成员数据缺省为私有的,所以想要获得实际和理想的粮食产量,要通过两个公有成员函数,所以 (1)处应填入 “return actual_crop”, (2)处应填入 “return ideal_crop”。 其次,在类 Lot_size中,由于我们要反映矩形域上的粮食产量,所以我们在类中嵌套定义了一个类, (3)应填入 “Crop_assessment”。 最后,由于我们想通过 Lot_size类中的 getdata和 get_data2函数得到粮食

19、产量,但由于这两个成员数据是私有函数,所以我们必须通过定义的对象调用它,所以 (4)应填入 “crop.get ideal_crop()”, (5)应填入 “crop.get actual_crop()”。 6 【正确答案】 01代码行修改结果: class Stock 02代码行修改结果: 06代码行修改结果: public Stock()getData(); 07代码行修改结果: public Stock(int n,double pr) 程序运行的输出结果为: 0:0.0 1:67.5 【试题解析】 本题考查的是用 Java程序编程。 因为 JavaMain和 Stock定义在同一个文件中,所以只能够有一个公共类,因此Stock前的 public应该去掉;因为 shares和 share_val都是非静态变量,所以不能够用静态初始化块进行初始化,所以应该把静态初始化块改为非静态初始化块,将 static关键字去掉;定义中的构造函数为私有的,但构造函数在 JavaMain类中被使用,因此构造函数应该为公共的。所以 06和 07行的代码应该将 private改为public;构造函数中调用了输出函数,所以 JavaMain程序运行后输出结果为:0:0.0 1:67.5。

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

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

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