软件水平考试(初级)程序员下午(应用技术)模拟试卷15

0
收藏   分享
  • 卷面总分:75分
  • 试卷类型:模拟考试
  • 测试费用:免费
  • 答案解析:是
  • 练习次数:19次
  • 作答时间:150分钟
试卷简介
试卷预览
1

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

[说明]

 某公司的服务器上为每位员工提供了一定大小的存储空间,用于数据的备份。下面的程序面向公司员工,提供了本地计算机与服务器端之间文件传输的功能。主要操作介绍如下:

 (1)连接服务器:员工需要输入用户名和口令才能连接到服务器端,checkUser函数用于检查用户名和口令是否合法,返回真假值。

 (2)上传文件:从本地计算机上传文件到服务器。员工可以在本地文件列表中选择一个或多个文件,这些文件通过上传操作被复制到服务器端指定的某个文件夹中;

 (3)下载文件:从服务器端下载文件到本地。

   

 在开发过程中,本地驱动器列表框名为Drive1,本地和服务器端目录列表框分别名为Dir1和 Dir2,本地和服务器端文件列表框分别名为File1和File2,界面上有上至下四个按钮分别名为Command1至Command4。

[Visual Basic代码]

Private Sub Drive1_Change()

  (1)           ’更新目录列表框的路径

End Sub

Private Sub Dir1_Change()

  File1.Path=Dir1.Path   ’更新文件列表框file1的路径

End Sub

Private Sub Dir2_Change()

  File2.Path=Dir2.Path   ’更新文件列表框file2的路径

End Sub

’连接服务器

Private Sub Command1_Click()

  Dim user,password As String

  user=(2) (“请输入用户名:”)

  password=(2) (“请输入口令:”)

  If check User(user,password)Then        ’若用户名和口令正确

    Dir2.Path=……              ’打开服务器上某一指定目录

  Else: MsgBox“口令错误,请重试!”

  End If

End Sub

’上传文件

Private Sub Command2_Click()

  Dim fso As new FileSystemObject,f As File,i As Integer

  If File1.FileName=""Then     ’判断是否已经选中文件

   MsgBox“请选择本地的文件!”

   Exit Sub

 End If

 ’创建文件系统对象

 Set fso=CreateObject(“Scripting.FileSystemObject”)

 ’上传文件

For i=0 To (3)             ’遍历文件列表框File1中的全体文件

   If (4) Then’若该文件被选中

     Set f=fso. (5) (Dir1.Path & “\” & File1.List(i))

     f.Copy Dir2.Path & “\” & File1.List(i),True   ’复制文件至服务器端

   End If

 Next

 File2.Refresh

End Sub

’下载文件

Private Sub Command3_Click()

  ……

End Sub

’退出程序

Private Sub Command4_Click()

  End

End Sub

1

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

[说明]

 某单位组织一次职业技术考核比赛,由十名评委对选手的现场表现打分(0到100以内的数值)。本程序接收原始评分后,去掉一个最高分、一个最低分,最后计算并输出选手最后得分。在接收输入第i个评分时,若输入数据的类型、范围不正确,程序将给出相应提示,并等待下一次输入,直至正确接收第i个评分为止。程序的运行界面如下:

    

 在开发过程中,文本框名为Text1,界面上有上至下三个按钮分别取名为CmdMark、CmdReresh和CmdExit。

[Visual Basic代码]

Private Sub CmdMark_Click()   ’按钮“输入评分”的单击事件响应代码

 Dim i As Integer,temp As Variant   ’声明变量

 Dim marks(1 To 10),maxMark,minMark,sumMark,mark As Single

 sumMark=0

 Text1.Text=“编号”&Chr(9)&“评分”& vbCrLf

 For i=1 To 10   ’接收十个评分输入

    Do While 1=1       ’验证并接收第i个评委的评分

    temp=InputBox(“请输入”&i&“号评委的评分:”)

    If (1) IsNumeric(temp)Then

      Msg Box“数据类型错误,请重试!”

    ElseIf CSng(temp)<0 Or CSng(temp)>100 Then

      MsgBox“数值范围错误,请重试!”

    Else:Exit Do

    End If

 Loop

 marks(i)=CSng(temp)

 If i=1 Then maxMark=(2):minMark=(2) 

 If marks(i)>maxMark Then maxMark=marks(i)

 If minMark>marks(i)Then (3) 

 sumMark=sumMark+marks(i)

    Text1.Text=Text1.Text & i & Chr(9) & marks(i) & vbCrLf输出第i个评委的评分

 Next

 mark=( (4))/8       ’计算选手最后得分

 Text1.Text=Text1.Text &"去掉一个最高分:"&maxMark&vbCrLf&_

     "去掉一个最低分:"&minMark&vbCrLf&_

     "选手最后得分:"&mark

