1. 小李利用所学的 VB 知识,编写了一个简单计算器:在文本框 Text1 中输入一个加减算式(只包含数字和“ +”、“ -”符号,以“ =”结束),点击“计算”按钮 Command1,计算结果在标签 Label1 上显示。程序运行界面如下图所示:

(1) 要实现程序运行时,单击文本框 Text1 即可将文本 框 清 空 , 则 应 在 (A 、Command1_Click/B 、 Form_Load/C 、 Text1_Click)事件处理过程中添加语句 Text1.text=””。
(2) 实现上述功能的 VB 程序如下,请在划线处填入合适的代码

Private Sub Command1_Click

Dim s As String, ch As String, sum As Integer

Dim fh As Integer

s = Text1.Text: fh = 1: p = 0: sum=0

For i = 1 To Len(s)

ch = Mid(s, i, 1)

If ch >= "0" And ch <= "9" Then

p =

Else

sum =

p = 0

If ch = "-" Then

fh = -1

ElseIf ch = "+" Then

fh = 1

End If

End If

Next i

Label1.Caption = Str(sum)

End Sub

(3) 若文本框 Text1 中输入的内容为“ 12*10=”(不包括双引号),单击“计算”按钮后,标签Label1 上将显示: .(A 、 120 / B 、 22 / C 、 0 /D 、程序出错无法显示)
【考点】
算法的控制结构;
【答案】

您现在未登录,无法查看试题答案与解析。 登录
综合题 普通
真题演练
换一批
3. 【加试题】给定m个区间和1个数组(有n个元素),现要求根据各区间限定的取值范围,将数组依次分隔成m+1个段。具体分割方法如下:

第1段是从数组首个元素开始、元素值都属于第1区间的最长连续元素段。如果首个元素不属于第1区间,则第1段元素个数为0;

第1段分割后的剩余元素,用同样的方法来依次分割第2段、第3段、…、第m段;

第m段分割后的剩余元素分割到第m+1段(剩余段)。

若第p(1≤p≤m-1)段末尾连续元素的值也同时属于第p+1区间,则这块连续元素称为第p段“重叠块”,该段其余部分称为第p段“非重叠块”。由于不存在第m+1区间,这里特别规定:第m段的全部元素都分割到m段“非重叠块”,第m段“重叠块”的元素个数为0,一个数组分段示例如下图。图中数组第1个元素10不属于第1区间[0,5],因此第1段的元素个数为0。10和20属于第2区间,而33不属于第2区间,因此第2段只包含10和20两个元素。第3段末尾连续3个元素的值也同时属于第4区间,因此,第3段“非重叠块”包含33,58,46,第3段“重叠块”包含55,62,69。

 

(1) 给定2个区间依次为[10,50]、[30,80],数组各元素为“12,44,34,45,66,50,45,70”,则第1段“重叠块”中的元素个数为个。
(2) 小李根据上述描述,设计了一个统计各段“非重叠块”、“重叠块”和剩余段中元素个数的算法。算法的VB程序如下,请在划线处填入合适的代码。

Const n = 18, m = 6

Dim a(1 To n) As Integer

Dim b(1 To 2 * m) As Integer

'b(1)、b(2)为第1区间的下限和上限, b(3)、b(4)为第2区间的下限和上限,…

Dim c(1 To 2 * m + 1) As Integer

'数组c用于保存统计结果:

'c(1)、c(2)分别存储第1段“非重叠块”和“重叠块”的元素个数,

'c(3)、c(4)分别存储第2段“非重叠块”和“重叠块”的元素个数,…

'c(2m-1)存储第m段"非重叠块"元素个数,c(2m)存储第m段"重叠块"元素个数(值为0)

'c(2m+1)存储剩余段元素个数

Private Sub Command1_Click()

    Dim i As Integer, p As Integer, L As Integer, LL As Integer

    ‘读取n个数据并保存在数组a中,代码略

    ‘读取m个区间的下限和上限并保存在数组b中,代码略

    For i = 1 To 2 * m + 1

      c(i) = 0

    Next i

    i = 1: p = 1

    L = 0: LL = 0

    Do While    ①  

      If IsIn(i, p) Then

         If IsIn(i, p + 1) Then

            LL = LL + 1

         Else

                ②  

            LL = 0

         End If

         i = i + 1

      Else

         c(2 * p - 1) = L

         c(2 * p) = LL

         L = 0: LL = 0

         p = p + 1

      End If

    Loop

    If i <= n Then

      c(2 * p - 1) = n - i + 1

    Else

  c(2 * p - 1) = L

  c(2 * p) = LL

    End If

    ‘输出统计结果,代码略

End Sub

‘函数IsIn用来判断a(i)值是否属于第p区间

Function IsIn(i As Integer, p As Integer) As Boolean

    If p > m Then

      IsIn = False

    Else

      If   ③     Then IsIn = True Else IsIn = False

    End If

End Function

 ② ③ 

综合题 困难