2004年程序员考试上半年下午试题

本文提供了2004年上半年程序员考试的详细试题,包括排序算法的流程图和实现、字符串回文判断、字符串分割、Visual Basic开发应用问题、C语言的进制转换、链表操作以及个人所得税计算等编程与算法题目,涵盖了编程基础、数据结构、操作系统和软件工程等多个方面。
摘要由CSDN通过智能技术生成

2004年上半年程序员下午试题

试题一是必答题

试题一
  阅读下列说明、流程图和算法,将应填入__(n)__处的字句写在答题纸的对应栏内.
[
流程图说明]
  下面的流程图用N—S盒图形式描述了数组A中的元素被划分的过程.其划分方法是:
  以数组中的第一个元素作为基准数,将小于基准数的元素向低下标端移动,而大于基准数的元素向高下标端移动.当划分结束时,基准数定位于A[i],并且数组中下标小于i的元素的值均小于基准数,下标大子i的元素的值均大于基准数。设数组A的下界为low,上界为high,数组中的元素互不相同。例如,对数组(42836),以4为基准数的划分过程如下:
[
流程图]
  
[
算法说明]

  将上述划分的思想进一步用于被划分出的数组的两部分,就可以对整个数组实现递增排序。设函数int p(int A[]int lowint high)实现了上述流程图的划分过程并返回基准数在数组A中的下标。递归函数void sort(int A[]iht Lint H)的功能是实现数组A中元素的递增排序。
[
算法]
 void sort(int A[]iht lint H) {
 
if ( L < H ) {
  k=p(ALR);     //p()返回基准数在数组A中的下标

  sort(__ (4)__;     //小于基准数的元素排序
  sortl__ (5)__);    //大于基准数的元素排序
  }
 }

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


试题二
  阅读下列函数说明和C函数,将应填入__(n)__处的字句写在答题纸的对应栏内。
[
函数2.1说明]
  函数palindrome(chars[])的功能是:判断字符串s是否为回文字符串,若是,则返回0,否则返回-1。若一个字符串顺读和倒读都一样时,称该字符串是回文字符串,例如:“LEVEL”是回文字符串,而“LEVAL”不是。
[
函数2.1]
 int palindrome(char S[])
 { char *pi*pj

  piSpjs+strlen(S)-1
  while ( pi<pj && __(1)__){
   pi++ pj--

  }
  if(__ (2)__)return-1

  else return 0
 }
[
函数2.2说明]

  函数f(char *strchar del)的功能是;将非空字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。
  例如若str的值为“ 33123333435” del的值为‘ 3’ ,调用此函数后,将输出三个子字符串,分别为“ 12” “ 4” “ 5”
[
函数2.2]
 void f(char*strchar del)
 { int ijlen

  len = strlen(str)
  i = 0
  while (i<len){
   while (__(3)__) i++;    /*忽略连续的标志字符
*/
  /*寻找从str[i]开始直到标志字符出现的一个子字符串
*/
   j = i + 1

  while (str[j] !=del && str[j] !='/0') j++
  __ (4)__"/0";         /*给找到的字符序列置字符串结束标志*/
  printf(" %s/t"&str[i])

  __ (5)__

  }
 }

试题三
  以下是与Visual Basic开发应用有关的5个问题.对每一个问题,请将解答填入答题纸的对应栏内。
  (1)Visual Basic中,工程文件、窗体文件和标准模块文件的扩展名是什么?
  请从下列选项中选择:

  prgprjexevbpromfrmwinfrastdbasvbsVbm

  (2)设某窗体上有一个命令按钮,其名称为 CmdSave,运行时该按钮上显示有保存(S)”字样的信息。为使热键 ALT+S 与该命令按钮相关联,应该对按钮 CmdSave Caption属性设置什么样的属性值?

  (3)设某窗口内有一个图像框 Image1,以及两个命令按钮放大缩小。单击放大按钮就会使该图像框的长和宽都放大10%;单击缩小按钮就会使该图像框的长和宽都缩小10%(该图像框的左上角不动)。请分别写出这两个命令按钮的单击事件过程中的程序代码。

  (4)为使某个单选按钮初始时默认被选中,在开发时应怎样做?

  (5)若有语句 Tmpval=MsgBox(非法操作!ybOKCancel+vbCritical"提示"),请简要描述程序运行时弹出的消息框的主要特征。

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

试题四
  阅读以下说明和C代码,将应填入__(n)__处的字句写在答题纸的对应栏内。
[
说明]
  函数 MultibaseOutput(long nint B)的功能是:将一个无符号十进制整数 n 转换成 B2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把 B 进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C代码中的符号常量及栈的类型定义如下:
 #define KAXSIZE 32
 
typedef struct{
  int *elem;  /* 栈的存储区
*/
  int max;   /* 栈的容量,即找中最多能存放的元素个数
*/
  int top;   /* 栈顶指针
*/ 
 }Stack

[C
代码]
 int lnitStack(Stack *Sint n)  /* 创建容量为n的空栈 */
 { S->elem = (int *)matloc(n * sizeof(int))

  if (S->elem == NULL) return -1
  S->max = n__(1)__= 0return 0
 }
 int Push(Stack*Sint item)   /* 将整数item压入栈顶
*/
 { if(S->top == S->max){ printf("Stack is full!/n")return -1
}
  __(2)__itemreturn 0

 }
 int StackEmpty(Stack S){ return(!S.top) ? 10) /* 判断栈是否为空
*/
 int Pop(Stack*S)        /* 栈顶元素出栈
*/
 { if (!S->top){ printf("Pop an empty stack!/n")return -1
)
  return __(3)__

 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值