【计算机类职业资格】初级程序员2015上半年下午试题及答案解析.doc

上传人:wealthynice100 文档编号:1329987 上传时间:2019-10-17 格式:DOC 页数:9 大小:78KB
下载 相关 举报
【计算机类职业资格】初级程序员2015上半年下午试题及答案解析.doc_第1页
第1页 / 共9页
【计算机类职业资格】初级程序员2015上半年下午试题及答案解析.doc_第2页
第2页 / 共9页
【计算机类职业资格】初级程序员2015上半年下午试题及答案解析.doc_第3页
第3页 / 共9页
【计算机类职业资格】初级程序员2015上半年下午试题及答案解析.doc_第4页
第4页 / 共9页
【计算机类职业资格】初级程序员2015上半年下午试题及答案解析.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、初级程序员 2015 上半年下午试题及答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.阅读以下说明和流程图,填补流程图中的空缺,将解答填入答题纸的对应栏内。 说明 下面流程图的功能是:在给定的两个字符串中查找最长的公共子串,输出该公共子串的长度 L 及其在各字符串中的起始位置(L=0 时不存在公共字串)。例如,字符串“The light is not bright tonight”与“Tonight the light is not bright”的最长公共子串为“he light is not bright”,长度为 22,起始位置分别为 2

2、和 10。 设 A1:M表示由 M 个字符 A1,A2,AM依次组成的字符串;B1:N表示由 N 个字符 B1,B2,BN依次组成的字符串,MN1。 本流程图采用的算法是:从最大可能的公共子串长度值开始逐步递减,在 A、B 字符串中查找是否存在长度为 L 的公共子串,即在 A、B 字符串中分别顺序取出长度为 L 的子串后,调用过程判断两个长度为 L 的指定字符串是否完全相同(该过程的流程略)。 流程图 (分数:15.00)_二、试题二(总题数:1,分数:15.00)2.阅读以下说明和 C 函数,填补函数代码中的空缺,将解答填入答题纸的对应栏内。 说明 1 函数 f(double eps)的功能

3、是:利用公式 (分数:15.00)_三、试题三(总题数:1,分数:15.00)3.阅读以下说明和 C 代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 说明 下面的程序代码根据某单位职工的月工资数据文件(名称为 Salary.dat,文本文件),通过调用函数GetIncomeTax 计算出每位职工每月需缴纳的个人所得税额并以文件(名称为 IncomeTax.dat,文本文件)方式保存。 例如,有 4 个职工工资数据的 Salary.dat 内容如下,其中第一列为工号(整数),第 2 列为月工资(实数)。1030001 6200.00 1030002 5800.00 2010001 8500

4、.00 2010010 8000.00 相应地,计算所得 IncomeTax.dat 的内容如下所示,其中第 3 列为个人所得税额: 1030001 6200.00 47.20 1030002 5800.00 35.94 2010001 8500.00 233.50 2010010 8000.00 193.00 针对工资薪金收入的个人所得税计算公式为: 个人所得税额=应纳税所得额税率-速算扣除数 其中,应纳税所得额=月工资-三险一金-起征点 税率和速算扣除数分别与不同的应纳税所得额对应,如下表所示。 级数 全月应纳税所得额 X(元) 税率(%) 速算扣除数(元) 1 0X1500 3 0 2

5、1500X4500 10 105 3 4500X9000 20 555 4 9000X35000 25 1005 5 35000X55000 30 2755 6 55000X80000 35 5505 7 X80000 45 13505 设三险一金为月工资的 19%,起征点为 3500 元。 例如,某人月工资为 5800 元,按规定 19%缴纳三险一金,那么: 其应纳税所得额 X=5800-580019%-3500=1198 元,对应税率和速算扣除数分别为 3%和 0 元,因此,其个人所得税额为 11983%-0=35.94 元。 C 代码 #include stdio.h #define B

6、ASE 3500 /起征点 #define RATE 0.19 /三险一金比例 _; /声明函数 GetIncomeTax int main() int id; double salary; FILE *fin,*fout; fin = fopen(“Salary.dat“,“r“); if (_) return 0; fout = fopen(“IncomeTax.dat“,“w“); if (_) return 0; while (!feof(fin) if (fscanf(fin,“%d%if“, _) !=2) break; fprintf(fout,“%dt%.21ft%.21fn“

