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

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

1、计算机水平考试初级程序员 2012 年上半年下午真题及答案解析(总分:90.00,做题时间:150 分钟)一、问答题(总题数:6,分数:90.00)1.阅读以下说明和流程图,填补流程图中的空缺(1)(5),将解答填入答题纸的对应栏内。 说明 已知数组 A1:n中各个元素的值都是非零整数,其中有些元素的值是相同的(重复)。为删除其中重复的值,可先通过以下流程图找出所有的重复值,并对所有重复值赋 0 标记。该流程图采用了双重循环。 处理思路:如果数组 A 某个元素的值在前面曾出现过,则该元素赋标记值 0。例如,假设数组 A 的各元素之值依次为 2,5,5,1,2,5,3,则经过该流程图处理后,各元

2、素之值依次为 2,5,0,1,0,0,3。 流程图 (分数:15.00)_阅读以下说明、C 程序代码和问题 1 至问题 3,将解答写在答题纸的对应栏内。(分数:15.00)(1).说明 1 设在某 C 系统中为每个字符型数据分配 1 个字节,为每个整型 (int)数据分配 4 个字节,为每个指针分配 4 个字节,sizeof(x)用 于计算为 x 分配的字节数。 C 代码 #include #include int main() int arr5=10,20,30; char mystr=“JustAtestn“; char *ptr=mystr; printf(“%d %d %dn“,siz

