运算符、基本运算与表达式 知识点题库

公司年会,领导要小李编写一个小程序,用于抽奖,小李将参加年会的人员姓名、手机号保存在一个access数据库中库名:年会嘉宾.accdb 数据表名为:联系人
程序设计的主要思路是:窗体装入时读出所有嘉宾的姓名和手机号,保存在两个数据中,从text1中取得要抽奖的人数,用随机函数产生1~num间的数作为中奖号,从数据中读出对应的姓名和手机号,手机号中间4位用“新年快乐”代替。已抽中过的姓名和手机号从数据中删除,以防止重复中奖。

Dim sname(1 To 1000) As String   ‘用于保存嘉宾姓名
Dim phone(1 To 1000) As String   ‘用于保存嘉宾手机号
Dim num As Integer  ‘未抽奖人数
Private Sub Command1_Click()
Dim n As Integer   ‘拟抽奖人数
Randomize
n = Val(Text1.Text)
List1.Clear
If     ①     Then
 For i = 1 To n
    k = Int(Rnd * num) + 1
    List1.AddItem Str(i) + "  " + sname(k) + "   " +   ②     
    For j = k To num
        sname(j) = sname(j + 1)
        phone(j) = phone(j + 1)
    Next j
    num =      ③       
 Next i
Else
    List1.AddItem "剩余的数据不足!"
End If
End Sub
Rem 下列程序段用于从数据库中读取嘉宾的姓名和手机号,分别保存在全局变量sname()和phone()两个数组中,设嘉宾个数不超过1000个。
Private Sub Form_Load()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString = "provider=microsoft.ace.oledB.12.0;data source=" & App.Path & "\年会嘉宾.accdb "
conn.Open
Set rs.ActiveConnection = conn
rs.Open "select * from 联系人"
num = 0
Do While Not rs.EOF And num < 1000
    num = num + 1
    phone(num) = rs.Fields("联系电话")
    sname(num) = rs.Fields("姓名")
    rs.MoveNext
 Loop
 rs.Close
 conn.Close
 Set rs = Nothing
 Set conn = Nothing
End Sub
已知Asc(“A”)的值为65,下列Visual Basic表达式的值等于数值131的是(   )
A . ASC(“A+B”) B . CHR(65)+CHR(66) C . "13"+"1" D . Abs(69-200)
下列能将字符串内容转换成数值的函数是(   )
A . Str() B . Chr() C . Asc() D . Val()
若a ← “11” , b ←“22” , 则a + b = 
【加试题】数组a中有50个互异的整数,已按升序排列。给定一个正整数key,寻找数组a中是否有一对数的和等于给定的数key,算法如下:

若存在和为key的数对,输出该数对包含的两个整数,小的在前,大的在后;

若存在多个数对满足条件,则输出最先找到的数对;

若找不到符合要求的数对,则输出“没有符合条件的数对”。

根据上述算法,小黄编写了一个VB程序,功能如下:程序加载时,自动生成50个互异的、按升序排列的随机正整数,依次存入数组a中,并显示在列表框List1中。在文本框Text1中输入key的值,单击“查找”按钮Command1,查找结果在列表框List2中输出。程序运行界面如图所示。

  1. (1) 实现上述功能的VB程序如下,请在画线处填入合适代码。

    Dim a(1 To 50)As Integer

    Const n As Integer=50

    Private sub form_load()

    ‘生成50个互异的、被升序排序的随机正整数,依次存人数组a中

      ‘代码略

    End Sub

     Private Sub Command1=_Click()

      Dim M As Integer,L As Integer,R As Integer

      Dim key As Integer,flag As Boolean

      flag=false:key=Val(Text1.Text)

      For i=1 To n-1

        L=i+1:R=n

        Do While    ①      

        M=    ②    

        If a(i)+a(M)<key Then

          L=M+1

        Else lf a(i)+a(M):>key Then

          R=M-1

        Else

          List2.AddItem Str(a(i))+””+    ③   

          flag=True

        End If

      Loop

      If Not flag Then List2.AddItem”没有符合条件的数对!”

    End Sub

     ② ③ 

  2. (2) 对于6个数据(12,23,35,46,57,68)的序列,若给定key的值是58,则根据上述代码查找的结果是