7、,id, salary, _); fclose(fin); fclose(fout); return 0; double GetIncomeTax(double salary) double yns_sd; yns_sd = _ - BASE; /*计算应纳税所得额*/ if (yns_sd=0) return 0.0; else if (yns_sd=1500) return yns_sd*0.03; else if (yns_sd=4500) return yns_sd*0.1-105; else if (yns_sd=9000) return yns_sd*0.2-555; else i

8、f (yns_sd=35000) return yns sd*0.25-1005; else if (yns_sd=55000) return yns_sd*0.3-2755; else if(yns_sd=80000) return yns_sd*0.35-5505; return yns_sd*0.45-13505; (分数:15.00)_四、试题四(总题数:1,分数:15.00)4.阅读以下说明和 C 函数,填补代码中的空缺,将解答填入答题纸的对应栏内。 说明 函数 Combine(LinkList La,LinkList Lb)的功能是:将元素呈递减排列的两个含头结点单链表合并为元素值

9、呈递增(或非递减)方式排列的单链表,并返回合并所得单链表的头指针。例如,元素递减排列的单链表 La 和 Lb 如图 1 所示,合并所得的单链表如图 2 所示。 (分数:15.00)_五、试题五(总题数:1,分数:15.00)5.阅读下列说明和 C+代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 说明 设计 RGB 方式表示颜色的调色板,进行绘图,其类图如下图所示。该程序的 C+代码附后。 (分数:15.00)_六、试题六(总题数:1,分数:15.00)6.阅读以下说明和 Java 代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 说明 设计 RGB 方式表示颜色的调色板,进行绘图。其

10、类图如下图所示。该程序的 Java 代码附后。 (分数:15.00)_初级程序员 2015 上半年下午试题答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.阅读以下说明和流程图,填补流程图中的空缺,将解答填入答题纸的对应栏内。 说明 下面流程图的功能是:在给定的两个字符串中查找最长的公共子串,输出该公共子串的长度 L 及其在各字符串中的起始位置(L=0 时不存在公共字串)。例如,字符串“The light is not bright tonight”与“Tonight the light is not bright”的最长公共子串为“he ligh

11、t is not bright”,长度为 22,起始位置分别为 2 和 10。 设 A1:M表示由 M 个字符 A1,A2,AM依次组成的字符串;B1:N表示由 N 个字符 B1,B2,BN依次组成的字符串,MN1。 本流程图采用的算法是:从最大可能的公共子串长度值开始逐步递减,在 A、B 字符串中查找是否存在长度为 L 的公共子串,即在 A、B 字符串中分别顺序取出长度为 L 的子串后,调用过程判断两个长度为 L 的指定字符串是否完全相同(该过程的流程略)。 流程图 (分数:15.00)_正确答案:()解析:N 或 rnin(M,N) M-L+1 N-L+1 L-1 L,I,J 解析 本题考

12、查对算法流程图的理解和绘制能力。这是程序员必须具有的技能。 本题的算法可用来检查某论文是否有大段抄袭了另一论文。“The light is not bright tonight”是著名的英语绕口令,它与“Tonight the light is not bright”大同小异。 由于字符串 A 和 B 的长度分别为 M 和 N,而且 MN1,所以它们的公共子串长度 L 必然小于或等于 N。题中采用的算法是,从最大可能的公共子串长度值 L 开始逐步递减,在 A、B 字符串中查找是否存在长度为 L 的公共子串。因此,初始时,应将 min(M,N)送 L,或直接将 N 送 L。(1)处应填写 N 或

13、 min(M,N),或其他等价形式。 对每个可能的 L 值,为查看 A、B 串中是否存在长度为 L 的公共子串,显然需要执行双重循环。A 串中,长度为 L 的子串起始下标可以从 l 开始直到 M-L+1(可以用实例来检查其正确性);B 串中,长度为 L 的子串起始下标可以从 1 开始直到 N-L+1。因此双重循环的始值和终值就可以这样确定,即(2)处应填 M-L+1,或等价形式;(3)处应填 N-L+1 或等价形式(注意循环的终值应是最右端子串的下标起始值)。 A 串中从下标 I 开始长度为 L 的子串可以描述为 AI:I+L-1;B 串中从下标 J 开始长度为 L 的子串可以描述为 AJ:J

