软件水平考试真题
选课中心 APP下载
当前位置:首页 > 技能类 > 软件水平 > 考试真题 > 历年计算机软考程序员笔试真题及答案[1]

历年计算机软考程序员笔试真题及答案[1]

更新时间:2017-11-14 11:04:10 来源: 阅读量:

软件水平报名、考试、查分时间 免费短信提醒

广东

获取验证 立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【摘要】 软考网权威发布历年计算机软考程序员笔试真题及答案,更多历年计算机软考程序员笔试真题及答案相关信息请访问计算机软件水平考试网。试题一

历年计算机软考程序员笔试真题及答案[1]软考网权威发布历年计算机软考程序员笔试真题及答案,更多历年计算机软考程序员笔试真题及答案相关信息请访问计算机软件水平考试网。

试题一是必答题

试题一  阅读下列说明、流程图和算法,将应填入__(n)__处的字句写在答题纸的对应栏内.

[流程图说明]

  下面的流程图用N—S盒图形式描述了数组A中的元素被划分的过程.其划分方法是:

  以数组中的第一个元素作为基准数,将小于基准数的元素向低下标端移动,而大于基准数的元素向高下标端移动.当划分结束时,基准数定位于A[i],并且数组中下标小于i的元素的值均小于基准数,下标大子i的元素的值均大于基准数。设数组A的下界为low,上界为high,数组中的元素互不相同。例如,对数组(4,2,8,3,6),以4为基准数的划分过程如下:

[算法说明]

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

[算法]

 void sort(int A[],iht l,int H) { if ( L < H ) {  k=p(A,L,R);     //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;  pi=S;pj=s+strlen(S)-1:  while ( pi

[函数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

试题三  以下是与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"); }

试题五

  阅读以下应用说明及Visual Basic程序代码,将应填入__(n)__处的字句写在答题纸的对应栏内。

[应用说明5.1]

  本应用程序的窗体中有一个下拉式列表框(名称为Combol)和两个文本框(名称分别为Txtl和Txt2)。运行时,用户从Combol的列表中进行选择,程序就会将选中条目的内容以及编号(从0开始)分别在文本框 Txt1 和 Txt2 中显示出来。

[程序代码5.1]

 Private Sub Combol_C1ick()  Txtl.Text = Combol.__(1)__  Txt2.Text = Combol.__(2)__ End Sub

  (注:可供(2)处选择的选项:List,Index,Listlndex,ListCount,Number)

[应用说明5.2]

  本应用程序的运行窗口如下图所示:

 当用户在输入框(名为Txtln)中输入数值数据,并从下拉式列表框(名为CmbOp)中选择所需的运算后,输出框(名为TxtOut)中就会显示运算的结果。用户单击“清除”按钮(名为CmdClear)后,输入框和输出框都清空。

开发该应用的部分程序代码如下:

[程序代码5.2]

 Private Sub CmbOp_Click()  Dim DataIn As Double,DataOut as Double  DataIn = __(3)__  Select Case __(4)__   Case "取整数部分"    DataOut = Int(Dataln)   Case "求平方根"    If Dataln < O Then     MsgBox$("负数不能开平方!")    Else     DataOut = Sqr(Dataln)    End If   Case "取绝对值"    DataOut = Abs(Dataln)    (TxtOut.Text = str$(DataOut)    __5)__ End Sub

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

试题六  阅读下列函数说明和 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; }

分享到: 编辑:admin