返回指定日期“月份”的函数是(   )
A . Date( ) B . Day( ) C . Year( ) D . Month( )
在VB中,若a=2,b=3,则执行语句c=a+b*a-b后,变量c的值是(  )
A . 2 B . 3 C . 5 D . 7
某算法的部分流程如下图所示:

若流程执行时,输入x的值为13,那么输出的依次是(  )

A . 1 1 0 1 B . 1 0 1 1 C . 0 0 1 0 D . 0 1 0 0
有如下VB程序段:

For i=1 To 8

    d(i)= In(Rnd*10)

Next i

For i= 2 To 8

    If i Mod 2=0 And d(i)> d(i-1)Then

        d(i)=d(i-1)+1

    ElseIf i Mod 2= 1 Then

        If d(i)>d(i-2) Then

            t=d(i): d(i)=d(i-2): d(i-2)=t

    End If

Next i(  )

A . 8 8 7 1 3 5 0 1 B . 9 0 8 3 5 6 0 1 C . 6 2 5 4 7 8 2 3 D . 9 10 6 7 5 3 2 2
以下程序段运行后,整型变量max1,min1的值分别是(    )。

a=3  b=5

max1=(a+b)/2+Abs(a-b)/2

min1=(a+b)/2-Abs(a-b)/2

A . 5,3 B . 5,5 C . 3,3 D . 3,5
下列Visual Basic表达式的值等于56的是(     )
A . Mid("1234567", 5, 3) B . Len("55") + 1 C . Sqr(56) D . Abs(-55) + 1
在文本框Text1中输入n,生成一个n*n的矩阵。矩阵各元素的值均为0或1,第1个元素的值随机生成,垂直和水平方向相邻元素值均不同。程序运行的界面及实现该过程的VB程序段如下所示:

n = Val(Text1.Text)

m =             

s = “ ”

For i = 1 To n * n

  s = s + Str(m)

  m = 1- m

  If i Mod n = 0 Then

    List1.AddItem s

 s = “ ”

 If             Then m = 1- m

  End If

Next i

实现该功能,则上述程序段横横线处的表达式分别为(    )

A . ①Int(Rnd) ②n Mod 2 = 0 B . ①Int(Rnd) ②n Mod 2 = 1 C . ①Int(Rnd+0.5) ②n Mod 2 = 0 D . ①Int(Rnd+0.5) ②n Mod 2 = 1
有一批货物,已知每件货物的重量和货架号,机器人在可承受的载量范围内,每趟按货物顺序连续装载尽量多的货物,并将各货物送到其货架号相应的货架上。如图a所示,货架构成是环形结构,货架是按顺时针方向从1到10进行编号,第10号货架(即图中A处)不装货物,机器人在A处装载货物。每趟装载货物后,机器人按所装载货物的倒序配送货物,配送过程中尽可能走更短的路线,例如:某趟机器人所装载货物的货架号依次为:3,1,7,9,则机器人按倒序配送货物的路线如图a中带箭头虚线所示,配送完成后回到A处继续下一趟配送任务。现要求在限定配送趟数内完成任务时,计算机器人所能承受装载的最大重量至少为多少?机器人完成所有趟数的配送任务并回到A点的总行程是多少?

图 a

小李编写VB程序实现上述功能:在列表框List1中按货物顺序显示其重量和货架号,在文本框Text1中输入机器人送货趟数,单击“结果”按钮Command1后,标签Label3和Label4中分别显示要求机器人可承受的最大载重最小值和送货总行程。程序运行界面如图b所示。

图 b

