试题

试题 试卷

logo

题型:填空题 题类:常考题 难易度:普通

浙江省湖州市菱湖中学2018-2019学年高二下学期信息技术3月月考试卷

下列VB程序运行时,在文本框Text1中输入字符串“while”,在文本框Text2和Text3中分别输入2和5,单击命令按钮Command1后,在文本框Text4中显示的内容是

Private   Sub  Command1_click ( )

Dim  n  As  Integer , m  As  Integer  , k  As  Integer

n  = Len ( Text1.Text )

m  = Val ( Text2.Text )

k  = Val ( Text3.Text )

If  m + k -1 > n   Then

Text4.Text = Mid ( Text1.Text , 1 , m – 1 )

      Else

       Text4.Text = Mid ( Text1.Text , 1 , m–1 ) + Mid ( Text1.Text , m+k , n–m–k +1 )

      End  If

End  Sub

举一反三
数组nam()、sex()、math()、su()分别存放学生的姓名、性别、数学和总分成绩,现要求编写一个程序使得数据按照男生“总分”的降序和女生“总分”的升序排列,其中男生在前女生在后,程序界面如下图所示:

实现该功能的VB程序如下,但加框处代码有错,请改正。

Dim nam(100) As String '存放学生姓名

Dim sex(100) As String '存放学生性别

Dim math(100) As Long '存放学生数学成绩

Dim su(100) As Long '存放学生总分成绩

Dim k As Integer 'k变量用来存学生人数

Private Sub Form_Load()

‘将数据库中的数据分别存储在相应的变量中并在列表框中显示出来

‘代码略

End Sub

Private Sub Command1_Click()

Dim mmax As Integer, gmax As Integer, flagm As Boolean, flagg As Boolean

i = 1: flagm = True: flagg = True

Do While i <= k And flagm = True       ①   

    mmax = 0: gmax = 0

    flagm = False: flagg = False

  For j = i To k - i + 1

    If sex(j) = "男" And su(j) > su(mmax) Then mmax = j

    If sex(j) = "女" And su(j) > su(gmax) Then gmax = j

  Next j

   If mmax <> 0 Then

      flagm = True

      t = nam(mmax): nam(mmax) = nam(i): nam(i) = t

      t = sex(mmax): sex(mmax) = sex(i): sex(i) = t

      t = math(mmax): math(mmax) = math(i): math(i) = t

      t = su(mmax): su(mmax) = su(i): su(i) = t

   End If

   If gmax <> 0 Then

       flagg = True

       If j = mmax Then             ②   

        gmax = mmax

        t = nam(gmax): nam(gmax) = nam(k - i + 1): nam(k - i + 1) = t

        t = sex(gmax): sex(gmax) = sex(k - i + 1): sex(k - i + 1) = t

        t = math(gmax): math(gmax) = math(i): math(i) = t

        t = su(gmax): su(gmax) = su(k - i + 1): su(k - i + 1) = t

       Else

        t = nam(gmax): nam(gmax) = nam(k - i + 1): nam(k - i + 1) = t

        t = sex(gmax): sex(gmax) = sex(k - i + 1): sex(k - i + 1) = t

        t = math(gmax): math(gmax) = math(k - i + 1): math(k - i + 1) = t

        t = su(gmax): su(gmax) = su(k - i + 1): su(k - i + 1) = t

      End If

   End If

i = i + 1

Loop

For i = 1 To k

List2.AddItem nam(i) + "    " + sex(i) + "    " + Str(math(i)) + "    " + Str(su(i))

Next i

End Sub

程序中①处改为{#blank#}1{#/blank#}。

程序中②处改为{#blank#}2{#/blank#}。

【加试题】输入一个表达式(运算符号只有加减乘除和小括号,表达式是正确的,不需要检查),求表达式中最后一次运算的运算符号位置。比如表达式a*(b+c)-4+d最后一次运算的运算符号是在第10个位置的“+”,输出10。算法的思想是:从表达式右边开始往左边查找,对碰到的字符分四种情况考虑:

1)若是运算符“+”或“-”保存该位置并结束查找。

2)若是第一次碰到“*”或“/”,保存该位置,若不是第一次碰到“*”或“/”,继续往左边查找。

3)若是“)”,调用函数找到和它对应的“(”位置,跳过该括号,继续往左查找。

4)若是非运算符,继续往左查找。

运行界面如下图:

实现上述功能的 VB 程序如下,但加框处代码有错,请改正。

Function find(y As String , x As Integer ) As Integer

’该函数的功能是:返回表达式 y 中和位于第 x 位置的“)”配对的“(”的位置,代码略

End Function

Private Sub Commandl _ Click ()

Dim s As String ,  t As Integer ,  temp As Integer ,  p As Integer

s = Text1.  Text ‘输入表达式

t = Len (s):p = 0

Do While t>0

    If Mid ( s, t , 1) =“*” Or Mid ( s, t , 1) =“-” Then    ‘处理+、-

        temp=t

        Exit Do

    End If

    If ①  Then  处理 *、/

        temp = t

P=1 ‘用来标记乘号或除号已经出现了

    End If

    If Mid(s, t, 1)= ")"  Then     ‘处理括号

       

    End If

    t=t -1

Loop

Text 2.Text = Str (temp)

End Sub

①{#blank#}1{#/blank#} ②{#blank#}2{#/blank#} 

返回首页

试题篮