4.1 程序设计语言的基础知识 知识点题库

相传三齐王韩信才智过人,从不直接清点自己军队的总人数,只是让士兵先后以三人一排、五人一排、七人一排地变换队形,假设先后三次队形的排尾人数分别是x人、y人、z人,他就知道自己军队的人数是m人。请问下列表达式中哪一项最符合对上述算法思想的描述?(  )
A . x + y + z = m B . m Mod 3 = x And m Mod 5 = y And m Mod 7 = z C . 3 * x + 5 * y + 7 * z = m D . m Mod 3 = x Or m Mod 5 = y Or m Mod 7 = z
下列VB 程序用于求2个正整数(均小于10000)的最大公约数:

Private Sub Command1_Click()

Dim x As Integer,y As Integer,z As Integer

x=Val(Text1.Text)     ‘第1个正整数

y=Val(Text2.Text)     ‘第2个正整数

                   ‘调用函数gcd

Text3.Text=Str(z)

End Sub

Function gcd(a As Integer, b As Integer) As Integer

 Do While a <> b

If a>b Then a=a-b Else b=b-a

Loop

gcd=b

End Function

方框中的正确语句是(  )

A . z=gcd B . z=gcd(a, b) C . z=gcd(x, y) D . z=gcd x, y
随机产生10个[12,20]间的随机整数放在A数组中,打印最大的和最小的。请完善程序:

  PRIVATE SUB FORM_CLICK()

 

  MAX=0: MIN=21

FOR I= 1 TO 10

   A(I)=

  IF THEN   MAX=A(I)

  IF THEN  MIN=A(I)

NEXT I

PRINT “最大数是”;MAX ,”最小数是” ;MIN

END SUB

有如下循环结构程序段:

Dim s As Single

s = 32

For i = 1 To 10 Step ________

    s = 8/2

Next i

该程序执行后,s的值为1,则循环语句的步长应为(  )

A . 1 B . 2 C . 3 D . 4
在文本框Text1中输入一串字符串,单击“运行”按钮后,程序在列表框List1中输出该字符串的所有子串,程序运行界面如图所示,VB代码如下。

   s=Text1.Text

   For i=1 To Len(s)

       For j=    ①   

           List 1.AddItem   ②   

       Next j

   Next i

为实现上述功能,程序段两个划线处的语句分别为 (  )

A . ①i To Len(s)         ②Mid(s,i,j-i+1) B . ①1 To Len(s)-i+1     ②Mid(s,j,i) C . ①i To Len(s)-i+1     ②Mid(s,i,j-i+1) D . ①1 To Len(s)        ②Mid(s,j,i)
已知a=5,b=7,c=-2,d=1时,下列表达式的值为False的是(  )
A . a+b>c+d And a\b>=0 or Not c<0 or d<0 B . c+d>a+b And a\b>=0 or Not c>0 or d>0 C . a+b>c+d And a\b<=0 or Not c>0 or d<0 D . a+d<b+c And a\b<- or Not c<0 or d<0
某VB程序段如下:

    For i = 1 To 7

       b(i) = 1

Next i

For i = 1 To 7

    For j = 1 To i - 1

      If a(i)>a(j) and b(i)<=b(j) Then

        b(i) = b(j) + 1

      End If

    Next j

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

Next i

数组元素a(1)到a(7)的值依次“50,10,14,64,47,70,82”,执行该程序段后,变量max的值是(   )

A . 5 B . 4 C . 3 D . 2
有如下程序段:

s=”ABCDEFGH”
i=1

Do While i<=Len(s)

  If i Mod 2=0 then  

    s=Mid(s, i+1, len(s)-i) & Mid(s, 1, i-1)

  End if

   i=i+1

Loop

Text1.text=s

A . ACEG B . CDEFG C . CDEGH D . GHACD
地球上任意位置可以用纬度、经度描述,纬度区间是[-90,90],经度区间是[-180,180]。如:浙江省绍兴市越城区鲁迅故里的纬度是29.9924099,经度为120.58552218。为表达位置间的邻近关系,引入了地理区域编码,某算法的核心思想如下:

•将地理上某点经纬度分别转换成二进制编码。例如,对于给定纬度lat(299924099),编码规则为:

•将区间[-90,90]二分为[-90,0),[0,90],称为左、右区间,1at属于右区间[0,90],标记为1;

•将区间[0,90]二分为[0,45),[45,90],lat属于左区间[0,45),标记为0;