请回答下列问题:

  1. (1) 如图b所示,机器人最大载量达到20时,机器人第3趟配送的货物数量是件。
  2. (2) 实现机器人送货功能的VB程序如下,请在划线处填入合适的代码。

    Const num = 8     '货物数量

    Const shelf = 10     '货架数量,1-9号货架可供存储货物,第10号货架用作机器人装货点

    Dim g(1 To num) As Integer      '各货物的重量

    Dim s(1 To num) As Integer       '各货物的货架号

    Private Sub Form_Load()

    '从数据库中读入num件物品的重量、货架号,分别存储在数组g、s中

    '将各物品数据显示在list1中,代码略。

    End Sub

    Private Sub Command1_Click()

    Dim i As Integer, j As Integer, n As Integer, max As Integer, total As Integer

    Dim head As Integer, tail As Integer, dis As Integer, part As Integer

    total = g(1)

    For i = 2 To num

    If g(i) > max Then max = g(i)

    total = total + g(i)

    Next i

    n = 0

    For i = max To total

    part = 0: n = 0: head = 1: dis = 0

    For j = 1 To num

    part = part + g(j)

    If part > i Then

        n = n + 1: j = j - 1: tail = j

        dis = dis + tran(head, tail)

        part = 0: head = tail + 1

    End If

        Next j

    If part > 0 Then

    n = n + 1

    dis = dis + tran(head, tail)

    End If

    If n <= Val(Text1.Text) Then Exit For

    Next i

    Label3.Caption = "机器人可承受的最大载量至少为:" + Str(i)

    Label4.Caption = "机器人完成各趟任务的总行程为:" + Str(dis)

    End Sub

    Function tran(p As Integer, q As Integer) As Integer '计算机器人每趟按装货倒序配送并回到A 处的行程

    Dim temp As Integer, t1 As Integer, t2 As Integer, k As Integer

    temp = 0: t2 = shelf

    For i = q To p Step -1

    t1 = t2: t2 = s(i)

    k = 

    If k > (shelf + 1) \ 2 Then k = shelf - k

    temp = temp + k

    Next i

    If t2 <= shelf \ 2 Then temp = temp + t2 Else temp = temp + shelf - t2

    tran = temp

    End Function

假设在平面内有一个三角形,其边长分别为a、b、c。三角形的面积S可由以下的海伦公式求得:S= ,公式中p= ,为半周长。利用Python实现海伦公式求解三角形面积,有下列问题:
  1. (1) 输入三角形的三边长分别为5,6,7,下列赋值方法中有误的是(     )
    A . B . [a,b,c]=[5,6,7] C . a=5,b=6,c=7 D . a,b,c=5,6,7
  2. (2) 将下列代码补充完整。

    a = float(input("输入边长a:"))

    b = float(input("输入边长b:"))

    c = float(input("输入边长c:"))

    p=(a+b+c)/ 2

    print("三角形的面积:",area)

整型变量x中存放了一个两位数,要将这个两位数的个位数字和十位数字交换位置,例如,13变成31,正确的Python表达式是(    )
A . (x%10)*10+x//10 B . (x%10)//10+x//10 C . (x/10)%10+x//10 D . (x%10)*10+x%10
有一编码规则如下:

明文∶a b c……x y z

密文∶C D E……Z A B

已知变量ym是明文中的一个小写字母,则生成对应密文字母的表达式为(     )

A . Chr(Asc(ym)-32+2) B . Chr(65+Asc(ym)-Asc("a")+2) C . Chr(65+(Asc(ym)-Asc("a")+2) Mod 26) D . Chr(Asc(ym)+(Asc(ym)-Asc("a")+2) Mod 26)
VB表达式9Mod66\3^2/3*4的值是(    )
A . 9 B . 4 C . 0 D . 36
某Python程序段如下:

c =0

for i in range(1, 21):

    if i %3==0 or i %5==0:

        c +=1

print (c)

运行该程序段,输出结果是(    )

A . 10 B . 9 C . 6 D . 1
下列VB表达式的值为True的是(    )
A . sqr(10)>2^2 B . Int(2.6)=len("123") C . "13"*<7"' D . 15/6>15\6
有如下 python 程序段:

s=''

from random import * for i in range(1,4):

    k = int(random()*3+1)

    c=chr(96+k)

    if i % 2 == k % 2:

        s=s+c

    else:

        s=c+s print(s)

若该段程序执行以后,s 的值不可能的是(     )

A . 'abc' B . 'bbc' C . 'aab' D . 'caa'
最近更新