3、eof(int),sizeof(unsigned int),sizeof(arr); printf(“%d %dn“,sizeof(char),sizeof(mystr); printf(“%d %dn“,sizeof(ptr),sizeof(*ptr),strlen (ptr); return 0; 问题 1(8 分) 请写出以上 C 代码的运行结果。(分数:5.00)_(2).说明 2 const 是 C 语言的一个关键字,可以用来定义“只读”型变量。 问题 2(4 分) (1)请定义一个“只读”型的整型常量 size,并将其值初始化为 10; (2)请定义一个指向整型变量 a 的指针 p

4、tr,使得 ptr 的值不能修改,而 ptr 所指向的目标变量的值可以修改(即可以通过 ptr 间接修改整型变量 a 的值)。 注:无需给出整型变量 a 的定义。(分数:5.00)_(3).问题 3(3 分) 某 C 程序文件中定义的函数 f 如下所示,请简要说明其中 static 的作用,以及形参表“const int arr”中 const 的作用。 static int f(const int arr) /*函数体内的语句省略*/ (分数:5.00)_2. 阅读以下说明和 C 函数,填补 C 函数中的空缺(1)(6),将解答写在答题纸的对应栏内。 说明 函数 numberOfwords

5、(char message)的功能是计算存储在 message 字符数组中的一段英文语句中的单词数目,输出每个单词(单词长度超过 20 时仅输出其前 20 个字母),并计算每个英文字母出现的次数(即频数),字母计数时不区分大小写。 假设英文语句中的单词合乎规范(此处不考虑单词的正确性),单词不缩写或省略,即不会出现类似 dont 形式的词,单词之后都为空格或标点符号。 函数中判定单词的规则是: (1)一个英文字母串是单词; (2)一个数字串是单词; (3)表示名词所有格的撇号()与对应的单词看作是一个单词。 除上述规则外,其他情况概不考虑。 例如,句子“The l990s witnessed

6、many changes in peoples concepts of conservation.”中有 10 个单词,输出如下: The 1990s witnessed many changes in peoples in peoples concepts of conservation 函数 numberOfwords 中用到的部分标准库函数如下表所述。 (分数:15.00)_3. 阅读以下说明和 C 函数,填补 C 函数中的空缺(1)(5),将解答写在答题纸的对应栏内。 说明 函数 SetDiff(LA,LB)的功能是将 LA 与 LB 中的共有元素从 LA 中删除,使得 LA 中仅保留

7、与 LB 不同的元素,而 LB 不变,LA 和 LB 为含头结点的单链表的头指针。 例如,单链表 LA、LB 的示例如图 4-1 中的(a)、(b)所示,删除与 LB 共有的元素后的 LA 如图 4-1 中的(c)所示。 函数 SetDiff(LinkList LA,LinkList LB)的处理思路如下: (1)从 LA 的第一个元素结点开始,令 LA 的第一个元素为当前元素。 (2)在 LB 中进行 J 顷序查找,查找与 LA 的当前元素相同考,方法是令 LA 的当前元素先与 LB 的第一个元素进行比较,若相等,则结束在 LB 中的查找过程,否则继续与 LB 的下一个元素比较,重复以上过程

8、,直到 LB 中的某一个元素与 LA 的当前元素相等(表明查找成功),或者到达 LB 的表尾(表明查找失败)为止。 (3)结束在 LB 表的一次查找后,若在 LB 中发现了与 LA 的当前元素相同者,则删除 LA 的当前元素,否则保留 LA 的当前元素。 (4)取 LA 的下一个元素为当前元素,重复(2)、(3),直到 LA 的表尾。 (分数:15.00)_4. 阅读以下说明和 C+代码,填补 C+代码中的空缺(1)(6),将解答写在答题纸的对应栏内。 说明 已知某公司按周给员工发放工资,其工资系统需记录每名员工的员工号、姓名、工资等信息。其中一些员工是正式的,按年薪分周发放(每年按 52 周

9、计算);另一些员工是计时工,以小时工资为基准,按每周工作小时数核算发放。 下面是实现该工资系统的 C+代码,其中定义了四个类:工资系统类 PayRoll,员工类 Employee,正式工类 Salaried 和计时工类 Hourly,Salaried 和 Hourly 是 Employee 的子类。 (分数:15.00)_5. 阅读以下说明和 Java 代码,填补 Java 代码中的空缺(1)(6),将解答写在答题纸的对应栏内。 说明 己知某公司按周给员工发放工资,其工资系统需记录每名员工的员工号、姓名、工资等信息。其中一些员工是正式的,按年薪分周发放(每年按 52 周计算):另一些员工是计时

10、工,以小时工资为基准,按每周工作小时数核算发放。 下面是实现该工资系统的 Java 代码,其中定义了四个类:工资系统类PayRoll,员工类 Employee,正式工类 Salaried 和计时工类 Hourly,Salaried 和 Hourly 是 Employee 的子类。 (分数:15.00)_计算机水平考试初级程序员 2012 年上半年下午真题答案解析(总分:90.00,做题时间:150 分钟)一、问答题(总题数:6,分数:90.00)1.阅读以下说明和流程图,填补流程图中的空缺(1)(5),将解答填入答题纸的对应栏内。 说明 已知数组 A1:n中各个元素的值都是非零整数,其中有些元

11、素的值是相同的(重复)。为删除其中重复的值,可先通过以下流程图找出所有的重复值,并对所有重复值赋 0 标记。该流程图采用了双重循环。 处理思路:如果数组 A 某个元素的值在前面曾出现过,则该元素赋标记值 0。例如,假设数组 A 的各元素之值依次为 2,5,5,1,2,5,3,则经过该流程图处理后,各元素之值依次为 2,5,0,1,0,0,3。 流程图 (分数:15.00)_正确答案:(1)n1 (2)Ai (3)i+1 (4)Aj (5)Aj)解析: 在处理大批数据记录时,删除重复记录(关键词重复的记录)是常见的操作。本题源自这种应用。删除重复记录算法可分两步进行。第一步将重复出现的多余元素标

12、记为 0;第二步再删除所有的 0 元素。本题流程图只做第一步处理。 本流程图采用了对 i 和i 的双重循环,对每个元素 Ai,需要查看其后面的各个元素(用 Aj表示)是否与 Ai相同。因此,外层循环应对 i1,n1 进行,从而在(1)处应填“nl”。内层循环应对,j=i+1,n 进行,从而在(3)处应填“i+1”。 在外循环处理中首先应判断 Ai是否已经标记为 0,若是则无需进一步处理。因此,(2)处应填“Ai”。而在内循环处理中首先应判断Aj是否已经标记为 0,若是则无需进一步处理。因此,(4)处应填“Aj”。如果发现元素重复(即 Ai=Aj),则需要再将 Aj赋值为 0(标记),因此(5)

13、处应填“Aj”。阅读以下说明、C 程序代码和问题 1 至问题 3,将解答写在答题纸的对应栏内。(分数:15.00)(1).说明 1 设在某 C 系统中为每个字符型数据分配 1 个字节,为每个整型 (int)数据分配 4 个字节,为每个指针分配 4 个字节,sizeof(x)用 于计算为 x 分配的字节数。 C 代码 #include #include int main() int arr5=10,20,30; char mystr=“JustAtestn“; char *ptr=mystr; printf(“%d %d %dn“,sizeof(int),sizeof(unsigned int)

14、,sizeof(arr); printf(“%d %dn“,sizeof(char),sizeof(mystr); printf(“%d %dn“,sizeof(ptr),sizeof(*ptr),strlen (ptr); return 0; 问题 1(8 分) 请写出以上 C 代码的运行结果。(分数:5.00)_正确答案:(4 4 20 1 11 4 1 10)解析: sizeof 是 C 语言提供的一个关键字,sizeof(x)用于计算为 x 分配的字节数,其结果与系统或编译器相关。若 x 是数组名时,用于计算整个数组所占用存储空间的字节数;若 x 是指针,则无论其指向的目标数据是什么类

15、型,x 所占用的存储空间大小都相同(在同一系统或编译环境中);若 x 是结构体变量或类型,则需要根据系统规定的对齐要求来计算为 x 所分配空间的字节数。 根据说明,系统为每个字符型数据分配 1 个字节,为每个整型(int)数据分配 4 个字节,为每个指针分配 4 个字节,那么 sizeof(int)、sizeof(unsigned int)是计算整型数据和无符号整型数据的存储空间大小,sizeof(arr)是计算数组 arr的字节数,它们的值分别为 4、4 和 20。 sizeof(char)计算一个字符数据所占用的字节数,根据说明应为 1。sizeof(mystr)计算为字符数组 mystr

16、 分配的空间大小,该数组的大小由字符串”JustAtesth”决定,该字符串的长度为 10,还有一个串尾结束标志字符0,因此 sizeof(mystr)的值为 11。 ptr 是指向字符数组 mystr 的指针,显然 sizeof(ptr)的结果为 4。由于*ptr 指向了一个字符数据,因此sizeof(*ptr)的结果为 1,函数 strlen(ptr)计算 ptr 所指字符串的长度,结果为 10。(2).说明 2 const 是 C 语言的一个关键字,可以用来定义“只读”型变量。 问题 2(4 分) (1)请定义一个“只读”型的整型常量 size,并将其值初始化为 10; (2)请定义一个

17、指向整型变量 a 的指针 ptr,使得 ptr 的值不能修改,而 ptr 所指向的目标变量的值可以修改(即可以通过 ptr 间接修改整型变量 a 的值)。 注:无需给出整型变量 a 的定义。(分数:5.00)_正确答案:(1) const int size = 10; 或 int const size = 10; (2) int * const ptr = )解析: 在 C 语言中,const 关键字的一个作用是限定一个变量的值不能被改变,使用 const 可以在一定程度上提高程序的安全性和可靠性。 const int size = 10; 或 int const size = 10; 以上代

18、码都可以定义一个“只读”型的整型常量 size 并将其值初始化为 10。 当 const 用于修饰指针,常见的情形如下:(1)const 修饰的是指针所指向的对象,该对象不可改变,指针变量可改变。 const int *p; /或 int const *p; (2) const 修饰的是指针,该指针变量不可改变,其指向的对象可改变。 int *const p; (3)const 修改的是指针以及指针所指向的对象,都不可改变。 const int *const p;(3).问题 3(3 分) 某 C 程序文件中定义的函数 f 如下所示,请简要说明其中 static 的作用,以及形参表“const

19、 int arr”中 const 的作用。 static int f(const int arr) /*函数体内的语句省略*/ (分数:5.00)_正确答案:(static 的作用:说明 f 是内部函数,只能在本文件中调用它。 const 的作用:在函数 f 中不能修改数组元素的值,若有修改,编译时会报错。)解析: 关键字 static 用于修饰函数中的局部变量时,是通知编译器将该变量的存储空间安排在全局存储区,这样在下一次调用函数时还保留上一次对该变量的修改结果。 当一个源程序由多个源文件组成时,用 static 修饰的全局变量和函数,其作用域为当前文件,对其他源文件不可见,即它们不能被其他

20、源文件引用或调用。 当函数的形参用 const 修饰时,在函数体内部不能被修改。2. 阅读以下说明和 C 函数,填补 C 函数中的空缺(1)(6),将解答写在答题纸的对应栏内。 说明 函数 numberOfwords (char message)的功能是计算存储在 message 字符数组中的一段英文语句中的单词数目,输出每个单词(单词长度超过 20 时仅输出其前 20 个字母),并计算每个英文字母出现的次数(即频数),字母计数时不区分大小写。 假设英文语句中的单词合乎规范(此处不考虑单词的正确性),单词不缩写或省略,即不会出现类似 dont 形式的词,单词之后都为空格或标点符号。 函数中判定

21、单词的规则是: (1)一个英文字母串是单词; (2)一个数字串是单词; (3)表示名词所有格的撇号()与对应的单词看作是一个单词。 除上述规则外,其他情况概不考虑。 例如,句子“The l990s witnessed many changes in peoples concepts of conservation.”中有 10 个单词,输出如下: The 1990s witnessed many changes in peoples in peoples concepts of conservation 函数 numberOfwords 中用到的部分标准库函数如下表所述。 (分数:15.00)

22、_正确答案:( )解析: 本题考查 C 语言程序设计基本技术。 题目中涉及的知识点主要有字符串、字符指针和函数调用等,首先应认真阅读题目的说明部分,以了解函数代码的功能和大致的处理思路,然后理清代码的框架,明确各个变量(或数组元素)所起的作用,并以语句组分析各段代码的功能,从而完成空缺处的代码填充。 函数中空(1)处所在语句为定义变量 pstr 的声明语句,根据下面对 pstr 的使用方式,可知 pstr 是一个指向字符的指针变量,因此空(1)处应填入“char*”。 显然,“pstrmessage;”使 pstr 指向了英文语句的第一个字符,下面的 while 循环则用于遍历语句中的每一个字

23、符: 对于语句中的一个字符*pstr,它可能是一个单词中的字符、空格、标点符号或其他字符,由于函数的功能是取出单词并进行统计,因此首先考虑该字符是否属于一个单词以及是否是单词的开头(字母或数字字符),结合注释,可知空(2)处用于判定当前字符*pstr 是否是单词的开头字符,即是否是字母或数字,由于代码中已给出了(*pstr),因此最合适的做法是直接调用库函数进行处理,即空(2)处应填入“isalnum”,也可以填入“isalpha(*pstr)isdigit”。 得到一个单词的开头字符后就用 do-while 语句依次取出该单词的每一个字符,直到单词结束为止。根据题目说明,单词中包含的字符为字

24、母、数字或撇号(),因此 do-while 继续循环的条件之一是表达式“isalnum(*pstr)|*pstr=“”的值为“真”,另一个条件是关于单词长度不超过 20 的限制。 分析空(3)所在的语句(如下所示),显然是对单词中的字母进行计数,在*pstr 是字母(isalpha(*pstr)的返回值为 1)的前提下,“ps*pstr-A+”是对小写字母进行计数,“ps*pstr-A+”是对大写字母进行计数,所以空(3)处应判断*pstr 是否为小写字母,应填入“islower”,或者填入“lisupper”。 3. 阅读以下说明和 C 函数,填补 C 函数中的空缺(1)(5),将解答写在答

25、题纸的对应栏内。 说明 函数 SetDiff(LA,LB)的功能是将 LA 与 LB 中的共有元素从 LA 中删除,使得 LA 中仅保留与 LB 不同的元素,而 LB 不变,LA 和 LB 为含头结点的单链表的头指针。 例如,单链表 LA、LB 的示例如图 4-1 中的(a)、(b)所示,删除与 LB 共有的元素后的 LA 如图 4-1 中的(c)所示。 函数 SetDiff(LinkList LA,LinkList LB)的处理思路如下: (1)从 LA 的第一个元素结点开始,令 LA 的第一个元素为当前元素。 (2)在 LB 中进行 J 顷序查找,查找与 LA 的当前元素相同考,方法是令

26、LA 的当前元素先与 LB 的第一个元素进行比较,若相等,则结束在 LB 中的查找过程,否则继续与 LB 的下一个元素比较,重复以上过程,直到 LB 中的某一个元素与 LA 的当前元素相等(表明查找成功),或者到达 LB 的表尾(表明查找失败)为止。 (3)结束在 LB 表的一次查找后,若在 LB 中发现了与 LA 的当前元素相同者,则删除 LA 的当前元素,否则保留 LA 的当前元素。 (4)取 LA 的下一个元素为当前元素,重复(2)、(3),直到 LA 的表尾。 (分数:15.00)_正确答案:(1)paLA-next (2)pb, 或 pb!=0, 或 pb!=NULL (3)pbpb

27、-next (4)pre-next (5)pre-next)解析: 本题考查 C 程序设计基本技术及指针的应用。 题目中涉及的考点主要有链表的查找、删除运算以及程序逻辑,分析程序时首先要明确各个变量所起的作用,并按照语句组分析各段代码的功能,从而完成空缺处的代码填充。 根据注释,空(1)处应为指针变量 pa 赋值,使其指向 LA 链表的第一个元素结点,由于 LA 为指向头结点的指针,因此空(1)处应填入“paLA-next”。 以指针 pa 的值为循环条件的以下循环语句用于遍历 LA 的每一个元素。 显然,通过“pb=LB-next”已经令 pb 指向了 LB 的第一个元素,接下来的 whil

28、e 语句就用于和 LB 的元素 pb-data 逐个比较,显然,空(2)处应填入“pb”,表明 pb 为非空指针,使得循环体中进行“padata=pb-data”运算时,pb 指针是有效的。在该循环中,若找到了两个链表的共有元素,则用 break 跳出循环,此时 pb 正指向 LB 中的该共有元素;否则继续在LB 中查找,那就需要在空(3)处填入“pb=pb-next”。 在 LB 结束查找后,如果找到了与 pa-data 相同的元素,则之前已经令 pb 指向它:若是没有找到,则 pb 是空指针。 因此,接下来根据 pb 的值判断是否需要删除 LA 的当前元素。若不删除,则执行语句组“prep

29、a;papa-next;”,继续考察 LA 的后续元素;若需删除(pa 指向的结点),则相关指针的指向如下图所示。 4. 阅读以下说明和 C+代码,填补 C+代码中的空缺(1)(6),将解答写在答题纸的对应栏内。 说明 已知某公司按周给员工发放工资,其工资系统需记录每名员工的员工号、姓名、工资等信息。其中一些员工是正式的,按年薪分周发放(每年按 52 周计算);另一些员工是计时工,以小时工资为基准,按每周工作小时数核算发放。 下面是实现该工资系统的 C+代码,其中定义了四个类:工资系统类 PayRoll,员工类 Employee,正式工类 Salaried 和计时工类 Hourly,Salar

30、ied 和 Hourly 是 Employee 的子类。 (分数:15.00)_正确答案:(1):public Employee (2)payRate/52 (3):public Employee (4)payRate*hours (5)Employee*或 static Employee* (6)employees)解析: 本题考查 C+语言程序设计能力,涉及类、对象、函数及虚函数的定义和相关操作,以及继承关系和多态。要求考生根据给出的案例和执行过程说明,认真阅读理清程序思路,然后完成题目。 根据本题中说明中描述,需要记录每名员工的员工号、姓名和工资等信息。公司员工分为正式工和计时工两类,正