14、+L-1。因此,双重循环体内,需要比较这两个子串(题中采用调用专门的函数过程或子程序来实现)。 如果这两个子串比较的结果相同,那么就已经发现了 A、B 串中最大长度为 L 的公共子串,此时,应该输出公共子串的长度值 L、在 A 串中的起始下标 I、在 B 串中的起始下标 J。因此,(5)处应填 L,I,J(可不计顺序)。 如果这两个子串比较的结果不匹配,那么就需要继续执行循环。如果直到循环结束仍然没有发现匹配子串时,就需要将 L 减少 1(4)处填 L-1 或其等价形式)。只要 L 非 0,则还可以继续对新的 L 值执行双重循环。如果直到 L=0,仍没有发现子串匹配,则表示 A、B 两串没有公

15、共子串。二、试题二(总题数:1,分数:15.00)2.阅读以下说明和 C 函数,填补函数代码中的空缺,将解答填入答题纸的对应栏内。 说明 1 函数 f(double eps)的功能是:利用公式 (分数:15.00)_正确答案:()解析:n+2 -s 或-1*s *p!=“0“或等价形式 num*10 或等价形式 p+或等价形式 解析 本题考查 C 语言程序设计基本技能。考生需认真阅读题目中的说明,从而确定代码的运算逻辑,在阅读代码时,还需注意各变量的作用。 函数 f(double eps)的功能是计算兀的近似值。观察题中给出的计算公式,可知在循环中 n 每次递增 2,因此空(1)处应填入“n+

16、2”。由于公式中的各项是正负交替的,因此结合表达式“term=s/n”可知变量 s就是起此作用的。空(2)处应填入“-s”或“-1*s”。 对于函数 fun(char *str),从字符序列中取出数字并组合为一个整数时,对于每个数字,只需将之前获取的部分乘以 10 再加上该数字的值即可。 以 67385423 为例。 67385423=(0+6)*10+7)*10+3)*10+8)*10+5)*10+4)*10+2)*10+3 函数中的变量 i 是用来计算位数的,num 用来计算所获得的整数值。显然,最多读取字符序列中的前 8 个数字,或者到达字符序列的末尾(*p!=“0“)时,计算也需结束。

17、因此,空(3)处应填入“*p!:“0“”。 根据 num 的作用,空(4)处应填入“num*10”。 根据指针 p 的作用,空(5)处的代码应使得 p 指向下一个字符,因此应填入“p+”。三、试题三(总题数:1,分数:15.00)3.阅读以下说明和 C 代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 说明 下面的程序代码根据某单位职工的月工资数据文件(名称为 Salary.dat,文本文件),通过调用函数GetIncomeTax 计算出每位职工每月需缴纳的个人所得税额并以文件(名称为 IncomeTax.dat,文本文件)方式保存。 例如,有 4 个职工工资数据的 Salary.dat

18、内容如下,其中第一列为工号(整数),第 2 列为月工资(实数)。1030001 6200.00 1030002 5800.00 2010001 8500.00 2010010 8000.00 相应地,计算所得 IncomeTax.dat 的内容如下所示,其中第 3 列为个人所得税额: 1030001 6200.00 47.20 1030002 5800.00 35.94 2010001 8500.00 233.50 2010010 8000.00 193.00 针对工资薪金收入的个人所得税计算公式为: 个人所得税额=应纳税所得额税率-速算扣除数 其中,应纳税所得额=月工资-三险一金-起征点 税

19、率和速算扣除数分别与不同的应纳税所得额对应,如下表所示。 级数 全月应纳税所得额 X(元) 税率(%) 速算扣除数(元) 1 0X1500 3 0 2 1500X4500 10 105 3 4500X9000 20 555 4 9000X35000 25 1005 5 35000X55000 30 2755 6 55000X80000 35 5505 7 X80000 45 13505 设三险一金为月工资的 19%,起征点为 3500 元。 例如,某人月工资为 5800 元,按规定 19%缴纳三险一金,那么: 其应纳税所得额 X=5800-580019%-3500=1198 元,对应税率和速算

20、扣除数分别为 3%和 0 元,因此,其个人所得税额为 11983%-0=35.94 元。 C 代码 #include stdio.h #define BASE 3500 /起征点 #define RATE 0.19 /三险一金比例 _; /声明函数 GetIncomeTax int main() int id; double salary; FILE *fin,*fout; fin = fopen(“Salary.dat“,“r“); if (_) return 0; fout = fopen(“IncomeTax.dat“,“w“); if (_) return 0; while (!feo

