[计算机类试卷]2011年下半年软件水平考试(初级)程序员下午(应用技术)真题试卷及答案与解析.doc
《[计算机类试卷]2011年下半年软件水平考试(初级)程序员下午(应用技术)真题试卷及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]2011年下半年软件水平考试(初级)程序员下午(应用技术)真题试卷及答案与解析.doc(12页珍藏版)》请在麦多课文档分享上搜索。
1、2011年下半年软件水平考试(初级)程序员下午(应用技术)真题试卷及答案与解析 1 阅读以下说明和流程图,填补流程图中的空缺 (1) (5),将解答填入答题纸的对应栏内。 【说明】 下图所示的流程图用于检查数组 A1: n中的元素是否为自然数 1 n的一个排序 (含有 1 n个数 ),若是,则输出 OK,否则输出所缺的自然数及其个数 m。 为检查 Ai: n中是否含有 k,只要判断 P(k)=(A(1)-k)*(A(2)-k)*(A(n) -k)是否等于 0即可。【流程图】 2 阅读以下说明和 C程序代码,将解答写在 答题纸的对应栏内。 【说明】 下面是一个待修改的 C程序,其应该完成的功能是
2、:对于输入的一个整数num,计算其位数 k,然后将其各位数字逆序转换为字符串保存并输出。若 nun为负整数,则输出字符串应有前缀 “一 ”。例如,将该程序修改正确后,运行时若输入“14251”,则输出 “15241”;若输入 “一 6319870”,则输出 “一 0789136”。 下面给出的 C程序代码中有五处错误,请指出错误代码所在的行号并给出修改正确后的完整代码行。 【 C程序代码】 行号 代码 1 #include 2 #include 3 int main() 4 5 long num=0, t=0; char*pstr, i=0, k=0; 6 7 sancf(“ ld”, &nu
3、m); *输入一个整数,存入 num* 8 t=num; k: num!=0?0: 1; 9 while(t=0) *计算位数 * 10 t=t 10; 11 k+: 12 13 14 pstr=(char * )malloc(k+2)+sizeof(char); 15 If(pstr=0) return一 1; 16 17 i=0: 18 if(num 0) 19 num=一 num 20 pstr0=一 ; i=1; 21 22 for(; k0; k- -) *形成字符串 * 23 pstri+=num 10; 24 num=num 10: 25 26 pstrk= 0; *设置字符串结
4、尾 * 27 printf(“ s n”, pstr); 28 free(pstr); 29 return 0: 30 3 阅读以下说明和 C代码,填补 C代码中的空缺 (1) (5),将解答写在答题纸的对应栏内。 【说明】 某市在进行市长选举,该市共分为 M个选区 (1 M 6,从 1开始顺序编号 ),共有 N个候选者参选 (1 N 5,从 A开始顺序编号 )。经投票后,所得选票数据如下表所示。 现已将选票数据存入文本文件 data txt,该文件内容格式如下:共有 M行,每行N十 1个整数,第一个整数为选区编号,随后为 N个候选者在该选区所得票数。 下面的程序先从文件中读入选票数据存入二维
5、数组 data,然后完成下列功能: a计算并显示每个竞选者获得的选票数及占总选票数的百分比; b如果任一竞选者获得的选票数超过总票数的 50,则显示竞选者获胜; c如果没有竞选者获得总选票数的 50以上,则显示两位得票最高的竞选者需再进行决选。 在下 面的程序代码中,竞选者 A的编号为 1,竞选者 B的编号为 2,以此类推。【 C代码】#include#include#define M 5 *选区数 * #define N 4 *竞选者人数 * int main(int argc, char argv) FILE*fin; int dataM+1N+1; *data0存放选区编号,dataMJ
6、存放 J号竞选者得票总数 * int maxpl, cd1: *maxp1、 cd2存放得票最多者的票数和竞选者编号 * int maxp2, cd2; *maxp2、 cd2存放得票次数多者的票数和竞选者编号 * int i, j, totalP; *tatalp存放总票数 * fin=fopen(”data txt”, ”r”); Ii(!fin)return-1; i=0; j=0; While(!feof(fin) *从文件读入数据 * Fscanf(fin, ” d”, &dataij); (1) ; if(jN) j=0;i+; fclose(fin); totalP=0; max
7、pl=0; maxp2=0; cdl=0; cd2=0; for(j=1; jN+1; j+) dataMj= (2) ; *设置 j号竞选者的票总数初始值 * for(i=0; iM; i+) dataMj+=dataij: if(dataMj MAXP1) (3) ; cd2=cd1; MAXP1=dataMj; cd1=j; else if(dataMj MAXP2)MAXP2=dataMj;cd2=j; (4) ; *计算总票数 * for(j=1; j N+1; j+) printf(”candidatec: d ”, j+A一 1, dataMj); printf(” 21f n”
8、, (double)dataMjtotalP): printf(”n”): if( (5) 0 5) *判断得票数最多者的得票率 *printf(”winner: candidate- c n”, cdl+A 1); else printf(”result: candidate- c pk candidate- c n”, cd1 +A 1, cd2+A 1); system(”pause”); return 0: 4 阅读以下说明和 C函数,填补 C函数中的空缺 (1) (5),将解答写在答题纸的对应栏内。 【说明】 约瑟夫问题如下所述:有 n个人 (编号为 1 n)围成一圈,从第一个人开始
9、,按照顺时针方向从 1开始计数到 m(即数到第 m个人 ),让其出圈,然后再从其顺时针方向的下一个人开始,依次计数到 m并让其出圈,重复这个过程,直到所有人都出圈,试给出出圈者的顺序。 以 n=5, m=3为例,其中圈顺序为 3, 1, 5, 2, 4,过程如下图所示。 下面的函数Joseph()在单向循环链表表示的基础上输出出圈的过程 。 n为 5时的单向循环链表结构如下图所示。 链表的结合类型定义如下: Typedef struct Node int no; struct Node*next: node,*LinkList;函数 Joseph(LinkList tail, int n, i
10、nt m)的处理思路如下: (1)用 k计数,每次都从 0开始,当计数到 m一 1时结束本次计数; (2)通过指针 p查找出圈者所对应的结点,当 K的值等于 m一 1时, P应指向出圈者对应结点的前驱结点; (3)通过删除结点表示出圈处理; (4)当 m大于圈中剩余人数时,为了避免重复计 数,用模运算修改 m的值; (5)计数和删除操作完成后再恢复 m的原值。 【 C函数】 void Joseph(LinkList tail, int n, int m) LinkList p, q; int k, i, old_m=m; p=tail; for(i=n; i l; i- -) *i表示圈中剩余
11、人数 * m=m i; *避免重复计数 * if(0=m) m= (1) ; k=0; while(k (2) ) (3) ; k+; printf(” d n”, (4) ); *输出出圈者的编号 * q=p-next; (5) =q-next; *删除出圈者对应的结点 * free(q); M=old_m; printf(“ d n”, p-No); 5 阅读以下说明、图和 C+代码,填补 C+代码中的空缺 (1) (5),将解答写在答题纸的对应栏内。 【说明】 已知某公司主要有两大类耗电资产 (Asset):计算机(ComputerAsset)和建筑物 (BuildingAsset)。为
12、了节约 能源,通过控制各种电源,将可关闭的房灯、计算机显示器等在夜间关闭。 为了实现上述需求,设计了如下 图所示的类图,并用下面的 C+代码加以实现。 【 C+代码】 #include#includeusing namespace std; class Asset *通用资产,基类* public: virtual Asset(); ; class PowerSwitchable *抽象基类,可在夜间关闭电源的物体接口 * public: virtual void powerDown()=0; *powerDown()函数接口 * virtual void powerUP()=0; *powe
13、rUp()函数接口 * ; class computerAsset: public Asset *计算机资产 * protected: int deskNumber;public: computerAsset(int desNumber)this-deskNumber=deskNumber; ; class computerCPU (1) *计算机主机,永不关闭 * public: computerCPU(int desNumber): ComputerAsset(desNumber); class computerMonitor (2) *计算机显示器 * public: computerM
14、onitor(int roomNumber):omputerAsset(roomNumber), PowerSwitchable() computerMonitor()void powerDown() *关电源,代码省略 * void powerUp() *开电源,代码省略 * ; *BuildingAsset、 BuildingLight、 EmergencyLight和 RoomLiggts代码省略 * class BuldingManagementprivate: Asset*things24; int numltems;public: void goodnight() *值班员定时 “
15、关闭 ”时调用,关闭可关闭的电源 *for(int i=0; i numltems; i+) (3) ps=dynamic_cast(thingsi); if(ps!=0) ps-powerDown(); *goodMorning()与 goodNight()类似,依次调用 powerUp(),实现省略 * void add(Asset*thing) *为建筑添加资产 * yhings (4) =thing; ;int main()BuildingManagement*b1= (5) BuildingManagement(); b1-add(new RoomLights(101); 101房间
16、的控制灯 b1-add(new Emergencynight(i01); 101房间的应急灯 b1-add(new ComputerCPU(10104); 101房间 4号桌上的计算机 b1-add(new ComputerMonitor(10104); 101房间 4号桌上的计算机显示器 b1-goodNight(); Delete b1; 6 阅读以下说明、图和 Java代码,填补 Java代码中的空缺 (1) (5),将解答写在答题纸的对应栏内。 【说明】 已知某公司主要有两大类耗电资产 (Asset):计算机(ComputerAsset)和建筑物 (BuildingAsset)。为了节
17、约能源,通过控制各种电源,将可关闭的房灯、计算机显示器等在夜间关闭。 为了实现上述需求,设计了如下图所示的类 图,并用下面的 Java代码加以实现。 Java代码】 abstract class Asset *通用资产,基类 * interface PowerSwitchable *可在夜间关闭的电源的物体实现该接口 * public void void powerDown(); public void powerUP(); abstract class BuildingAsset extends Asset *建筑物资产 * protected int room; public Buildi
18、ngAsset(int room)this room=room; abstract class BuildingLight extends BuildingAsset 灯的通用信息: fluorescent incandescent等,略 BuildingLight(int room Number) super(roomNunaber); class Emergencynight (1) 应急灯,永不关闭 EmergrncyLight(int roomNumber) Super(roomNumber); 。 class RoomLights (2) RoomLights(int roomNur
19、ober)super(roomNumber); Public void powerDown() 关电源,代码省略 Public void powerUp() 开电源,代码省略 )*ComputerAsset、 ComputerCPU和 ComputerMonitor代码省略 * public class BuildingManagement Asset things=new Asset24; int numItems=0; public void goodnight() 值班员定时 “关闭 ”时调用,关闭可关闭的电源 for(int i=0: ithings length; i+) if(th
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 2011 年下 半年 软件 水平 考试 初级 程序员 下午 应用技术 答案 解析 DOC