31、式工和计时工的工资支付方式不同,根据面向对象设计的概念,这两种员工都是员工,设计时将公有属性和行为封装成抽象类,并使用继承关系设计两种不同员工类作为子类。因此,系统设计了 4 个类:工资系统类 PayRoll、员工类 Employee、正式工类 Salaried 和计时工类 Hourly,Salaried 和 Hourly 继承了Employee 类。Employee 中定义两类员工公有属性和方法,以及支付方式的接口标识,Salaried 和 Hourly需要在各自的类中有具体支付方式的实现。 根据类定义及其之间的关系,将 Employee 类中支付工资定义为纯虚函数,即 virtual vo

32、id pay()0;,这样就定义了支付方式的接口,子类中必须实现各自具体的支付方法。这样,在 PayRoll 中对 Salaried 和 Hourly 两类的对象使用同样的调用方式 ei-pay()达到不同支付效果,也就达到了多态。Salaried 和 Hourly 均继承了 Employee,并在 Salaried 和 Hourly 的构造函数中调用父类的构造函数,所以继承的权限为 public,其语法为:public 后加类名。Salaried 的工资发放方式为“按年薪分周发放(每年按 52 周计算)”,因此在 pay()方法的实现中,分周发放工资采用“年薪/52”进行计算。Hourly

