• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
2005年下半年程序员下午试题
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
2005年下半年程序员下午试题
软件发布 2005年下半年程序员下午试题
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 认证考试 >> 程序员 >> 2005年下半年程序员下午试题

2005年下半年程序员下午试题

添加时间: 2007-4-8 5:49:42  作者: 程序员认证参考  阅读次数:33   来源: http://www.d9soft.com

       

试题一(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的处理过程是:先从头开始找出该字符串中的第一个非空白字符ch(i),再从串尾开始向前找出位于最末位的非空白字符ch(j) ,然后将ch(i) 、?、ch(j) 依次送入ch(1) 、ch(2)、?中。如果字符串中没有字符或全是空白字符,则输出相应的说明。在流程图中,strlen 是取字符串长度函数。
[流程图1-1]

 

 

[问题]
  在流程图1-1中,判断框p中的条件可表示为:i > ___(5)___ 

试题二(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 ,maxnum"); printf("min=%d ",minnum); return count;
  }

试题三(15分,每空3分)
  阅读以下说明和c语言函数,将应填入___(n)___处的字句写在答题纸的对应栏内。
[说明]
  某种传感器的输出值ratio 依赖于环境温度temp(-40℃≦temp≦50℃)。对一组环境温度值(items 个),人们已经测量得到了相应的ratio 值(见表1)。该表粗略地描述了曲线ration(temp) 。

表1曲线ration(temp) 的列表值
环境温度temp 传感器的输出值ratio
-40℃ 0.20
-20℃ 0.60
-10℃ 0.80
0℃ 1.00
10℃ 1.17
30℃ 1.50
50℃ 1.80
 表2曲线k(temp)的列表值
环境温度temp 校正系数k
-40℃ 5.00
-39℃ 4.55
-38℃ 4.17
-37℃ 3.85 
… …
-20℃ 1.67
-19℃ 1.61 
… …
-10℃ 1.25
-9℃ 1.22 
… …
50℃ 0.56 
 

  校正系数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(" 环境温度校正系数 ");
   for(degree = -40;degree <= 50; degree++){
    k = getk(degree,curve,items);
    printf("%3d %4.2f ",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)_____));
  } 

试题四至试题五选答1道
 

试题四(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"键时,就相当于单击"取消"按钮,立即退出该应用程序。
[属性设置]
  在开发过程中,部分控件及属性设置如下:

对象
 对象名
 属性
 属性值
 
标签
 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)___ 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分)
  阅读以下说明和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=='') return null;
   root->lch = root->rch = null;
   root->count = 1;
   root->elem = *s++;
   for(;*s != '';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;
  } 

  从下列的3道试题(试题六至试题八)中任选1道解答。如果解答的试题数超过1 道,则题号小的1道解答有效。

试题六(共15分)
  阅读以下说明和c++代码,将解答写入答题纸的对应栏内。
[说明]
  类stock的定义中有三处错误,分别在代码的第04、06、10行。请补齐下述代码中的空缺1,修改错误并给处修改后该行的完整代码,最后完善程序运行后的输出结果。
[c++ 代码] 

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  #include <iostream>
 using namespace std;
 class stock{
  protected:
  stock(){shares=0; share_val=0.0; output();}
  stock(int n=0, double pr=3.5):_____(1)______{// 初始化shares 值为n
  share_val=pr;
  output();
  };
  void ~stock(){};
  void output(){cout << shares <<':' << share_val << endl;}
  public:
   //成员函数
  private:
   // 成员变量
  int shares;
  double share_val;
 };

 void main(){ //构造三个stock 对象a,b,c
  stock a(1);
  stock b;
  stock c = stock();
  //其他代码省略,且代码无输出
 }
 

  程序运行后的输出结果为:
  1:3.5
  _____(2)_____
  _____(3)_____ 

试题七(15分)
   阅读以下应用说明以及用visual basic 编写的程序代码,将应填入_____(n)_____ 处的字句写在答题纸的对应栏内。
