2005下半年程序员考试真题及答案-下午卷_第1页
2005下半年程序员考试真题及答案-下午卷_第2页
2005下半年程序员考试真题及答案-下午卷_第3页
2005下半年程序员考试真题及答案-下午卷_第4页
2005下半年程序员考试真题及答案-下午卷_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2005下半年程序员考试真题及答案 试题一至试题三是必答题 试题一(15分,每空3分) 阅读下列说明和流程图,将应填入 流程图说明 流程图1-1描述了一个算法,该算法将给定的原字符串中的所有前导空白和尾部空白都 删除,但保留非空字符的空白。例如,原字符串File Name ,处理变成File Name。 流程图1-2、流程图1-3、流程图1-4分别详细描述了流程图1-1中的框A、B 假设原字符串中的各个字符依次存放在字符数组ch的各元素ch(1) 、ch(2) 中,字符常量KB表示空白字符。 流程图1-1的处理过程是:先从头开始找出该字符串中的第一个非空白字符 从串尾开始向前找出位于最末位的非

2、空白字符ch(j),然后将ch(i) 、?、ch(j) (n)_ 处的字句写在答题纸的对应栏内。 Co 、?、ch(n) ch(i),再 依次送入 ch(1)、ch(2)、?中。如果字符串中没有字符或全是空白字符,则输出相应的说明。在流程 图中,strlen 是取字符串长度函数。 流程图1-1 C 1 Jch(k) 1 j i Y k-l 问题 在流程图1-1中,判断框P中的条件可表示为:i (5). 试题二(15,每空3分) 阅读以下函数说明和C语言函数,将应填入 (n)_ 处的字句写在答题纸的对应栏内。 说明 函数int find_Max_Min(int a ,int n)的功能是:找出

3、n个元素的数组 a中的最大 元素和最小元素并输出,返回查找过程中元素的比较次数。查找方法如下:比较a0和 an-1, 若a0大,则交换a0和an-1的值;再比较a1和an-2,若a1大, 则交换a1和an-2的值;依此类推,直到所有的元素都比较完。然后在数组的前半区 从前往后找出小元素,在后半区从后往前找出大元素。 函数 int fin d_Max_Mi n(i nt a ,i nt n) /*找出n个元素的数组a中的最大元素、最小元素并输出,返回查找过程中元素的 比较次数*/ int i,Cou nt = 0; int temp. Max num,Minnum; /*元素比较次数计数*/ f