33、的工资发放方式是“以小时工资为基准,按每周工作小时数核算发放”,即“小时工资周工作小时”进行计算。 在 maln()中创建了一组员工,用数组存储,由于数组元素包括Salaried 和 Hourly 两种,因此其声明类型采用父类类型 Employee 的指针,可以定义为静态数组,对象的创建采用 new 关键字加类名。集中对所有员工进行支付,将数据作为 payRoll 相同的 pay()的参数,即payRoll-pay(employees)。用 new 关键字创建的数组,在使用完成之后通过 delete 进行释放。 因此空(1)和(3)处添加继承父类,并且权限为 public,即:public E

34、mployee。空(2)和(4)处补充通过使用计算得到所发放的工资额,空(2)处为计算正式员工的周发放工资数,即 payRate/52;空(4)处为计时工的周发放工资数,即 payRate*hours。空(5)处定义员工数组的类型,即 Employee*或 static Employee*。空(6)处将员工数组传递给 pay()方法,即 employees。5. 阅读以下说明和 Java 代码,填补 Java 代码中的空缺(1)(6),将解答写在答题纸的对应栏内。 说明 己知某公司按周给员工发放工资,其工资系统需记录每名员工的员工号、姓名、工资等信息。其中一些员工是正式的,按年薪分周发放(每年

35、按 52 周计算):另一些员工是计时工,以小时工资为基准,按每周工作小时数核算发放。 下面是实现该工资系统的 Java 代码,其中定义了四个类:工资系统类PayRoll,员工类 Employee,正式工类 Salaried 和计时工类 Hourly,Salaried 和 Hourly 是 Employee 的子类。 (分数:15.00)_正确答案:(1) extends (2) annualSalary/52 (3) extends (4)hourlyPayRate*hours (5)Employee 或static Employee (6)employees (空(5)只能为 static

36、Employee)或 payRollemployees)解析: 本题考查 Java 语言程序设计能力,涉及类和抽象类、对象、方法及抽象方法的定义和相关操作,以及继承关系和多态。要求考生根据给出的案例和执行过程说明,认真阅读理清程序思路,然后完成题目。根据本题中说明中描述,需要记录每名员工的员工号、姓名和工资等信息。公司员工分为正式工和计时工两类,正式工和计时工的工资支付方式不同,根据面向对象设计的概念,这两种员工都是员工,设计时将公有属性和行为封装成抽象类,并使用继承关系设计两种不同员工类作为子类。因此,系统设计了四个类:工资系统类 PayRoll,员工类 Employee,正式工类 Sala