21、f(fin) if (fscanf(fin,“%d%if“, _) !=2) break; fprintf(fout,“%dt%.21ft%.21fn“,id, salary, _); fclose(fin); fclose(fout); return 0; double GetIncomeTax(double salary) double yns_sd; yns_sd = _ - BASE; /*计算应纳税所得额*/ if (yns_sd=0) return 0.0; else if (yns_sd=1500) return yns_sd*0.03; else if (yns_sd=4500

22、) return yns_sd*0.1-105; else if (yns_sd=9000) return yns_sd*0.2-555; else if (yns_sd=35000) return yns sd*0.25-1005; else if (yns_sd=55000) return yns_sd*0.3-2755; else if(yns_sd=80000) return yns_sd*0.35-5505; return yns_sd*0.45-13505; (分数:15.00)_正确答案:()解析:double GetIncomeTax(double salary)或 doubl

23、e GetIncomeTax(double) !fin 或 fin=NULL 或 fin=0 !fout 或 fout=NULL 或 fout=0 / tp-next=Lc-next; / Lc-next=tp; / _; / 五、试题五(总题数:1,分数:15.00)5.阅读下列说明和 C+代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 说明 设计 RGB 方式表示颜色的调色板,进行绘图,其类图如下图所示。该程序的 C+代码附后。 (分数:15.00)_正确答案:()解析:free(palette) this-number static const new MyColor new Dr

24、awing() 解析 本题考查 C+程序设计的能力,涉及类、对象、方法定义和相关操作。要求考生根据给出的案例和代码说明,认真阅读并理清程序思路,然后完成题目。 先考查题目说明。本题目中涉及到颜色、调色板、绘图等类以及初始化和调色相关等操作。根据说明进行设计。 类图中给出三个类 Drawing、Palette 和 MyColor 及其之间的关系。Drawing 与 Palette、MyColor 之间具有关联关系,Palette 与 MyColor 之间是聚合关系。 MyColor 为以 RGB 方式表示颜色,由属性 red、green 和 blue 表示,每个 MyColor 对象即为一个 R

25、GB 颜色。MyColor 具有两个构造器,缺省构造器将 RGB 颜色均初始化为 0;带参数的构造方法将当前对象的 RGB 值设置为调用构造方法时消息中所传递的参数值。print()用来输出当前对象的 RGB 值供测试使用。 Palette 类用于表示调色板,其调色板颜色数量,用 int 型 number 表示,其 MyColor 对象指针数组,用指向指针的指针 MyColor* palette 表示。Palette 的缺省构造方法中,将 number 设置为 256 色,并将palette 指向动态申请存储 256 色 MyColor 对象指针的空间。另一个构造方法 Palette(MyCo

26、lor* pale,int number)中参数有指向 MyColor 对象指针数组的指针 pale 以及颜色数量 number。该构造方法设置当前调色板对象的颜色数量,用 this-number 表示当前对象的 number 属性,动态申请该数量对应的 MyColor 指针类型的 number 个存储空间,并将此存储空间复制给属性 palette。析构方法先用 delete删除用 new 创建的每个 MyColor 对象,并用 free 释放采用 malloc 函数动态申请的存放 MyColor 对象指针的存储空间。print()方法用来打印 palette 中每个颜色对象的颜色,供测试使用

27、。在 print()函数体内部,为每个数组元素调用当前对象的 print()打印一个 RGB 颜色。 Drawing 类属性 int COLORNUMBER 定义绘画时所用的颜色数量(本例中设置为 16 表示基于 16 色绘图)。void draw()方法声明调色板 Palette palette、定义 COLORNUMBER 色 MyColor 对象指针数组 color,随机生成 RGB 颜色并根据此颜色创建 COLORNUMBER 个 MyColor 对象,即循环 COLORNUMBER 次,每次循环生成随机的 RGB 颜色后调用 MyColor 的带参数构造器创建 MyColor 对象,

28、即: color i=new MyColor(red,green,blue); 所有颜色数组创建完成后,基于所创建的 COLORNUMBER 个 MyColor 对象指针数组创建调色板,即: palette=new Palette(color,COLORNUMBER); 调用调色板的 print()方法进行打印(模拟绘图)。最后将 MyColor 对象指针元素进行删除。由于COLORNUMBER 的作用是绘图的颜色数量,在创建 MyColor 对象指针数组时作为元素个数,所以,需要是static const 静态常量。 主控逻辑代码在 main 函数中实现。在 main()函数中,创建 Dra