End Sub

Private Sub Command2_Click() ’按钮“刷新屏幕”的单击事件响应代码

  (5).Text=“单击”输入评分“按钮,开始统分……”

End Sub

Private Sub Command3_Click() 按钮“退出程序”的单击事件响应代码

 End

End Sub

1

阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。

[说明]

 函数encode()和decode()分别通过参数传递实现对字符串的变换和复原,返回值均为处理以后的字符串长度。变换函数encode()顺序考察已知字符串的字符,按以下规则逐组生成新字符串:

 (1)若已知字符串的当前字符不是数字字符,则复制该字符于新字符串中;

 (2)若已知字符串的当前字符是一个数字字符,且它之后没有后继字符,则简单地将它复制到新字符串中;

 (3)若已知字符串的当前字符是一个数字字符,并且还有后继字符,设该数字值为n,则将其后继字符重复复制n+1次到新字符串中;

 (4)以上述一次变换为一组,在不同组之间另插入一个下划线‘_’用于分隔。

 例如:encode()函数对字符中26a3t2的变换结果为666_a_tttt_2。

 函数decode()用于经函数encode()处理的字符中,即复制不连续相同的单个字符,而将一组连续相同的字符(不超过10个)变换成一个用于表示重复次数的数字符和一个重复出现的字符,并在复原过程中掠过变换函数为不同组之间添加的一个下划线字符。

 注:假定调用变换函数encode()时的原始字符串中不包含下划线字符。

[函数]

int encode(char *instr,char *outstr)

{  char *ip, *op,c;

  int k,n;

  ip=instr;

  op=outstr;

  while ( * ip) {

    if(*ip>='0'&&*ip<='9'&&*(ip+l)) {

      n=*ip-'0'+1;

      c=(1);

      for (k=0;k<n;k++) *op++=c;

    }

    else *op++=*ip;

    (2);

    ip++;

  }

  if (op>outstr) (3);

  *op='\0';

  (4);

}

int decode(char *instr,char *outstr)

{ char *ip,*op,c;

 int n;

 ip=instr; p=outstr;

 while ( *ip) {

    c=*ip;

    n=0;

    while( *ip==c&&n<10) {(5); n++; }

    if(n>1) *op+ + ='0'+n-1;

    * op++=c;

    if(*ip=='_') ip++;

 }

 *op='\0';

  (4);

}

1

阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。

[说明]

 链式存储的队列称为链队。根据队列的FIFO原则,为了操作上的方便,可以使用带头指针front和尾指针rear的单链表来实现链队。若链队元素的数据类型为datatype,则链队结构描述如下:

typedef struct node

{ datatypedata;

 structnode *next;

} QNode;  /*链队结点的类型*/

typedef struct

{ QNnode  *front,*rear;

} LQueue;  /*将头尾指针封装在一起的链队*/

 以下这种链队的几个例子:

 

 设q是一个指向链队的指针,即LQueue *q。下面各函数的功能说明如下:

 (1) LQueue *Init_LQueue():创建并返回一个带头尾结点的空链队;

 (2) intEmpty_LQueue( LQueue *q):判断链队q是否空;

 (3) void In_LQueue(LQueue *q, datatypex):将数据x压入链队q;

 (4) int Out_LQueue(LQuere *q, datatype *x):弹出链队q的第一个元素x,若成功则返回返回1否则返回0。

[函数]

LQueae *Init_LQueue()

{ LQueue *q, *p;

 q=malloc(sizeof(LQueue)); /*申请链队指针*/

 P=malloc(sized(QNode));/*申请头尾指针结点*/

 p->next=NULL;

 (1)=p;

 return q;

}

int Empty_LQueue(LQueue *q)

{ if(q->front (2) q>rear) return 0;

 else return 1;

}

void In_LQueue(LQueue *q, datatype x)

{ QNoda *p;

 p=malloc(sizeof(QNnode));/*申请新接点*/

 p->data=x;

 p->next=NULL;

  (3)=p;

 q->rear=p;

}

int Out_LQueue(LQueue *q, datatype *x)

{ QNnode *p;

 if(Empty_LQueue(q)) return 0; /*队空,操作失败*/

 else{

   p=q->front->next;

   *x=(4);

    (5)=p->next;

   free(p);

   if (q->front->next= =NULL)q->rear=q->front;

   return 1;

 }

}