2016年计算机软件水平考试程序员练习试题3

2016-08-26 17:13 来源:网络综合
软考网权威发布2016年计算机软件水平考试程序员练习试题3,更多2016年计算机软件水平考试程序员练习试题3相关信息请访问计算机软件水平考试网。

 

●试题一
阅读下列说明和流程图,将应填入(n)处的语句写在答题纸的对应栏内。
【说明】
下列流程图用于从数组K中找出一切满足:K(I)+K(J)=M的元素对(K(I),K(J))(1≤I≤J≤N)。假定数组K中的N个不同的整数已按从小到大的顺序排列,M是给定的常数。
【流程图】
此流程图1中,比较"K(I)+K(J)∶M"最少执行次数约为  (5)  。



 
图1
 
 
●试题二
阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
函数print(BinTreeNode*t;DateType  &x)的功能是在二叉树中查找值为x的结点,并打印该结点所有祖先结点。在此算法中,假设值为x的结点不多于一个。此算法采用后序的非递归遍历形式。因为退栈时需要区分右子树。函数中使用栈ST保存结点指针ptr以及标志tag,Top是栈顶指针。
【函数】
void print(BinTreeNode*t;DateType &x){
stack ST;int i,top;top=0;∥置空栈
while(t!=NULL &&t->data!=x‖top!=0)
{while(t!=NULL && t->data!=x)
{
∥寻找值为x的结点
  (1)  ;
ST[top].ptr=t;
ST[top].tag=0;
  (2)  ;
}
if(t!=Null && t->data==x){∥找到值为x的结点
for(i=1;  (3)  ;i++)
printf("%d",ST[top].ptr->data);}
else{
while(  (4)  )
top--;
if(top>0)
{
ST[top].tag=1;
    (5)  ;
}
}
}
 
●试题三
阅读下列函数说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
函数DelA_InsB(LinkedList La,LinkedList Lb,int key1,int key2,int len)的功能是:将线性表A中关键码为key1的结点开始的len个结点,按原顺序移至线性表B中关键码为key2的结点之前,若移动成功,则返回0;否则返回-1。线性表的存储结构为带头结点的单链表,La为表A的头指针,Lb为表B的头指针。单链表结点的类型定义为
typedef struct node {
int key;
struct node *next;
}*LinkedList;

 

 

【函数】
int DelA_InsB(LinkedList La,LinkdeList Lb,int key1,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 != key1){/*查找表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;
}
 
●试题四
阅读以下说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
将一正整数序列{K1,K2,…,K9}重新排列成一个新的序列,新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面),最后调用writeDat()函数的新序列输出到文件out.dat中。
在程序中已给出了10个序列,每个序列有9个正整数,并存入数组a[10][9]中,分别求出这10个新序列。
例:序列  {6,8,9,1,2,5,4,7,3}
经重排后成为{3,4,5,2,1,6,8,9,7}
【函数】
#include<stdio.h>
#include<conio.h>
void jsValue(int a[10][9])
{int i,j,k,n,temp;
int b[9];
for(i=0;i<10;i++)
{temp=a[i][0];
k=8;n=0;
for(j=8;j=0;j--)
{if(temp<a[i][j])  (1)  =a[i][j];
if(temp>a[i][j])  (2)  =a[i][j];
if(temp=a[i][j])  (3)  =temp;
}
for(j=0;j<9;j++)a[i][j]=b[j];
}
}
void main()
{
int a[10][9]={{6,8,9,1,2,5,4,7,3},{3,5,8,9,1,2,6,4,7},
{8,2,1,9,3,5,4,6,7},{3,5,1,2,9,8,6,7,4},
{4,7,8,9,1,2,5,3,6},{4,7,3,5,1,2,6,8,9},
{9,1,3,5,8,6,2,4,7},{2,6,1,9,8,3,5,7,4},
{5,3,7,9,1,8,2,6,4},{7,1,3,2,5,8,9,4,6}
};
int i,j;
  (4)  ;
for(i=0;i<10;i++){
for(j=0;j<9;j++){
printf("%d",a[i][j]);
if(  (5)  )printf(",");
}
printf("\n");
}
getch();
}

 

 

 

 

|||

 

●试题五
阅读以下应用说明、属性设置及Visual Basic程序代码,将应填入(n)处在字句写在答题纸的对应栏内。
【说明】
本应用程序的运行窗口如图2所示。


 
只要用户单击"闪烁"按钮,文字"欢迎光临"就会以0.3秒消失、0.3秒显示反复进行闪烁;单击"停止"按钮时,闪烁停止,恢复图示的初态。
在开发过程中,需要设置的属性如表1所示。


 
在开发过程中,需要编写的程序代码如下:
【程序】
Private Sub CmdF_Click()
Timer1.  (3)  =True
Labe1.Visible=False
End Sub
Private Sub Timer1_Timer()
  (4)  =not Label.Visible
End Sub
Private Sub CmdT_Click()
Timer1.Enabled=  (5)  
Labe1.Visible=true
End Sub
 
●试题六
阅读以下说明和C++程序,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
设计一个类模板Sample用于对一个有序数组采用二分法查找元素下标。
【C++程序】
#include<iostream.h>
#define Max 100∥最多元素个数
template<class T>
class Sample
{
T A[Max]:∥存放有序数序
int n:∥实际元素个数
public
Sample(){}∥默认构造函数
Sample(T a[],int i);∥初始化构造函数
int seek(T c);
void disp()
{
for(int i=0;i<n;i++)
cout<<A[i]<<"";
cout<<end1:
}
};
template<class T>
Sample<T>::Sample(T a[],int i)
{
n=i;
for(intj=0;j<i;j++)
  (1)  ;
}
template<class T>
int Sample<T>::seek(T c)
{
int low=0,high=n-1,mid;
while(  (2)  )
{
mid=(low+high)/2;
if(  (3)  )
return mid;
else if(  (4)  )
low=mid+l;
else
  (5)  ;
}
return-1;
}
void main()
{
char a[]="acegkmpwxz";
Sample<char>s(a,1。);
cout<<"元素序列:";s.disp();
cout<<"元素′g′的下标:"<<s.seek(′g′)<<endl;
}

 

 

●试题七
阅读以下说明和Java代码,将解答写入答题纸的对应栏内。
【说明】
下面的程序的功能是利用实现Runnable接口的方法来创建线程,并利用它来执行响应的一些操作。最后使得m的执行结果:100,如图3。


 
注意:请勿改动main()主方法和其他已有的语句内容,仅在下划线处填入适当的语句。
class ClassName  (1)  Runnable{
int  n;
  (2)  {
try{
Threa
    D.sleep(2000);
n=100;
}catch(  (3)  e){}
}
public static void main(String[]args){
try{
ClassName a=new ClassName();
  (4)  
thread1.  (5)  ();
thread1.join();
int m=A.n;
System.out.println("m="+m);
}catch(  (3)  e){}
}
}
 
●试题八
阅读以下应用说明及Visual Basic部分程序代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
该应用程序是用来修改文本框中的字体属性,其运行窗口如图4所示。


 
窗口由1个标签(Labell)、1个文本框(txtPassage)和4个选择框(chkFont,chkltalic,chkSize,chkColor)组成。程序运行后,用户在文本框内输入一段文字,然后按需要单击各选择框,用以改变文本的字体、字型、颜色及大小。
文本框的Mulitine属性已经设为True。当不选择"黑体"时,文字应是"微软雅黑"。当不选择"大小16"时,字号为9。当不选择"紫色"时,字色为黑色。当不选择"斜体"时,文字采用正常字型。