37、ried 和计时工类 Hourly,Salaried 和Hourly 继承了 Employee 类。Employee 中定义两类员工公有属性和方法,以及支付方式的接口标识,Salaried 和 Hourly 需要在各自的类中有具体支付方式的实现。 根据类定义及其之间的关系,将Employee 类定义为抽象类,其中支付工资定义为拍象方法,public abstract void pay();,这样就定义了支付方式的接口,子类中必须实现各自具体的支付方法。这样,在 PayRoll 中对 Salaried 和 Hourly两类的对象使用同样的调用方式 eipay()达到不同支付效果,也就达到了多态。

38、Salaried 和 Hourly 均继承了 Employee,其语法为 extends 后加类名,在两者的构造方法中调用父类的构造方法,进行相应的员工公共信息初始化操作,所以均在构造方法的第一句(必须是第一句)采用 super 调用父类构造方法。Salaried 的工资发放方式为“按年薪分周发放(每年按 52 周计算)”,因此在 pay()方法的实现中,每周发放工资采用“年薪52:进行计算。Hourly 的工资发放方式是“以小时工资为基准,按每周工作小时数核算发放”,即“小时工资周工作小时”进行计算。 在 PayRoll 中创建了一组员工,用数组存储,由于数组元素包括 Salaried 和

39、Hourly 两种,因此其声明类型采用父类类型 Employee,可以定义为静态数组,对象的创建采用 new 关键字加类名。在 PayRoll 中支付时,集中对所有员工进行支付,将数据作为payRoll 的 pay()的参数,在 Java 中用数组引用名直接作为参数,即 payRollpay(payRoll.employees)。因此空(1)和(3)处添加继承父类,即 extends。空(2)和(4)处补充通过使用计算得到所发放的工资数,空(2)处为计算正式员工的周发放工资数,即 annualSalary/52;空(4)处为计时工的周发放工资数,即hourlyPayRate*hours。空(5)处定义员工数组的类型,即 Employee 或 static Employee。空(6)处将员工数组的引用传递给 pay()方法,即 employees(空(5)只能为 static Employee)或 payRollemployees。

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

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

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