历年计算机软考程序员部分阅读真题及答案

2016-4-18 16:08:00   无忧考网     [ 手机版 ] [ 下载Word文档 ]
软考网发布历年计算机软考程序员部分阅读真题及答案,更多历年计算机软考程序员部分阅读真题及答案相关信息请访问无忧考网计算机软件水平考试频道。

阅读下列函数说明和C函数,将应填入__(n)__处的字句写在答题纸的对应栏内。
[函数2.1说明]
  函数palindrome(chars[])的功能是:判断字符串s是否为回文字符串,若是,则返回0,否则返回-1。若一个字符串顺读和倒读都一样时,称该字符串是回文字符串,例如:“LEVEL”是回文字符串,而“LEVAL”不是。
[函数2.1]
 int palindrome(char S[])
 { char *pi,*pj;
  pi=S;pj=s+strlen(S)-1:
  while ( pi   pi++; pj--;
  }
  if(__ (2)__)return-1;
  else return 0;
 }
[函数2.2说明]
  函数f(char *str,char del)的功能是;将非空字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。
  例如若str的值为“33123333435”,del的值为‘3’,调用此函数后,将输出三个子字符串,分别为“12”、“4”和“5”。
[函数2.2]
 void f(char*str,char del)
 { int i,j,len;
  len = strlen(str);
  i = 0;
  while (i   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中,工程文件、窗体文件和标准模块文件的扩展名是什么?
  请从下列选项中选择:
  prg、prj、exe、vbp、rom、frm、win、fra,std、bas、vbs、Vbm

  (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 n,int B)的功能是:将一个无符号十进制整数 n 转换成 B(2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把 B 进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C代码中的符号常量及栈的类型定义如下:
 #define KAXSIZE 32
 typedef struct{
  int *elem;  /* 栈的存储区 */
  int max;   /* 栈的容量,即找中最多能存放的元素个数 */
  int top;   /* 栈顶指针 */
 }Stack;
[C代码]
 int lnitStack(Stack *S,int n)  /* 创建容量为n的空栈 */
 { S->elem = (int *)matloc(n * sizeof(int));
  if (S->elem == NULL) return -1;
  S->max = n;__(1)__= 0;return 0;
 }
 int Push(Stack*S,int item)   /* 将整数item压入栈顶 */
 { if(S->top == S->max){ printf("Stack is full!\n");return -1;}
  __(2)__;item;return 0;
 }
 int StackEmpty(Stack S){ return(!S.top) ? 1;0;) /* 判断栈是否为空 */
 int Pop(Stack*S)        /* 栈顶元素出栈 */
 { if (!S->top){ printf("Pop an empty stack!\n");return -1;)
  return __(3)__;
 }
 void MultibaseOutput(long n,int B)
 { int m;Stack S;
  if (init Stack(&S,MAXSIZE)) { printf("Failure!\n");return;}
  do {
   if (Push(&s,__(4)__)) { printf("Failure!\n");return;}
   n = __(5)__:
  } while (n != 0);
  while (!StackEmpty(S)) {     /* 输出B进制的数 */
   m = Pop(&S);
   if (m < 10) printf("Kd",m);  /* 小于10,输出数字 */
   else printf("%c,m + 55);    /* 大于或等于10,输出相应的字符 */
  }
  printf("\n");
 }

试题六

  阅读下列函数说明和 C 函数,将应填入__(n)__处的字句写在答题纸的对应栏内。
[函数6说明]
  函数DelAInsB(LinkedList La,LinkedList lb,int key1,int key2,int len)的功能是,将线性表A中关键码为keyl的结点开始的len个结点,按原顺序移至线性表B中关键码为key2的结点之前,若移动成功,则返回0;否则返回-1。线性表的存储结构为带头结点的单链表,La为表A的头指针,Lb为表B的头指针。单链表结点的类型定义为:
 typedef struct node{
  int key;
  struct node*next;
 }*Linkedhist;
[函数6]
 int DelllnsB(LinkedLiSt La,LinkedList Lb,int keyl,int key2,int len)
 { LinkedList p,q,S,prep,pres;
  int k;
  if (!La->next || !Lb->next || len<=0) return-1;
  p = La->next; prep = La;
  while (p && p->key != keyl){   /* 查找表A中键值为key1的结点 */
   prep = p; p = p->next;
  }
  if (!p) return -1;        /* 表A中不存在键值为key1的结点 */
  q = p; k = 1;
  while (q && __(1)__){       /* 在表A中找出待删除的len个结点 */
   __(2)__: k++;
  }
  if (!q) return -1;        /* 表A中不存在要被删除的len个结点 */ ·
  S = Lb->next;__ (3)__;
  while (s && s->key != key2){   /* 查找表B中键值为key2的结点 */
  pres = s; s = s->next;
  }
  if (!s)return -1;        /* 表B中不存在键值为key2的结点 */
  __(4)__q->next;         /* 将表A中的len个结点删除 */
  q->next:__(5)__
  pres->next = p;         /* 将len个结点移至表B */
  return 0;
 }

[NextPage]


答案

试题一

(1)i:1,1,8
(2)1→sw
(3) 0→BIT[i]
(4)NOP,或空操作
(5)1→BIT[i]

试题二

(1)j%2,及其等价形式
(2)i+=2,及其等价形式
(3)tag>2,或tag==3或tag>=3,及其等价形式
(4)9
(5)45

试题三

(1)p && k(2)!p->next,及其等价形式
(3)q->next
(4)prep->next
(5)q->next=p

试题四

(1)(h-9)*60+m,及其等价形式
(2)time + R[k].d[ch-'a']*20 其中ch-'a'可以表示为ch-97,R[k]可以表示为R[R[k].no]
(3)R[t].num == R[j].num && R[t].time > R[j].time,及其等价形式
(4)t!=i,及其等价形式,表达式的值为真也正确
(5)R[i],及其等价形式

试题五

(1)Asc("A")+i-1,或64+i,及其等价形式
(2)(h-9)*60+m,及其等价形式
(3)Combol.Text
(4)Value
(5)Time+R(k).d(m)*20 其中m可表示为Asc(ch)-Asc("A")或Asc(ch)-65,k可表示为R(R(k).no)

试题六

(1)public Figure
(2)height*width
(3)public Rectangle
(4)this->height=this->width=width
(5)public Figure 若填public Rectangle只给1分