本栏目下题库来源于互联网,轻速云承诺对于用户导入平台的题库是严格保密的,不会在此呈现!
轻速云给您提供更好的在线考试系统服务!
2005年下半年程序员下午试题
1、【 简答题
试题二(15,每空3分)
  阅读以下函数说明和C语言函数,将应填入___(n)___处的字句写在答题纸的对应栏内。
[说明]
  函数int find_Max_Min(int a[ ],int n) 的功能是:找出n个元素的数组a中的最大元素和最小元素并输出,返回查找过程中元素的比较次数。查找方法如下:比较a[0] 和a[n-1], 若a[0] 大,则交换a[0] 和a[n-1] 的值;再比较a[1] 和a[n-2] ,若a[1] 大,则交换a[1] 和a[n-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(a[i]>a[_____(1)_____ ]
    { /* 数组元素交换代码略*/ }
   }
   Maxnum=a[n-1];
   Minnum=a[0];
   for(i = 1; i < n/2+ n%2; i++){
    Count = _____(2)_____ ;             /* 元素比较次数计数*/
    Minnum = _____(3)_____ ? a[i]:Minnum;      /*找出最小元素*/
    Maxnum = _____(4)_____ ? _______(5)_____:Maxnum; /* 找出最大元素*/
   } printf("Max=%d\n,Maxnum"); printf("Min=%d\n",Minnum); return Count;
  } [15分]
解析:
(1) n-i-1
(2) Count + 2
(3) a[i] < Minnum
(4) a[n-i-1] >Maxnum
(5) a[n-i-1]
2、【 简答题
试题三(15分,每空3分)
  阅读以下说明和C语言函数,将应填入___(n)___处的字句写在答题纸的对应栏内。
[说明]
  某种传感器的输出值Ratio 依赖于环境温度temp(-40℃≦temp≦50℃)。对一组环境温度值(ITEMS 个),人们已经测量得到了相应的Ratio 值(见表1)。该表粗略地描述了曲线Ration(temp) 。
      
  校正系数K是Ratio 的倒数,因此也依赖于环境温度temp 。在数据处理中,人们需要用更多的列表值细致地描述曲线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℃或低于-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 Curve[ITEMS] = {{-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);
    printf("%3d %4.2f\n",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->Temp)||(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)_____));
  }  [15分]
解析:
(1) (low + high) / 2
(2) 1.0 / (p+m)->Ratio
(3) m + 1
(4) (p+1)->Ratio - p->Ratio
(5) Temp - p->Temp
3、【 简答题
试题四(15分,每空3分)
  阅读以下应用说明以及用Visual Basic 开发过程中进行的属性设置和所编写的程序代码,将应填入_____(n)_____处的字句写在答题纸的对应栏内。
[应用说明]
  启动某应用程序运行的登录窗口如下: 
      
其中的标签(Label1)"用户名(U)"对应文本框 Username ,标签(Label2)"密码(P)"对应文本框"Password" 。当用户在Username 文本框中输入用户名"ali88" ,在Password文本框中输入"zmkm"( 显示的字符均为"*") ,并单击"确定"按钮时,就会弹出应用程序的主窗口frmAPP ,而该登录窗口就会卸载。
  如果用户名或密码输入错误,则会弹出报警信息框。当用户单击其中的"确定" 按钮后,登录窗口"Password" 文本框的内容就会消失,光标停留在该框内,以便用户重新输入密码,必要时用户还可以再修改用户名,再次做登录尝试。本应用程序允许发生3次输入错误。在第3次输入错误后,就会立即退出该应用程序。
  在弹出登录窗口后,当按键"Alt+U" 时光标就会停留在Usename 文本框中;当按键"Alt+P" 时光标就会停留在Password文本框中。当用户按"Enter" 键时,就相当于单击"确定"按钮;当用户按"Esc"键时,就相当于单击"取消"按钮,立即退出该应用程序。
[属性设置]
  在开发过程中,部分控件及属性设置如下: 
      
[程序代码]
  Private Sub cmdOK_Click()
   _____(3)_____ As Integer   '静态变量time 的说明
   If ___(4)___ Then
    Unload Me       '卸载本登录窗口
    ____(5)_____     '弹出应用程序主窗口frmAPP
   Else
    MsgBox(" 用户名密码错!")
    Times = times+1
    Password.Text = ""  '清除密码框中的内容
    Password.SetFocus   '将光标定位于密码框
   If times = 3 Then
    End
   End If
  End Sub 
  Private Sub
   cmdCancel_Click()
   End
  End Sub [15分]
解析:
(1) 密码(&p)
(2) true
(3) Static times
(4) Username.Text = ″ali88″ and Password.Text = ″zmkm″
(5) frmApp.Show
4、【 简答题
试题五(共15分)
  阅读以下说明和C语言函数,将应填入__(n)__ 处的字句写在答题纸的对应栏内。
[说明]
  二叉排序树或者是一棵空树,或者是具有如下性质的二叉树:若它的左子树非空,则左子树上所有结点的值小于根结点的值;若它的右子树非空,则右子树上所有结点的值均大于根结点的值;左、右子树本身就是两棵二叉排序树。
  函数insert_BST(char *dtr) 的功能是:对给定的字符序列按照ASCII 码值大小关系创建二叉排序树,并返回指向树根结点的指针。序列中重复出现的字符只建一个结点,并由结点中的Count域对字符的重复次数进行计数。
  二叉排序树的链表结点类型定义如下:
  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++;
   for(;*s != '\0';s++){
    ______(2)______;
    parent = NULL;
    while (p) {
    /*p从树根结点出发查找当前字符*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->Rch = NULL;
      p->Count = 1;
      p->Elem = *s;
      /*根据当前字符与其父结点字符值的大小关系,将新结点作为左子树或右子树插入*/
     if (p->Elem > parent->Elem) ______(4)_____ = p;
     else _________(5)________ = p;
    }
   }  /*for*/
   return root;
  }  [15分]
