《专题测练程序员考试专项练习及答案(1)(1)(近年试题)》由会员分享,可在线阅读,更多相关《专题测练程序员考试专项练习及答案(1)(1)(近年试题)(13页珍藏版)》请在金锄头文库上搜索。
1、温故而知新,下笔如有神近3下半年程序员考试专项试题训练及答案-下午卷试题一至试题三是必答题试题一(15分,每空3分)阅读下列说明和流程图,将应填入_(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 流程图1-2 流程图1-3 流程图1-4 问题在流程图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 find_Max_Min(int a ,int n) /* 找出n个元素的数组a中的最大元素、最小元素并输出,返回查找过程中元素的比较次数*/int i,Count = 0;int temp,Maxnum,Minnum;for(i = 0; i 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;试题三(15分,每空3分)阅读以下说明和C语言函数,将应填入_(n)_处的字句写在答题纸的对应栏内。说明某种传感器的输出值Ratio 依赖
5、于环境温度temp(-40temp50)。对一组环境温度值(ITEMS 个),人们已经测量得到了相应的Ratio 值(见表1)。该表粗略地描述了曲线Ration(temp) 。 表1曲线Ration(temp) 的列表值 环境温度temp传感器的输出值Ratio-400.20-200.60-100.8001.00101.17301.50501.80表2曲线K(temp)的列表值 环境温度temp校正系数K-405.00-394.55-384.17-373.85-201.67-191.61-101.25-91.22500.56校正系数K是Ratio 的倒数,因此也依赖于环境温度temp 。在数据
6、处理中,人们需要用更多的列表值细致地描述曲线K(temp ),如表2所示。在表2中,各温度值所对应的K值是对表1进行线性插值再求倒数得到的,具体的计算方法如下:1. 根据temp 值,在表1中用二分法查找;2. 若找到相应的温度值,则按相应的Ratio 值求倒数得到K值;3. 若没找到相应的温度值,则可确定temp 所在的温度区间Tp1,Tp2 ,同时获得了相应的Ratio1 和Ratio2 ,再按如下公式计算K值:Step = (Ratio1 - Ratio2)/(Tp1 - Tp2)K = 1.0/(Ratio1 + Step * (temp - Tp1)在程序中,当temp 高于50或低
7、于-40时,设定K=0。程序 #include typedef structint Temp;/*环境温度*/double Ratio;/*传感器的输出值*/ CURVE;#define ITEMS 7double GetK(int,CURVE *,int);void main() int Degree;double k;CURVE CurveITEMS = -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
8、(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 Temp)|(Temp (p+high)-Temp)return 0.0;/* 超出温度范围时返回0.0*/while (low Temp)return _(2)_ ;if (Temp Temp) high = m-1;else low = _
9、(3)_ ;p += high; Step = (_(4)_)/(p+1)-Temp - p-Temp);return 1.0/(p-Ratio + Step * (_(5)_); 试题四至试题五选答1道试题四(15分,每空3分)阅读以下应用说明以及用Visual Basic 开发过程中进行的属性设置和所编写的程序代码,将应填入_(n)_处的字句写在答题纸的对应栏内。应用说明启动某应用程序运行的登录窗口如下: 其中的标签(Label1)用户名(U)对应文本框 Username ,标签(Label2)密码(P)对应文本框Password 。当用户在Username 文本框中输入用户名ali88
10、,在Password文本框中输入zmkm( 显示的字符均为*) ,并单击确定按钮时,就会弹出应用程序的主窗口frmAPP ,而该登录窗口就会卸载。如果用户名或密码输入错误,则会弹出报警信息框。当用户单击其中的确定 按钮后,登录窗口Password 文本框的内容就会消失,光标停留在该框内,以便用户重新输入密码,必要时用户还可以再修改用户名,再次做登录尝试。本应用程序允许发生3次输入错误。在第3次输入错误后,就会立即退出该应用程序。在弹出登录窗口后,当按键Alt+U 时光标就会停留在Usename 文本框中;当按键Alt+P 时光标就会停留在Password文本框中。当用户按Enter 键时,就相
11、当于单击确定按钮;当用户按Esc键时,就相当于单击取消按钮,立即退出该应用程序。属性设置在开发过程中,部分控件及属性设置如下: 对象 对象名 属性 属性值 标签 Label2 Caption _(1)_ 文本框 Username Text (空白) 文本框 Password Text (空白) Password * 命令按钮 CmdOK Caption 确定 Default _(2)_ 命令按钮 CmdCancel Caption 取消 Cancel True 程序代码Private Sub cmdOK_Click()_(3)_ As Integer静态变量time 的说明If _(4)_ T
12、henUnload Me 卸载本登录窗口_(5)_弹出应用程序主窗口frmAPPElseMsgBox( 用户名密码错!)Times = times+1Password.Text = 清除密码框中的内容Password.SetFocus 将光标定位于密码框If times = 3 ThenEndEnd IfEnd Sub Private SubcmdCancel_Click()EndEnd Sub试题五(共15分)阅读以下说明和C语言函数,将应填入_(n)_ 处的字句写在答题纸的对应栏内。说明二叉排序树或者是一棵空树,或者是具有如下性质的二叉树:若它的左子树非空,则左子树上所有结点的值小于根结点的值;若它的右子树非空,则右子树上所有结点的值均大于根结点的值;左、右子树本身就是两棵二叉排序树。函数insert_BST(char *dtr) 的功能是:对给定的字符序列按照ASCII 码值大小关系创建二叉排序树,并返回指向树根结点的指针。序列中重复出现的字符只建一个结点,并由结点中的Count域对字符的重复次数进行计