4、or(i = 0; i a(1) /*数组元素交换代码略*/ Max num=a n-1; Mi nnu m=a0; for(i = 1; i n/2+ n %2; i+) Count =(2);/*元素比较次数计数*/ Minnum =? ai:Minnum;/* 找出最小元素 */ Max num =(4)?(5):Max num; /* 找出最大元素 */ prin tf(Max=%dn,Max num); prin tf(Mi n=%dn,Mi nn um); return Cou nt; 试题三(15分,每空3分) 阅读以下说明和 C语言函数,将应填入 说明 某种传感器的输出值 Ra

5、tio依赖于环境温度 度值(ITEMS个),人们已经测量得到了相应的 线 Ration(temp)。 (n)_ 处的字句写在答题纸的对应栏内。 temp(- 40CW tempW 50C)。对一组环境温 Ratio值(见表1)。该表粗略地描述了曲 环境温度temp 传感器的输出值Ratio -40C 0.20 -20C 0.60 -10C 0.80 0C 1.00 10C 1.17 30 C 1.50 50 C 1.80 表1曲线Ration(temp) 的列表值 环境温度temp 校正系数K -40C 5.00 -39C 4.55 -38C 4.17 -37C 3.85 -20C 1.67

6、-19C 1.61 -10C 1.25 -9C 1.22 50 C 0.56 表2曲线K(temp)的列表值 2中,各温度值所对应的K 校正系数K是Ratio的倒数,因此也依赖于环境温度 temp。在数据处理中,人们需要 用更多的列表值细致地描述曲线K( temp ),如表2所示。在表 值是对表1进行线性插值再求倒数得到的,具体的计算方法如下: 1. 根据temp值,在表1中用二分法查找; K值; Tp 1,T p2,同时获得了 2. 若找到相应的温度值,则按相应的Ratio值求倒数得到 3. 若没找到相应的温度值,则可确定temP所在的温度区间 相应的Ratiol和Ratio2 ,再按如下公

7、式计算 K值: Ste P = (Ratiol - Ratio2)/(T p1 - Tp2) K = 1.0/(Ratio1 + Ste p * (te mp - Tp 1) 在程序中,当temp高于50C或低于-40C时,设定 K=0b 程序 #in elude typ edef struct int Temp;/*环境温度*/ double Ratio;/*传感器的输出值*/ CURVE; #define ITEMS 7 double GetK(i nt,CURVE *,i nt); void mai n() int Degree; double k; CURVE CurveITEMS =

8、 -40,0.2,-20,0.60,-10,0.8,0,1.0, 10,1.17,30,1.50,50,1.8; printf(环境温度校正系数n); for(Degree = -40;Degree = 50; Degree+) k = GetK(Degree,Curve,ITEMS); prin tf(%3d %4.2fn,Degree,k); double GetK(i nt Temp ,CURVE *p ,i nt n) /*用二分法在n个元素的有序表p中查找与Temp对应的传感器输出值*/ int low,high,m; double Step; low = 0; high = n-1

9、; if (Te mp Te mp 川(Te mp (p+high)-Te mp) return 0.0;/*超出温度范围时返回0.0*/ while (low Te mp) return(2); if (Te mp Te mp) high = m-1; else low =(3); p += high; Ste p = (4)/(p+1)-Te mp - p-Te mp); return 1.0/( p-Ratio + Ste p * (); 试题四至试题五选答 1道 试题四(15分,每空3分) 阅读以下应用说明以及用Visual Basic开发过程中进行的属性设置和所编写的程序代 码,将应

10、填入 (n) 处的字句写在答题纸的对应栏内。 应用说明 启动某应用程序运行的登录窗口如下: 取消 登录窗口 密码fp) 其中的标签(Label1)用户名(U)对应文本框 Username ,标签(Label2)密码(P) 对应文本框Password。当用户在 Username文本框中输入用户名 ali88,在Password 文本框中输入zmkm(显示的字符均为*),并单击”确定按钮时,就会弹出应用程序的 主窗口 frmAPP,而该登录窗口就会卸载。 如果用户名或密码输入错误,则会弹出报警信息框。当用户单击其中的”确定”按钮后, 登录窗口 Password文本框的内容就会消失,光标停留在该框内

11、,以便用户重新输入密码, 必要时用户还可以再修改用户名,再次做登录尝试。 本应用程序允许发生 3次输入错误。在 第3次输入错误后,就会立即退出该应用程序。 在弹出登录窗口后,当按键 Alt+U时光标就会停留在 Use name文本框中;当按键 Alt+ P时光标就会停留在 Password文本框中。当用户按Enter键时,就相当于单击” 确定”按钮;当用户按Esc键时,就相当于单击”取消”按钮,立即退出该应用程序。 属性设置 在开发过程中,部分控件及属性设置如下: 对象 对象名 属性 属性值 标签 Label2 Cap ti on (1) 文本框 Usern ame Text (空白) 文本框

12、 Password Text (空白) P assword * 命令按钮 CmdOK Cap ti on 确定 Default (2) 命令按钮 CmdCa ncel Cap ti on 取消 Cancel True 程序代码 静态变量time的说明 Private Sub cmdOK_Click() (3)As In teger If _ The n Unload Me (5) Else MsgBox( 用户名密码错! Times = times+1 Password.Text = 卸载本登录窗口 弹出应用程序主窗口 frmAPP ) Password.SetFocus If times =

13、 3 Then End End If End Sub Private Sub cmdCancel_Click() End End Sub 清除密码框中的内容 将光标定位于密码框 试题五 (共 15 分) 阅读以下说明和 C 语言函数, 说明 二叉排序树或者是一棵空树, 子树上所有结点的值小于根结点的值; 根结点的值;左、右子树本身就是两棵二叉排序树。 函数 insert_BST(char *dtr)的功能是:对给定的字符序列按照 ASCII 码值大小关系 创建二叉排序树, 并返回指向树根结点的指针。 序列中重复出现的字符只建一个结点, 并由 结点中的 Count 域对字符的重复次数进行计数。

14、二叉排序树的链表结点类型定义如下: typedef struct BSTNode char Elem; int Count; struct BSTNode *Lch,*Rch; *BiTree; 函数 BiTree insert_BST(char * str) BiTree root,parent,p; char (1); root = (BiTree)malloc(sizeof(struct BSTNode); if (!root | *s=0) return NULL; root-Lch = root-Rch = NULL; root-Count = 1; root-Elem = *s+;

15、 for(;*s != 0;s+) (2); parent = NULL; while (p) 将应填入 _(n)_ 处的字句写在答题纸的对应栏内。 或者是具有如下性质的二叉树: 若它的左子树非空, 则左 若它的右子树非空, 则右子树上所有结点的值均大于 /* 结点的字符数据 */ /* 记录当前字符在序列中重复出现的次数 /* 结点的左、右指针 */ /* 变量定义及初始化 */ */ /*p从树根结点出发查找当前字符*s所在结点*/ parent = p; /*若树中已存在当前字符结点,则当前的字符计数值加 if (*s = p-Elem) 1*/ */ if (*s p-Elem) p

16、= p-Rch; else p = p-Lch; /*while*/ if (. 若树中不存在字符值为*s的结点,则申请结点并插入 树中*/ p-Co un t+; break; else/*否则根据字符*s与结点*p中字符的关系,进入*p的左子树或右子树 插入*/ if (p-Elem paren t-Elem)(4) else(5)= p; =P; return root; /*for*/ 从下列的3道试题(试题六至试题八)中任选1道解答。 如果解答的试题数超过 1道,则题号小的1道解答有效。 (共15分) 阅读以下说明和 C+弋码,将解答写入答题纸的对应栏内。 说明 类Stock的定义中

17、有三处错误,分别在代码的第04、06、10行。请补齐下述代码中的 空缺1,修改错误并给处修改后该行的完整代码,最后完善程序运行后的输出结果。 C+代码 试题六 P = (BiTree)malloc(sizeof(struct BSTNode); if 仲)return NULL; p-Lch = p-Rch = NULL; p-Co unt = 1; p-Elem = *s; 01 #in clude 02 using n ames pace std; 03 class Stock 04 p rotected: 05 Stock()shares=0; share_val=0.0; Out pu

18、t(); 06 Stock(i nt n=0, double p r=3.5): (1) 07 : 为n 08 share_val=pr; 09 Out pu t(); 初始化shares值 /*根据当前字符与其父结点字符值的大小关系,将新结点作为左子树或右子树 10 ; 11 void Stock(); 12 void Outpu t()cout shares : share_val = 12) The n H = H -12 H_seta = Pi * () Li neH.X2 = X0 + LH * Sin (H_seta) Li neH.Y2 = Y0 - Lh * Cos(H_set

19、a) 时针的起点位置 秒针的终点位置 分针的终点位置 时针的转角 时针的终点位置 (5). first = End If End Sub 试题八(共15分) 阅读以下说明和Java代码,将解答写入答题纸的对应栏内。 说明 已知类Stock和类JavaMain都定义在JavaMain.java 文件中,类 Stock的定义中有 四处错误,分别在代码的第01、02、06、07行。请修改错误并给出修改后该行的完整代码, 并写出改正错误后程序运行的输出结果。 Java代码 01 P ublic class Stock 02 static 03 shares = 0; 04 share_val = 0.0; 05 06 private Stock()getData(); 07 p rivate Stock(i nt n, double pr=0) 08 shares

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论