题目

编写一个VB程序,实现如下功能:输入s位数字构成的数字字符串(第1位数字不为0),移除k(0<k<s)个数字后,在保证原数字相对位置不变的情况下,使剩余数字组成的新数为最小(注:新数第1位不能为0)。例如8个数字构成的数字字符串“71803296”,移除3个数字,得到5位数字构成的最小数是“10296”,具体算法如图a所示。 算法分析:要使得到的5位数字最小,首先需保证能取到5个数字,且首位应尽量小,那么取首位数的范围应保证余下有4个数字,即在前4位中选最小非0的数字。 程序运行时,在文本框Text1中输入一个数字字符串,在文本框Text2中输入要移除的数字个数,单击“运行”按钮CmdRun后,在标签Labell显示得到的最小新数,程序运行界面如图b所示。 (1) 程序运行时,若要在名为Form1的窗体标题上显示“删数”,可以在Form  Load事件处理过程中添加语句为(单选,填字母:A . Form1. Text ="删数"\B . Form1. Caption ="删数"\C . Form1. AddItem"删数") (2) 实现上述功能的VB程序代码如下,请在划线处填入合适的代码。 Private Sub CmdRun_ Click()   Dim Num As String,New_num As String              ' Num为输入的数字字符串   Dim i As Integer, j As Integer, m As Integer,   Dim As Integer, s As Integer, k As Integer   Dim a(30) As String, b(30) As Integer   Num = Text1. Text: s = Len(Num)   k = Val (Text2. Text)                 'k为删除数字个数   For i=1 To s     a(i) = Mid(Num,i,1)   Next i   j =1   m=1   n=   For i=m+1 To n                   '取第一个非零最小数字     If   Then m=i             '加框处程序代码有误,请改正   Next i   b(j)= m   Do While               '取其他最小数字     m=m+1     n=n+1     For i=m+1 To  n       If  a(i) < a(m) Then m= i     Next i     j =j+1:b(j)=m   Loop   For i= m+1 To  s             '最后直接取的数字     j =j+1: b(j)=i   Next i   For j=1 To s- k                 '输出最小数     New_ num =   Next j   Labell. Caption = New_num End Sub (3) 加框处程序代码有误,请改正。 答案: 【1】B 【1】k + 1或其他可行答案【2】j < k 或 j <> k 或 m < n 或 m <> n或其他可行答案【3】New_num + a(b(j))或其他可行答案 a(i) < a(m) And a(i) <> "0"或其他可行答案
信息技术 试题推荐
最近更新