[计算机类试卷]2013年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc
《[计算机类试卷]2013年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]2013年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc(15页珍藏版)》请在麦多课文档分享上搜索。
1、2013年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析 1 阅读以下说明和流程图,填补流程图中的空缺 (1) (5),将解答填入答题纸的对应栏内。【说明】 两个包含有限个元素的非空集合 A、 B的相似度定义为|AB|/|A B|,即它们的交集大小 (元素个数 )与并集大小之比。 以下的流程图计算两个非空整数集合 (以数组表示 )的交集和并集,并计算其相似度。已知整数组A1: m和 B1: n分别存储了集合 A和 B的元素 (每个集合中包含的元素各不相同 ),其交集存放于数组 C1: s,并集存放 于数组 D1: t,集合 A和 B的相似度存放于 SIM。 例如,假设
2、 A=1, 2, 3, 4, B=1, 4, 5, 6,则 C=1, 4),D=1, 2, 3, 4, 5, 6), A与 B的相似度 SIM=1 3。【流程图】2 阅读以下说明和 C函数,填充函数中的空缺,将解答填入答题纸的对应栏内。【说明】 下面的函数 sort(int n, int a)对保存在数组 a中的整数序列进行非递减排序。由于该序列中的元素在一定范围内重复取值,因此排序方法是先计算出每个元素出现的次数并记录在数组 b中,再从小到大顺序地排列各元素即可得 到一个非递减有序序列。例如,对于序列 6, 5, 6, 9, 6, 4, 8, 6, 5,其元素在整数区间4, 9内取值,因此使
3、数组元素 b0-b5的下标 0-5分别对应数值 4-9,顺序地扫描序列的每一个元素并累计其出现的次数,即将 4的个数记入 b0, 5的个数记入b1,依此类推, 9的个数记入 b5。最后依次判断数组 b的每个元素值,并将相应个数的数值顺序地写入结果序列即可。 对于上例,所得数组 b的各个元素值如下: 那么在输出序列中写入 1个4、 2个 5、 4个 6、 1个 8、 1个 9,即得 4, 5, 5, 6, 6, 6, 6, 8, 9,从而完成排序处理。【 C函数】 void sort(int n, int a) int*b; int i , k|number; int minimum=a0, m
4、aximum=a0; /*minimum和 maximum分别表示数组 a的最小、最大元素值 */ for(i=1; i n; i+) if(1)minimum=ai; else if(2)maximum=ai; number=maximum-minimum+1; if(number =1)return;b=(int*)calloc(number, Sizeof(int); if(!b) return; for(i=0; i n; i+)/*计算数组a的每个元素值出现的次数并记入数组 b*/ k=ai-minimum; +bk; /*按次序在数组 a中写入排好的序列 */ i= (3) ; f
5、or(k=0; k number; k+) for(; (4); -bk) ai+=minimum+ (5) ; 3 阅读以下说明和 C代码,填充代码中的空缺,将解答填入答题纸的对应栏内。 【说明 1】 下面的函数 countCharq(char*text)统计字符串 text中不同的英文字母数和每个英文字母出现的次数 (英文字母不区分大小写 )。 【 C代码 1】 int countChar(char *text ) int i, sum=0; /*sum保存不同的英文字母数 */ char*ptr; int c2 6=0; *数组 C保存每个英文字母出现的次数 * *c0记录字母 A或 a
6、的次数, c1记录字母 B或 b的次数,依此类推 * ptr= (1 ); *ptr初始时指向字符 串的首字符 * while(*ptr) if(isupper(*ptr) c*ptr-A+; else if(islower(*ptr) C*ptr-a+; ( 2); /*指向下一个字符 */ for(i=0; i int fl(int(*f)(int); int f2(int); int f3(int); int main() printf(“ d n“, fl(4); printf(” d n”, fl(5); return 0; int fl(int(*f)(int) int n=0;
7、/*通过函数指针实现函数调用,以返回值作为循环条件 */ while ( (6 ) ) n+; retUrn n; int f2(int n) printf(“f2: “); return n*n-4; int f3(int n) printf(“f3: “); return n-1; 4 阅读以下说明和 C程序,填充程序中的空缺,将解答填入答题纸的对应栏内。 【说明】 正整数 n若是其平方数的尾部,则称 n为同构数。例如, 6是其平方数 36的尾部, 76是其平方数 5776的尾部, 6与 76都是同构数。下面的程序求解不超过10000的所有同构数。 已知一位的同构数有三个: 1, 5, 6
8、,因此二位同构数的个位数字只可能是 1,5, 6这三个数字。依此类推,更高位数同构数的个位数字也只可能是 1, 5, 6这三个数字。 下面程序的处理思路是:对不超过 10000的每一个整数 a,判断其个位数字,若为 1、 5或 6,则将 a转换为字符串 as,然后对 a进行平方运算,并截取其尾部与as长度相等的若干字符形成字符串后与 as比较,根据它们相等与否来断定 a是否为同构数。 【 C程序】 #include #include #include int myitoa(int, char*); *将整数转换为字符串 * *right取得指定字符串尾部长度为 length的子串,返回所得子串
9、的首字符指针 * char*right(char*, int length); int main() int a, t; int len; char as1 0, rs2 0; printf(“1, 10000内的同构数: n“); for(a=1; aisEmergency = false; PoliceCar(b001 b) : Car(), Emergency() this一 isEmergency=b; PoliceCar() bool isEmergent() return (4 ); ) void runRedLight() *代码略 * ; /*类Ambulance、 FireE
10、ngine实现代码略 */ class Traficcontrolsystem *交通控制类 * private: Vehicle*v24; int numVehicles; *在构造函数中设置初始值为 0* public: void control() 控制在紧急情况 下应急车辆红灯通行,其他情况按常规通行 for(int i=0; i(Vi); if(ev!=0) (5 ) -runRedLight(); else (6)-run(); void add(Vehicle*vehicle) vnumVehicles+=vehicle; *添加车辆 * void shutDown()for(i
11、nt i=0; iadd(new Car(); tcs-add(new PoliceCar(); tcs-add(new Ambulance(); tcs-add(new Ambulance(true); tcs-add(new FireEngine(true); tcs-add(new FireEngine(); tcs-add(new Truck(); tcs-control(); tcs-shutDown(); delete tcs; 6 阅读以下说明和 Java代码,填充程序中的空缺,将解答填入答题纸的对应栏内。 【说明】 某应急交通控制系统 (TraficControlSystem)
12、在红灯时控制各类车辆 (Vehicle)的通 行,其类图如图 6 1所示,在紧急状态下应急车辆在红灯时可通行,其余车辆按正常规则通行。下面的 Java代码实现以上设计,请完善其中的空缺。 Java代码 abstract clasS Vehicle public Vehicle() abstract void run(); , interface Emergency (1) ; (2) ; ; ClasS Car extends VehiCle public Car() void run() *代码略 * , Class Truck extends Vehicle publiC Truck()
13、void run() *代码略 * ; clasS PoliceCar (3) boolean isEmergency= false; public PoliceCar() public PoliceCar(boolean b) f thiS isEmergency=b; public boolean isEmergent() return ( 4); public void runRedLight() *代码略 * , /*类 Ambulance、 FireEngine实现代码略 */ public class Traficcontrolsystem *交通控制类 * private Veh
14、iclev=new Vehicle2 4; int numVehicleS; public void control() for(int i=0; i numVehicleS;i+) if(viinstanceof Emergency(Emergency)Vi) isEmergent() ( (5 ) ) runRedLight(); else (6) run(); void add(Vehicle vehicle) vnumVehicles+=vehicle; *添加车辆* void shutDown() *代码略 * public static void main(Stringargs)
15、TraficControlSystem tcs = new TraficControlSystem(); tcs add(new Car(); tcs add(new PoliceCar(); tcs add(new Ambulance(); tcs add(new Ambulance(true); tcs add(new FireEngine(true); tcs add(new Truck(); tcs add(new FireEngine(); tcs control(); tcs shutDown(); 2013年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷答案与解析
16、1 【正确答案】 (1)s (2)t (3)Cs (4)Dt (5)s t 【试题解析】 首先我们来理解两个有限集合的相似度的含义。两个包含有限个元素的非空集合 A、 B的相似度定义为它们的交集大小 (元素个数 )与并集大小之比。如果两集合完全相等,则相似度必然为 1(100 );如果两集合完全不同 (没有公共元素 ),则相似度必然为 0;如果集合 A中有一半元素就是集合 B的全部元素,而另一半元素不属于集合 B,则这两个集合的相似度为 0 5(50 )。因此,这个定义符合人们的常理性认识。 在大数据应用中,经常要将很多有限集进行分类。例如, 每天都有大量的新闻稿。为了方便用户检索,需要将新闻
17、稿分类。用什么标准来分类呢 ?每一篇新闻稿可以用其中所有的关键词来表征。这些关键词的集合称为这篇新闻稿的特征向量。两篇新闻稿是否属于同一类,依赖于它们的关键词集合是否具有较高的相似度 (公共关键词个数除以总关键词个数 )。搜索引擎可以将相似度超过一定水平的新闻稿作为同一类。从而,可以将每天的新闻稿进行分类,就可以按用户的需要将某些类的新闻稿推送给相关的用户。 本题中的集合用整数组表示,因此,需要规定同一数组中的元素各不相同 (集合中的元素是各不相同的 )。题中 ,整数组 A1: m和 B1: n分别存储了集合 A和B的元素。流程图的目标是将 A、 B中相同的元素存放入数组 C1: s(共 s个
18、元素 ),并将 A、 B中的所有元素 (相同元素只取一次 )存放入数组 D1: t(共 t个元素 ),最后再计算集合 A和 B相似度 s t。 流程图中的第一步显然是将数组 A中的全部元素放入数组 D中。随后,只需要对数组 B中的每个元素进行判断,凡与数组 A中某个元素相同时,就将其存入数组 C;否则就续存入数组 D(注意,数组 D中已有 m个元素 )。这需要对 j(遍历数组 B)与 i(遍历数组 A)进行两重循环。判断 框 BD=Ai成立时, BD应存入数组c;否则应继续 i循环,直到循环结束仍没有相等情况出现时,就应将 B啪存入数组 D。存入数组 C之前,需要将其下标 s增 1;存入数组
19、D之前,需要将其下标 t增 1。因此,初始时,应当给 j赋 0,使数组 C的存数从 C1开始。从而, (1)处应填 s, (3)处应填 Cs。而数组 D是在已有 m个元素后续存,所以,初始时,数组D的下标 t应当是 m,续存是从 Dm+1开始的。因此, (2)处应填 t, (4)处应填Dt。 两重循环结束后,就要计算相似 度 s t,将其赋予 SIM,因此 (5)处应填 s t。 2 【正确答案】 (1)aimaximum,或 ai=maximum,或其等价形式 (3)0 (4)bk,或 bk0,或 bk!=0,或其等价形式 (5)k 【试题解析】 本题考查 C程序的基本语法和运算逻辑。 首先
20、应认真分析题目中的说明,然后确定代码结构和各变量的作用。 空 (1)和 (2)所在 for语句的功能是求出数组 a中的最小元素 minimum和最大元素maximum。在设置了 minimum和 maximum的初始值后,空 (1)处的判断条件是只要目前的元素 ai小于 minimum,就需要更新 minimum,反之,空 (2)处的判断条件是只要目前的元素 ai大于 maximum,就需要更新 maximum,因此空 (1)处应填入 aimaximum或其等价方式。 minimum和 maximum的作用是要确定计数数组 b的大小。 根据题目中的描述,序列中的每个元素 ai都对应到计数数组
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 2013 年下 半年 软件 水平 考试 初级 程序员 下午 应用技术 试题 答案 解析 DOC

链接地址:http://www.mydoc123.com/p-493119.html