[应用说明]
  本应用程序的运行窗口中将显示一个简单的模拟时钟如下:

   该圆形钟面上有时针、分针和秒针在运动,不断显示系统的当前时间。
  在开发该喁喁时,首先建立一个圆形shape 控件作为钟面(背景为白色)。设圆心为象素坐标(x0,y0),半径为940。再在圆心处建立一个小的实心圆shape控件作为轴心。钟面上的刻度3,6,9,12为四个标签。时针、分针、秒针(红色)为线型控件,名称分别为lineh 、linem、lines ,线宽属性值分别为:3,2,1,线长属性值分别为500,700,900。这三个线型控件的起点坐标都固定在(x0,y0)其终点坐标随转角θ而动态变化: #p#

   设置定时器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分)
  阅读以下说明和 java 代码,将解答写入答题纸的对应栏内。
[说明]
  已知类stock和类javamain 都定义在javamain.java 文件中,类stock 的定义中有四处错误,分别在代码的第01、02、06、07行。请修改错误并给出修改后该行的完整代码,并写出改正错误后程序运行的输出结果。
[java 代码] 

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  public class stock{
  static {
   shares = 0;
   share_val = 0.0;
  }
  private stock(){getdata();}
  private stock(int n, double pr=0){
   shares = n;
   share_val = pr;
   getdata();
   }
  pbulic void getdata(){
   system.out.print(shares + ":" + share_val + " "); 
  }
  private int shares;    // 非静态变量
  private double share_val; // 非静态变量
 };

 public class javamain{
 public static void main(string args[]){
   stock a = new stock();
   stock b = new stock(1,67.5);
   // 其他代码省略,且代码无输出
  }
 }

 

上下文章:

 

上一篇文章: 04年上半年软件设计师(高级程序员)下午试题 下一篇文章: 04年下半年 软件设计师上午试卷

相关文章:

  • 08上半年恶意软件与垃圾邮件报告
  • NOD32防病毒360专用版(免费半年)
  • 史上最强的几道oracle面试题
  • 国外公司的Oracle DBA试题
  • 今年4月三级数据库笔试试题及答案

相关软件:

  • 历年高考化学试题库 V6.4 贺岁版
  • 中、高考英语试题库 V6.4 贺岁版
  • 中考物理试卷分类试题 4.1
  • 计算机软件水平考试测试系统2005版(程序员) v 5.0
  • 试题库管理系统 V5.1
  • 秋风试题大题 V1.0

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

认证考试分类导航

  • 微软认证
  • 计算机等级考试
  • 软件水平考试
  • 思科认证
  • Oracle认证
  • Linux认证
  • JAVA认证
  • 网络工程师
  • 系统工程师
  • 程序员

本类经典文章推荐

  • 软考系统分析师考试须知
  • C++箴言:绝不在构造或析构期调用...
  • 数据结构:判别是否为二叉排序树的...
  • 一个程序员的成长的六个阶段
  • 程序员英语试题常见硬件名和设备名
  • 从一个程序出发详细研究DataReader
  • 如何判断程序处于运行环境还是调试...
  • 程序高手必读:写好C程序的10条秘...
  • 程序员介绍:程序员的“素质”是什...
  • C++箴言:让=返回一个*this的引用

程序员阅读排行

  • 补码加、减运算规则及溢出判断
  • 程序员考试:证书样本
  • 数据结构:判别是否为二叉排序树的...
  • VC++动态链接库(DLL)编程深入浅出...
  • VC++动态链接库(DLL)编程深入浅出...
  • 数据结构:打印线索二叉树的中序遍...
  • 数据结构:栈和递归求两顶点所有简...
  • DirectX8.0简介(8)
  • 水滴石穿·C语言之代码检查工...
  • 浮点数的加减乘除运算步骤

认证考试阅读总排行

  • 全国计算机等级考试一级模拟试题01
  • 全国计算机等级考试一级模拟试题10
  • 全国计算机等级考试一级模拟试题08
  • MCSD简介
  • 全国计算机等级考试一级考试最新模...
  • 全国计算机等级考试一级模拟试题02
  • 全国计算机等级考试一级模拟试题07
  • 全国计算机等级考试上机考试应试技...
  • 一级(WINDOWS)试题解析-Word篇
  • 全国计算机等级考试一级模拟试题06

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有