•重复上述过程,不断划分区间,lat属于左区间则记录0,属于右区间则记录1。直到达到指定编码长度 length(一般为5的倍数)为止类似地,可对经度lng(120.58552218进行二进制编码。

·Base32编码合成为地理区域字符串。以编码长度 length=10为例,如前述计算得到,鲁迅故里的纬度编码为10101 01010,经度编码为11010 10110。地理区域字符串生成规则:

•生成新串:奇数位放经度,偶数位放纬度,将两串编码组合:110110 11001 10011 01100;

•分组转换:将11100 11001 10011 01100每5位一组转成1个十进制整数,分别对应为28,25,19,12;

•Base32编码:使用数字0~9、小写字母(去掉字母a,i,1,o)这32个字符进行Base32编码(见下表)。十进制整数28,25,19,12对应的编码组合就是“wtmd”,即为该位置的地理区域字符串。

  1. (1) 规定编码长度 length为5,经度lng为120.125 082 58,则经度lng的二进制编码为
  2. (2) 小沈根据上述描述,设计了一个“利奇马”台风中心途经经纬度转换为地理区域字符串的算法。该算法VB程序实现如下,请在划线处填入合适的代码

    Const m=48, length=20'纬度、经度二进制编码长度均为 length

    Dim a(1 To 2*m)As Double

    Dim b(1 To m) As string

    ′读取m个时刻台风中心的经纬度数据并存入数组a,代码略'a(1),a(2)为台风在时刻1的纬度、经度,a(3),a(4)为台风在时刻2的纬度和经度,......

    ′b(1)保存台风在时刻1的地理区域字符串,b(2)保存台风在时刻2的地理区域字符串,......

    Private Sub Command1_Click()

    ′lat为纬度、1ng为经度,code为地理区域编码

    Dim lat As double, Ing As Double, code As String

    Dim strLat As String, strLng As String, s As String

    Dim i As integer, j As Integer, n As Integer

    Const base32="0123456789bcdefghjkmnpqrstuvwxyz"

    For i=1 To m

    lat=a(2*i-1)

    Ing=a(2*i)

    S=""

    strLat= DoubleToBits (lat,—90,90)      ′纬度转换为二进制编码

    strLng=DoubleToBits(lng,—180,180)      ′经度转换为二进制编码

    For j=1 To length

    s=①      ′将两串二进制编码组合

    Next j

    n=0: code=""

    For j=1 To Len(s)

    If j Mod 5=0 Then

    code= code+Mid(base32,n+1,1)

    n=0

    End If

    Next j

    b(i)=code

    Next i

    ′输出地理区域编码,代码略

    End sub

    ′函数 Doubletobits根据指定的区间[ lower,upper],计算 value的二进制编码

    Function Double ToBits( value As Double,lower As Double,upper As Double) As String

    Dim ret As String, i As Integer, middle As Double

    ret="": i=1: middle=0

    Do While i<= length

    middle=(upper+lower)/2

    If ③Then

    lower=middle

    ret=ret+"1"

    Else

    upper=middle

    ret=ret+"0"

    End If

    i=i+1

    Loop

    DoubleToBits=ret

    End function

下面的程序段,执行后,变量S的值为(  )

a=5

b=10

S=2*(a+b)

A . 10 B . 20 C . 30 D . 40
某冒泡排序算法的VB程序段如下:

i =n

Do while i>=2

  For j=     

    If a(j) > a(j- 1) Then

      t = a(j): a(j) = a(j-1): a(j-1) =t

    End If

  Next j

  i=i-1

Loop

执行完上述程序段后,实现a数组元素有序排列,则划线处的代码可以是(    )

①n To n + 2- i Step –i    ②n To i + 1 Step -1    ③2 To i    ④2 To n-i

A . ②③ B . ②④ C . ①④ D . ①③
已知一个含有 n 个不重复整数的数组 a,i 和 j 表示数组下标(i<j),在数组 a 中求解表达式 a(i)+i 与 a(j)-j 之和的最大值,VB 程序段如下:

Private Sub Command1_Click()

Dim s As Integer, b As Integer

s = 0: b = a(1) + 1

For i = 2 To n

  

  

Next i

Label1.Caption = Str(s)

End Sub

Function max(x As Integer, y As Integer)

If x > y Then          Else

End Function

方框中的代码由以下四部分组成:

①max = y ②max = x ③b = max(b, a(i) + i) ④s = max(s, a(i) - i + b)

代码顺序正确的是(       )

A . ④③①② B . ③④②① C . ③④①② D . ④③②①
下列能随机产生三位正整数的VB表达式是(     )。
A . Int(Rnd*899)+100 B . Int(Rnd*900)+100 C . Int(Rnd*1000 ) D . Int(Rnd*999)
Python表达式中,可以使用(    )控制运算的优先顺序。
A . 圆括号() B . 方括号[]    C . 花括号{} D . 尖括号<>
print(1, 2, 3, sep=',') 的输出结果为
一维数组a(下标从0开始)中元素值依次为11-100之间的奇数,则数组元素a[k]的值是(    )
A . 2*k+10 B . 2*k+11 C . 2*k+12 D . 2*k+13
已知list=["Word,"for,"sent","city","piano"],则list[3][2]的返回值为(   )
A . "e" B . "o" C . "t" D . "a"
表达式'Year' in 'happy New year'的值为(    )
A . True B . false C . 1 D . False
在Python中,函数体用“return(表达式]”将表达式的值返回给调用者,如果return后面没有表达式,这时函数返回的是(    )
A . None B . 1 C . -1 D . False
用Python程序段定义一个3行4列的二维数组(要求先将各元素的值初始化为0,再将第2行第2个元素重新赋值为1),以下程序段可行的是(  )
A . arr=[[0]*3 for j in range(4)]

arr[2][2]=1

B . arr=[[0]*4]*3 arr[1][1]=1 C . arr=[[0] for i in range(4)]

for j in  range(3)

arr[1][1]=1

D . arr=[[0,0,0,0] for j in range(3)]

arr[2][2]=1

最近更新