29、wing 对象指针 d,即生成一个绘图对象: Drawing *d=new Drawing(); 并进行绘图,即调用 d 的 draw()方法,实现绘图功能。在使用完对象之后,需要对 new 出的对象采用delete 操作进行释放对象,对 d 对象进行删除,即 delete d;,释放内存。 综上所述,空(1)需要表示释放 malloc 函数申请的动态内存的函数,即 ffee(palette);空(2)需要表示当前对象的 number 属性,即 this-number;空(3)需要修饰 COLORNUMBER 为静态常量,即 static const;空(4)需要调用 MyColor 的构造方

30、法创建 MyColor 对象,即 new MyColor;空(5)处为创建 Drawing类的对象指针 d 的 newDrawing()。六、试题六(总题数:1,分数:15.00)6.阅读以下说明和 Java 代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 说明 设计 RGB 方式表示颜色的调色板,进行绘图。其类图如下图所示。该程序的 Java 代码附后。 (分数:15.00)_正确答案:()解析:MyColor this.number this.palette static final new MyColor 解析 本题考查 Java 语言程序设计的能力,涉及类、对象、方法的定义和相关

31、操作。要求考生根据给出的案例和代码说明,认真阅读并理清程序思路,然后完成题目。 先考查题目说明。本题目中涉及到本题目中涉及到颜色、调色板、绘图等类以及初始化和调色相关等操作。根据说明进行设计。 类图中给出三个类 Drawing、Palette 和 MyColor 及其之间的关系。Drawing 与 Palette、MyColor 之间具有关联关系,Palette 与 MyColor 之间是聚合关系。 MyColor 为以 RGB 方式表示颜色,由属性 red、green 和 blue 表示,每个 MyColor 对象即为一个 RGB 颜色。MyColor 具有两个构造器,缺省构造器将 RGB

32、颜色均初始化为 0;带参数的构造方法将当前对象的 RGB 值设置为调用构造方法时消息中所传递的参数值。toString()用来构造并返回当前对象的 RGB 值的字符串供测试使用。 Palette 类用于表示调色板,有调色板颜色数,用 int 型 number 表示,有 MyColor 对象数组,用MyColorpalette 表示。Palette 的缺省构造方法中,将 number 设置为 256 色,并将 palette 初始化成256 色 MyColor 数组。另一个构造方法 Palette(MyColorpale,intnumber)中参数有 MyColor 对象数组pale 以及颜色数

33、量 number。该构造方法设置当前调色板对象的颜色数量,用 this.number 表示当前对象的 number 属性,将参数 palette 数组赋值给当前对象的 palette,用 this.palette 表示当前对象的palette 属性。toStringO 方法用来构造并返回 palette 中每个颜色对象的颜色的字符串,供测试使用。在 toString()方法体内部,构造字符串时用+进行拼接 palettei时,每个数组元素调用当前对象的toString()构造并返回一个 RGB 颜色的字符串。 Drawing 类属性 int COLORNUMBER 定义绘画时所用的颜色数量(本

34、例中设置为 16 表示基于 16 色绘图)。main()方法声明调色板 Palette palette、定义 COLORNUMBER 色 MyColor 对象数组 color,即: MyColorcolor=new MyColorCOLORNUMBER; 随机生成 RGB 颜色并根据此颜色创建 COLORNl7MBER 个 MyColor 对象,即循环 COLORNUMBER 次,每次循环生成随机的 RGB 颜色后调用 MyColor 的带参数构造器创建 MyColor 对象,即: colori=new MyColor(red,green,blue); 所有颜色数组创建完成后,基于所创建的 C

35、OLORNUMBER 个 MyColor 对象数组创建调色板,即: palette=new Palette(color, COLORNUMBER); 采用 System.out.println(palette);进行打印(模拟绘图),其中会自动调用调色板的 toString()方法。由于 COLORNIMBER 的作用是绘图的颜色数量,在创建 MyColor 对象数组时作为元素个数,所以,需要是static final 静态常量。 综上所述,空(1)需要表示 MyColor 对象数组,即 MyColor;空(2)需要表示当前对象的 number 属性,即 this.number;空(3)需要当前对象的 palette 属性,即 this.palette;空(4)需要表示 COLORNUMBER 为静态常量,即 static final:空(5)处为创建 MyColor 类的对象,即 new MyColor。

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

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

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