[计算机类试卷]2005年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc
《[计算机类试卷]2005年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]2005年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc(17页珍藏版)》请在麦多课文档分享上搜索。
1、2005年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析 1 阅读下列说明和流程图,将应填入 (n)处。 流程图说明 流程图 1-1描述了一个算法,该算法将给定的原字符串中的所有前导空白和尾部空白都删除,但保留非空字符之间的空白。例如,原字符串 “ File Name ”,处理后变成 “File Name”。流程图 1-2、流程图 1-3、流程图 1-4分别详细描述了流程图 1-1中的框 A, B, C。 假设原字符串中的各个字符依次存放在字符数组 ch的各元素 ch(1), ch(2), , ch(n)中 ,字符常量 KB表示空白字符。 流程图 1-1的处理过程是:
2、先从头开始找出该字符串中的第一个非空白字符 ch(i),再从串尾开始向前找出位于最末位的非空白字符ch(j),然后将 ch(i), , ch(j)依次送入 ch(1), ch(2), 中。如果原字符串中没有字符或全是空白字符,则输出相应的说明。在流程图中, strlen是取字符串长度函数。问题 在流程图 1-1中,判断框 P中的条件可表示为: i (5) 2 阅读以下说明和 C语言函数,将应填入 (n)处。 说明 函数 int find_Max_Min(int a,int n)的功能是:找出 n个元素的数组 a中的最大元素和最小元素并输出,返回查找过程中元素的比较次数。查找方法如下:比较 a0
3、和 an-1,若 a0大,则交换 a0和 an-1的值:再比较 a1和 an-2,若 a1大,则交换 a1和 an-2的值;以此类推,直到所有的元素都比较完。然后在数组的前半区从前往后找出小元素,在后半区从后往前找出大元素。 函数 int find_Max_Min(int a,int n) /*找出 n个元素的数组 a的最大、最 小元素并输出,返回查找过程元素中的比较次数 */ int i,Count=0; int temp,Maxnum,Minnum; for(i=0; i n/2; i+) Count=Count+1 /*元素比较次数计数 */ if(ai a(1) /*数组元素交换代码略
4、 */ Maxnum=an-1; Minnum=a0; for(i=1;i n/2+n%2;i+) Count=(2); /*元素比较次数计数 */ Minnum=(3)? ai:Minnum; /*找最小元素 */ Maxnum=(4)?(5):Maxnum; /*找最大元素 */ printf(“Max=%dn“,Maxnum); printf(“Min=%dn“,Minnum); return Count; 3 阅读以下说明和 C程序,将应填入 (n)处。 说明 某 种传感器的输出值 Ratio依赖于环境温度 temp(-40 temp50 )。对一组环境温度值 (ITEMS个 ),人们
5、已经测量得到了相应的 Ratio值 (见表 1)。该表粗略地描述了曲线 Ratio(temp)。校正系数 K是 Ratio的倒数,因此也依赖于环境温度 temp。在数据处理中,人们需要用更多的列表值细致地描述曲线K(temp),如表 2所示。在表 2中,各温度值所对应的 K值是对表 1进行线性插值再求倒数得到的,具体的计算方法如下: 1根据 temp值,在表 1中用二分法查找; 2若找到相应的温度值,则按相应 的 Ratio值求倒数得到 K值: 3若没找到相应的温度值,则可确定 temp所在的温度区间 Tp1, Tp2,同时获得了相应的Ratio1和 Ratio2,再按如下公式计算 K值: S
6、tep=(Ratlo1-Ratio2)/(Tp1-Tp2) K=1.0/(Ratio1+Step*(temp-Tp1) 在程序中,当 temp高于 50 或低于 -40 时,设定K=0。 程序 #include stdio.h typedef struct int Temp; /*环境温度 */ double Ratio; /*传感器的输出值 */ CURVE; #define ITEMS 7 double GetK(int, CURVE*, int); void main() int Degree; double k; CURVE CurveITEMS= -40,0.2,-20,0.60,-
7、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); printf(“ %3d %4.2fn“,Degree,k); double GetK(int Temp, CURVE *p, int n) /*用二分法在 n个元素的有序表 p中查找与 Temp对应的传感器输出值 */ int low,high,m; double Step; low=0; high=n-1; if(Temp p- T
8、emp) |( Temp (p+high)- Temp) return 0.0; /*超出温度范围 时返回 0.0*/ while (low =high) m=(1) ; if(Temp=(p+m)- Temp) return (2); if (Temp (p+m)- Temp)high=m-1; else low=(3); p+= high; Step=(4)/(p+1)- Temp-p- Temp); return 1.0/(p- Ratio +Step *(5); 4 阅读以下说明和 C语言函数,将应填入 (n)处。 说明 二叉排序树或者是一棵空树,或者是具有如下性质 的二叉树:若它的左
9、子树非空,则左子树上所有结点的值均小于根结点的值;若它的右子树非空,则右子树上所有结点的值均大于根结点的值;左、右子树本身就是两棵二义排序树。 函数 insert_BST(char *str)的功能是:对给定的字符序列按照 ASC 码值大小关系创建二叉排序树,并返回指向树根结点的指针。序列中重复出现的字符只建一个结点,并由结点中的 Count域对字符的重复次数进行计数。 二叉排序树的链表结点类型定义如下: typedef struct BSTNode char Elem; /*结点的字符数据 */ int Count; /*记录当前字符在序列中重复出现的次数 */ struct BSTNode
10、 *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; foot- Count=1; root- Elem=*s+; for(; *s!=0;s+) (2); parent=NULL; while (p) /*p从树跟结 点出发查
11、找当前字符 *s所在结点 */ parent = p; if(*s=p- Elem)/*若树中已存在当前字符结点,则当前字符的计数值加 1*/ p- Count+; break; else /*否则根据字符 *s与结点 *p中字符的关系,进入 *p的左子树或右子树 */ if (*s p- Elem) p=p- Rch; else p=p- Lch; /*while*/ if( (3) /* 若树中不存在字符值为 *s的结点,则申请结点并插入树中 */ p=(BiTree)malloc(sizeof(struct BSTNode); if(!p)return NULL; p- Lch=p- R
12、ch=NULL; p- Count=1; p- Elem=*s; /*根据当前字符与其父结点字符值的大小关系,将新结点作为左子树或右子树插入 */ if(p- Elem parent- Elem) (4)=p; else (5)=p; /*for*/ return root; 5 阅读以下应用说明以及用 Visual Basic开发过程中进行的属性设置和所编写的程序代码,将应填入 (n)处。 应用说明 启动某应用程序运行的登录窗口如下: 其中的标签 (Label1)“用户名 (U)”对应文本框Username,标签 (Label2)“密 码 (P)”对应文本框 Password。当用户在 Us
13、ername文本框中输入用户名 “ali88”,在 Password文本框中输入 “zmkm”(显示的字符均为 “*”),并单击 “确定 ”按钮时,就会弹出应用程序的主窗口 frmAPP,而该登录窗口就会卸载。 如果用户名或密码输入错误,则会弹出报警信息框。当用户单击其中的 “确定 ”按钮后,登录窗口中 Password文本框的内容就会消失,光标停留在该框内,以便用户重新输入密码,必要时用户还可以再修改用户名,再次做登录尝试。本应用程序允许发生 3次输入错误。在第 3次输入错误后,就会立即退出该应用程序。 在弹出登录窗口后,当按组合键 “Alt+U”时光标就会停留在 Username文本 框中
14、:当按组合键 “Alt+P”时光标就会停留在 Password文本框中。当用户按 Enter键时,就相当于单击 “确定 ”按钮:当用户按 Esc键时,就相当于单击 “取消 ”按钮,立即退出该应用程序。 属性设置 在开发过程中,部分控件及属性设置如下: 程序代码 Private Sub cmdOK_Click() (3) As Integer 静态变量 times的说明 If (4) Then Unload Me 卸载本登录窗口 (5) 弹出应用程序主窗口 frmAPP Else MsgBox (“用户名 或密码错 ! “) times=times+1 Password.Text=“ 清除密码框
15、中的内容 Password.SetFocus 将光标定位于密码框 If times=3 Then End End If End Sub Private Sub cmdCanee1_Click() End End Sub 6 阅读以下应用说明以及用 Visual Basic编写的程序代码,将应填入 (n)处。 应用说明 本应用程序的运行窗口中将显示一个简单的模拟时钟如下图所示: 该圆形钟面上有时针、分针和秒针在 运动,不断显示系统的当前时间。 在开发该应用时,首先建立一个圆形 Shape控件作为钟面 (背景为白色 )。设圆心为像素坐标 (X0, Y0),半径为 940。再在圆心处建立一个小的实心
16、圆 Shape控件作为轴心。钟面上的刻度 3, 6, 9, 12为四个标签。时针、分针、秒针 (红色 )为线型控件,名称分别为 LineH、 LineM、 LineS,线宽属性值分别为:3, 2, 1,线长属性值分别为 500, 700, 900。这三个线型控件的起点坐标都固定在 (X0,Y0),其终点坐标随转角。而动态变化: 设置定时器Timerl使该时钟能反映 系统的当前时间,其定时间隔为 0.5秒,该定时器的 Interval属性值应设置为 (1)。每隔 0.5秒,秒针需要调整位置,但分针和时针只是在初始显示时以及在每次秒计数为 0时才需要调整位置 (可节省计算量 )。 程序代码 Con
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 2005 年下 半年 软件 水平 考试 初级 程序员 下午 应用技术 试题 答案 解析 DOC

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