首页整卷下载分项下载 试卷搜索题目搜索全站搜索招考信息

2012年上半年程序员下午试卷案例

分类:软考/初级_程序员    来源:软考

1
 
已知数组A[l:n]中各个元素的值都是非零整数,其中有些元素的值是相同的(重复)。为删除其中重复的值,可先通过以下流程图找出所有的重复值,并对所有重复值赋0标 记。该流程图采用了双重循环。
处理思路:如果数组A某个元素的值在前面曾出现过,则该元素赋标记值0。例如, 假设数组A的各元素之值依次为2, 5, 5,1,2, 5, 3,则经过该流程图处理后,各元素之值依次为2,5,0, 1,0,0,3。

 
问题:1.1   填补流程图中的空缺(1)〜(5)
 
 
2
 
设在某C系统中为每个字符型数据分配1个字节,为每个整型(int)数据分配4个字节,为每个指针分配4个字节,sizeof(x)用于计算为x分配的字节数。
 
问题:2.1   请写出以上C代码的运行结果。
 
问题:2.2   (1) 请定义一个“只读”型的整型常量size,并将其值初始化为10;
(2) 请定义一个指向整型变量a的指针ptr,使得ptr的值不能修改,而ptr所指向的目标变量的值可以修改(即可以通过ptr间接修改整型变量a的值)。
注:无需给出整型变量a的定义。
 
问题:2.3   某C程序文件中定义的函数f如下所示,请简要说明其中static的作用,以及形参 表 “const int arr[]’’ 中 const 的作用。
 
 
2
 
设在某C系统中为每个字符型数据分配1个字节,为每个整型(int)数据分配4个字节,为每个指针分配4个字节,sizeof(x)用于计算为x分配的字节数。
 
问题:2.1   请写出以上C代码的运行结果。
 
问题:2.2   (1) 请定义一个“只读”型的整型常量size,并将其值初始化为10;
(2) 请定义一个指向整型变量a的指针ptr,使得ptr的值不能修改,而ptr所指向的目标变量的值可以修改(即可以通过ptr间接修改整型变量a的值)。
注:无需给出整型变量a的定义。
 
问题:2.3   某C程序文件中定义的函数f如下所示,请简要说明其中static的作用,以及形参 表 “const int arr[]’’ 中 const 的作用。
 
 
3
 
函数numberOfwords (char message[])的功能是计算存储在message字符数组中的一段英文语句中的单词数目,输出每个单词(单词长度超过20时仅输出其前20个字母), 并计算每个英文字母出现的次数(即频数),字母计数时不区分大小写。
假设英文语句中的单词合乎规范(此处不考虑单词的正确性),单词不缩写或省略, 即不会出现类似don't形式的词,单词之后都为空格或标点符号。
函数中判定单词的规则是:
(1) 一个英文字母串是单词;
(2) 一个数字串是单词;
(3) 表示名词所有格的撇号(')与对应的单词看作是一个单词。
除上述规则外,其他情况概不考虑。


 
问题:3.1   填补C函数中的空缺(1)〜(6)
 
 
4
 
函数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中进行顺序查找,查找与LA的当前元素相同者,方法是令LA的当前元素先与LB的第一个元素进行比较,若相等,则结束在LB中的查找过程,否则继续与LB的下一个元素比较,重复以上过程,直到LB中的某一个元素与LA的当前元素相等 (表明查找成功),或者到达LB的表尾(表明查找失败)为止。
(3) 结束在LB表的一次查找后,若在LB中发现了与LA的当前元素相同者,则删除LA的当前元素,否则保留LA的当前元素。
(4) 取LA的下一个元素为当前元素,重复(2)、(3),直到LA的表尾。



 
问题:4.1   填补C函数中的空缺(1)〜(5)
 
 
5
 
已知某公司按周给员工发放工资,其工资系统需记录每名员工的员工号、姓名、工 资等信息。其中一些员工是正式的,按年薪分周发放(每年按52周计算);另一些员工 是计时工,以小时工资为基准,按每周工作小时数核算发放。
 下面是实现该工资系统的C++代码,其中定义了四个类:工资系统类PayRoll,员工 类 Employee,正式工类 Salaried 和计时工类 Hourly, Salaried 和 Hourly 是 Employee 的子类。

【C++代码】


 
问题:5.1   填补C++代码中的空缺(1)〜(6)
 
 
6
 
已知某公司按周给员工发放工资,其工资系统需记录每名员工的员工号、姓名、工 资等信息。其中一些员工是正式的,按年薪分周发放(每年按52周计算);另一些员工 是计时工,以小时工资为基准,按每周工作小时数核算发放。
下面是实现该工资系统的Java代码,其中定义了四个类:工资系统类PayRoll,员 工类 Employee,正式工类 Salaried 和计时工类 Hourly,Salaried 和 Hourly 是 Employee的子类。
 
[Java代码】 



 
问题:6.1   填补Java代码中的空缺(1) ~ (6)