解析:
(1) *s = str
(2) p = root
(3) p = = NULL
(4) parent->Rch
(5) parent->Lch
5、【 简答题
试题六(共15分)
  阅读以下说明和C++代码,将解答写入答题纸的对应栏内。
[说明]
  类Stock的定义中有三处错误,分别在代码的第04、06、10行。请补齐下述代码中的空缺1,修改错误并给处修改后该行的完整代码,最后完善程序运行后的输出结果。
[C++ 代码]  
     
  程序运行后的输出结果为:
  1:3.5
  _____(2)_____
  _____(3)_____ [15分]
解析:
(1) shares (n)
04代码行修改结果:public:
06代码行修改结果:Stock (int n,double pr=3.5):shares (n){
10代码行修改结果:~Stock () {}
输出结果
(2) 0∶0
(3) 0∶0
6、【 简答题
试题七(15分)
   阅读以下应用说明以及用Visual Basic 编写的程序代码,将应填入_____(n)_____ 处的字句写在答题纸的对应栏内。
[应用说明]
  本应用程序的运行窗口中将显示一个简单的模拟时钟如下: 
       
   该圆形钟面上有时针、分针和秒针在运动,不断显示系统的当前时间。
  在开发该喁喁时,首先建立一个圆形Shape 控件作为钟面(背景为白色)。设圆心为象素坐标(X0,Y0),半径为940。再在圆心处建立一个小的实心圆Shape控件作为轴心。钟面上的刻度3,6,9,12为四个标签。时针、分针、秒针(红色)为线型控件,名称分别为LineH 、LineM、LineS ,线宽属性值分别为:3,2,1,线长属性值分别为500,700,900。这三个线型控件的起点坐标都固定在(X0,Y0)其终点坐标随转角θ而动态变化: 
       
   设置定时器Timer1 使该时钟能反映系统的当前时间,其定时间隔为0.5秒,该定时器的Interval 属性值应设置为_____(1)_____ 。每隔0.5秒,秒针需要调整位置,但分针和时针只是在初始显示时以及在每次秒计数为0时才需要调整位置(可节省计算量)。
[程序代码]
  Const Pi = 3.1416
  Const X0 = 1750
  Const Y0 = 1150
  Const LH = 500, LM = 700, LS = 900 Public first As Boolean
  Private Sub Form_Load()
   LineS.X1 = X0  '秒针的起点位置
   LineS.Y1 = Y0
   LineM.X1 = X0  '分针的起点位置
   LineM.Y1 = Y0
   LineH.X1 = X0  '时针的起点位置
   LineH.Y1 = Y0
   first = True
  End Sub
  Private Sub Timer1_Timer()
   S = Second(Time)
   S_seta = Pi *
   ______(2)______  '秒针的转角
   LineS.X2 = X0 + LS * Sin(S_seta)   '秒针的终点位置
   LineS.Y2 = Y0 -LS * Cos(S_seta)
   If (____(3)_____) Then
    M = Minute(Time)
    LineM.X2 = X0 + LM * Sin(Pi*M/30)  '分针的终点位置
    LineM.Y2 = Y0 - LM * Cos(Pi*M/30)
    H = Hour(Time)
    If (H >= 12) Then H = H -12
    H_seta = Pi * (______(4)______)  '时针的转角
    LineH.X2 = X0 + LH * Sin(H_seta) '时针的终点位置
    LineH.Y2 = Y0 - Lh * Cos(H_seta)
    first = ________(5)________
   End If
  End Sub  [15分]
解析:
(1) 500
(2) S/30
(3) S = 0 or first
(4) H/6 + M/360
(5) False
7、【 简答题
试题八(共15分)
  阅读以下说明和Java代码,将解答写入答题纸的对应栏内。
[说明]
  已知类Stock和类JavaMain 都定义在JavaMain.java 文件中,类Stock 的定义中有四处错误,分别在代码的第01、02、06、07行。请修改错误并给出修改后该行的完整代码,并写出改正错误后程序运行的输出结果。
[Java 代码]  
      [15分]
解析:
01代码行修改结果:class Stock{
02代码行修改结果:{
06代码行修改结果:public Stock (){getData();}
07代码行修改结果:public Stock (int n,double pr){
程序运行的输出结果为:
0∶0.0 1∶67.5
1
1页,共7个题库
1页,共7个题库
轻速云给您提供更好的在线考试系统服务!
推荐
推荐题库
众多企事业单位的信赖之选
36万+企事业单位的共同选择
查看更多合作案例
众多企事业单位的信赖之选
开始使用轻速云组织培训考试
四步组织一场考试答题,一键搭建企业培训平台
免费使用 免费使用 预约演示
咨询热线
400-886-8169
周一到周日 8:00-22:00
©2023 轻速云 苏ICP备16049646号-1 轻速云科技提供专业的在线考试系统、在线培训系统
联系我们
客服热线客服热线:400-886-8169 | 周一至周日 8:00-22:00
©2023 轻速云 苏ICP备16049646号-1
轻速云科技提供专业的在线考试系统、在线培训系统
在线咨询 400-886-8169