相关试卷
-
1、将十六进制数2FH的2倍转化为二进制数,结果是( )A、1011110B B、1100000B C、1000000B D、1011100B
-
2、下列数中,数值最大的是( )A、209D B、D3H C、11010010B D、(210)10
-
3、二进制数(1111010)2转换成十六进制数是( )A、6AH B、6BH C、7AH D、710H
-
4、下列将二进制数(1101)2转换成十进制数的算式中,正确的是( )A、1×23+1×22+0×21+1×20 B、1×23+0×22+1×21+1×20 C、1×24+1×23+0×22+1×21 D、1×24+0×23+1×22+1×21
-
5、编写VB程序,实现如下功能:在文本框Text1和Text2中分别输入一个整数,单击命令按钮Command1,在列表框List1中显示结果,运行效果如图1所示。结果包含两列数据,第1列为两数之间的摄氏温度值(间隔1度、升序),第2列为对应的华氏温度值。
(1)、要使命令按钮Command1上显示的文本改为“转换”,可在其属性窗口(图2)中将属性的属性值修改为“转换”。(2)、为实现上述功能,请在划线处填入合适代码或选项。Private Sub Command1_Click( )
Dim t1 As Integer, t2 As Integer
Dim i As Integer, t As Integer
Dim f As Single ‘f存储华氏温度值
List1.Clear
t1=Val(Text1.Text)
t2=Val(Text2.Text)
If ① Then ‘(选填字母,从下列A、B、C、D四个选项中选取一项)
t=t1:t1=t2:t2=t
End If
i=t1
Do While ② ‘(选填字母,从下列A、B、C、D四个选项中选取一项)
f=i*9/5+32 ‘摄氏温度转换为华氏温度
List1.AddItem Str(i)+“ ”+Str(f)
i= ③ ‘(填程序代码)
Loop
End Sub
划线处应填① ② ③
A.i<=t2 B.f<=t2 C.t1>t2 D.i<f
-
6、将一个十进制正整数x转换成十六进制数的方法和转换成二进制类似,反复除16取余法,它的算法如下:
第一步:x被除16取余数r1,r1是所求的十六进制数的一个数(第一次就是个位数);
第二步:r1转换成十六进制数的一个基数并转换成字符,追加到十六进制数s的左边;
第三步:求出x被除16的商x1;
第四步:对x1重复第一、二、三步,直至商为0;
第五步:最后的s即为所求的十六进制数;
下列Visual Basic程序的功能是将一个十进制正整数x转换成十六进制数。界面如图所示,在文本框Text1中输入一个十进制数,单击“十进制转十六进制”按钮(Command1)后,在文本框Text2中输出转换的结果。

相应的Visual Basic程序如下:
Private Sub Command1_Click()
Dim s As String, r As Integer
dec=val(Text1.Text) ‘dec得到一个十进制整数,例如:255
base=16 ‘base表示16
s=“” ‘s变量存放要转换到的十六进制整数
Do While dec <> 0
r=(1)
If r >=10 Then ‘如果base>10,r可能>10
s=Chr(65+(r-10))+s ‘Chr(65)=“A”,16进制数A对应10;
Else
s=Str(r)+s ‘余数r<10时,十进制数和十六进制基数相同
End If ‘Chr(65+( r-10))或str(r)在s左边,实现了反次序输出
dec=(2)
Loop
Text2.Text=s
End Sub
在(1)处应填入 , 在(2)处应填入。
A.base Mod dec B.dec/base
C.dec Mod base D.dec\base
-
7、将一个十进制正整数转化为二进制数可以采用“除二取余法”,主要方法就是将十进制数用2除,保存所得余数,然后将商的整数部分作为下次运算的被除数,重复上述“除二取余”操作,直到商的整数部分为零时停止。
程序界面如图所示,在文本框Text1中输入一个正整数,单击“转换”按钮(Command1)后,对应的二进制数在文本框Text2中显示出来。

解决此问题的Visual Basic程序如下,在程序①和②划线处,填入适当的语句或表达式,把程序补充完整。
Private Sub Command1_Click()
Dim x As Integer,s As String,r As Integer,t As Integer
x=Val(Text1.text)
s=“”
Do While ①
r=x Mod 2
s=Str(r)+s
x=②
Loop
Text2.text=s
End Sub
(1)、解决此问题所用的算法是。(选填:解析算法或枚举算法)(2)、程序中划线处①应填入。(3)、程序中划线处②应填入。 -
8、用VB编写十六进制转换为十进制的程序,运行界面如图所示,程序功能如下:在文本框Text1中输入待转换的十六进制数值(字母必须大写),单击按钮Command1,进行转换,并将结果显示在文本框Text2中。
(1)、结合运行界面,当前窗体标题文字“进制转换”是From1对象的属性。(2)、请根据题意将下列程序补充完整。Private Sub Command1_Click()
Dim i As Integer, n As Integer, dec As Integer
Dim ch As String, s As String
dec=0
For i=1 To Len(s)
ch=Mid(s, i, 1)
If then
n=Asc(ch)-Asc("A")+10
Else
n=Val(Mid(s, i, 1))
End If
dec=dec+n * 16 ^ (Len(s)-i)
Next i
Text2.Text=str(dec)
End Sub
(3)、若在文本框Text1中输入“31”,则文本框Text2输出的值是。 -
9、“角谷猜想”规则:对任意一个大于1的正整数n,若n 是奇数,则n的值改为3n+1;若n是偶数,则n的值改为n/2,重复以上操作,n 的值最终会变为1。使用VB验证这个猜想。程序界面如图所示,在文本框Text1中输入一个大于1的正整数,单击“验证”按钮Command1,在列表框List1中输出每一步的运算过程。
(1)、在界面设计时,没有使用到的控件为(填字母)。
(2)、为实现上述功能,请在划线处填入合适的代码。Private Sub Command1_Click()
Dim n As Integer, i As Integer
List1.Clear
If n > 1 Then
List1.AddItem “步数对应值”
i=1
Do While
If n Mod 2=1 Then
n=n * 3+1
Else
n=
End If
List1.AddItem Str(i)+“ ”+Str(n)
i=i+1
Loop
Else
List1.AddItem “输入有误!”
End If
End Sub
-
10、下列程序的功能是将text1中输入的自然数分解为3个互不相同的质数(三个质数的和等于输入的自然数),并把分解产生的质数按升序顺序显示在左边的列表框中。例如,输入20,那么在列表框中会显示如图所示结果。其中,界面中“开始处理”按钮的名称是“Command1”,程序中函数f(x)的功能是判断x是否为质数,如果是质数则返回值为true,否则返回值为false。
请在下列程序代码的基础上按照要求设计该程序,完善程序中的划线部分。
Dim n As Integer, a1 As Integer, a2 As Integer, a3 As Integer
Function f(x as integer) As Boolean
f=True
For i=2 To Sqr(x)
If x Mod i=0 Then
Next i
End Function
Private Sub Command1_Click()
n=
For a1=2 To n
For a2=a1 To n
For a3=a2 To n
IfAnd f(a1) And f(a2) And f(a3) Then
List1.AddItem(Str(a1)+“ ”+Str(a2)+“ ”+Str(a3))
End If
Next a3
Next a2
Next a1
End Sub
-
11、珠心算是在大脑中以算珠表象作为载体,运用珠算法则所进行的计算。某学校的珠心算老师采用一种快速考查珠心算加法能力的测验方法。他随机给出一个正整数集合,集合中的数各不相同,然后要求学生回答:其中共有多少个数恰好等于集合中另外两个(不同的)数之和?例如对于集合{1,2,3,4},一共有2个数等于集合中另外两个数之和,它们是3、4(4=3+1,3=2+1)。将上述算法编写成程序,其功能如下:程序运行时产生n个范围在[1,100]内的不同的随机整数存储在数组a中,并在列表框List1中显示。单击按钮Command1后,在标签Label1上输出结果,如图所示。
(1)、对于集合{1,2,3,4,5,6},一共有个数等于集合中另外两个数之和。(2)、实现上述功能的VB程序如下,请在划线处填入合适代码。Const n=12
Dim a(1 To n) As Integer
Dim flag(1 To 100) As Boolean
Private Sub Form_Load()
Dim i As Integer, t As Integer
For i=1 To 100
flag(i)=False
Next i
i=1
Do While i <=n
t=Int(Rnd * 100)+1
If Not flag(t) Then
List1.AddItem Str(t)
flag(t)=True
i=i+1
End If
Loop
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, ans As Integer
ans=0
For i=1 To n
For j=i+1 To n
If a(i)+a(j) <=100 Then
IfThen
ans=ans+1
flag(a(i)+a(j))=False
End If
Next j
Next i
Label1.Caption="共有"+Str(ans)+"个数!"
End Sub
-
12、火柴算术游戏,给定n(n<=24)根火柴,恰好用尽n根火柴拼凑出A+B=C形式的算式,问一共有多少种可行方案,请输出方案的总数,已知0~9每个数字所需的火柴根数如下表所示:

注意:⑴其中A+B=C 等式中的“+”“=”需要用去4根火柴。
⑵0+4=4与4+0=4算作一种方案。
例如n=18,符合条件的算式共有5个:0+4=4,0+11=11,1+10=11,2+2=4,2+7=9。
小明设计了一个程序,在Text1中输入火柴数量,单击“计算”按钮,在Label1中输出总的可行方案数,并在List1中输出所有可行的算式。

程序代码如下,加框处代码有误,请修改。
Dim s(0 To 9) As Integer
Private Sub Command1_Click()
Dim n As Integer, a As Integer, b As Integer, count As Integer
count=0
n=Val(Text1.Text)
For a=0 To 999 Step 1
For b=a To 999 Step 1
If
Then '①List1.AddItem Str(a)+"+"+Str(b)+"="+Str(a+b)
count=count+1
End If
Next b
Next a
Label2.Caption="共"+Str(count)+"种方案"
End Sub
Function gs(ByVal x As Integer) As Integer
Dim tmp As Integer
tmp=0
If x=0 Then tmp=s(0)
Do While x > 0
'②x=x \ 10
Loop
gs=tmp
End Function
Private Sub Form_Load()
s(0)=6: s(1)=2: s(2)=5: s(3)=5: s(4)=4
s(5)=5: s(6)=6: s(7)=3: s(8)=7: s(9)=6
End Sub
-
13、一个十进制整数的二进制表示中,如果数字“1”的个数多于数字“0”的个数,则称该整数为A类数。如十进制整数26的二进制表示为11010,26是一个A类数。下列VB程序的功能是:寻找前1 000个自然数中所有A类数在List1中输出,并将统计个数在Text1中输出。
请回答以下问题。
(1)、十进制数37(选填:是/不是)A类数。(2)、请在划线处填入合适的代码。Private Sub Command1_Click()
Dim i As Integer, n As Integer
Dim s As Integer 's为A类数的个数
Dim t As Integer 't为二进制数中“1”的个数
Dim k As Integer 'k为二进制数中“0”的个数
s=0
For i=1 To 1000
n=i:t=0:k=0
Do While n > 0
If Then t=t+1 Else k=k+1
Loop
If t>k Then
List1.Additem str(i)
s=s+1
End If
Next i
Text1.Text=Str(s)
End Sub
-
14、一个VB工程的部分设计界面如图所示。下列说法不正确的是( )
①工程文件名是“工程1.vbp”
②该工程只有1个窗体
③窗体文件名是“Form.frm”
④窗体名称是“寻找水仙花数”
A、①② B、②③ C、①③ D、③④ -
15、小李在设计VB程序时所使用复选框对象的属性窗口如图所示,他想编制该复选框单击事件的处理过程,则该事件处理过程名是( )
A、CheckBox_Click() B、加粗_Click() C、Check1_Click() D、复选框_Click() -
16、有如下Visual Basic语句,书写格式正确的是( )A、Label1.caption=“Hello!” B、Label1.caption=(-b+sqr(b^2-4ac))/2 C、List1.AddItem=“Hello!” D、Text1.text=str(“Hello!”)
-
17、某Visual Basic程序的一个事件过程如下:
Private Sub Form_Load()
Command1.Caption=“计算”
End Sub
在程序运行时,能触发该事件的是( )
A、窗体装载 B、单击窗体 C、单击命令按钮Command1 D、双击窗体 -
18、一个VB程序的运行界面如图所示。下列说法不正确的是( )
A、文本框Text1的Caption属性值为“H” B、标签Label1的Caption属性值为“输入字符” C、命令按钮Command1的Caption属性值为“查询” D、窗体的Caption属性值为“查询字符ASCII码” -
19、小王在研究n个数的冒泡排序算法,发现可以从两个方面进行优化:
⑴在每遍冒泡过程中,若最后一次交换的是last与last-1位置,则last位置之前的相邻数据均已有序。进行下一遍冒泡时,无序区域设置[last, n],这样可使无序区域缩小。
⑵若在某一遍排序中没有数据交换,说明待排序数据都已经有序,冒泡排序过程可在此遍排序后结束。因此可以引入一个变量flag,记录在每遍排序过程中是否发生了交换。
小王设计了如下VB程序,功能如下:按Cominandl“生成数据”后,生成一组随机的两位整数存入数组a,并输出在列表框List1中。单击Command2“排序”后,a中的数据进行降序排序,排序后的数据显示在列表框List2中,排序过程中实际的冒泡遍数显示在Label2上。程序运行界面如下所示。
实现上述功能的VB程序如下,回答下列问题:
(1)、若按小王优化后的冒泡排序算法,数据28,15,10,8,12进行降序排序,冒泡的遍数(填数字)。(2)、在画线处填入合适的代码。Dim a(1 To 20) As Integer
Private Sub Commandl_Click()
Dim i As Integer, j As Integer
List1. Clear: List2. Clear
Randomize
For i=1 To 20
For j=1 To i-1
If a(i)=a(j) Then i=i-1: Exit For
Next j
Next i
For i=1 To 20
Listl. Addltem Str(a(i))
Next i
End Sub
Private Sub Commandl2_Click()
Dim flag As Boolean, i As Integer, j As Integer
Dim temp As Integer, nuui As Integer, last As Integer
nuin=0: last=1
flag=True
Do While flag=True
For j=20 To last+1 Step-1
If a(j) > a(j-1) Then
temp=a(j): a(j)=a(j-1): a(j-1)=temp
flag=True ‘有交换发生
End If
Next j
num=num+1
Loop
For i=1 To 20
List2. Addltem Str(a(i))
Next i
Label3. Caption=“本次排序的冒泡遍数为:” & Str (num)
End Sub
-
20、小李基于选择排序算法编写了一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。程序运行界面如下图所示。算法的思路:第i趟排序从a(i)……a(bottom)中查找最小值并记录其下标k,同时将后面的每个元素与a(i)比较是否重复,若发现重复数据,进行剔除处理;找到最小值与a(i)交换。
实现上述功能的VB程序如下,在划线处填入合适的代码。
Const n=10
Dim a(1 To n)As Integer
Private Sub Command1_Click()
Dim i As Integer, j As Integer, t As Integer
Dim k As Integer, bottom As Integer
‘获取排序前数据,依次存储在数组a中,并在文本框Text1中显示。代码略
bottom = n: i = 1
Do While i <= bottom - 1
k = i: j = bottom
Do While j > i
If a(j) < a(k) Then
k = j
Elself a(j) = a(i) Then
a(j) = a(bottom)
IfThen k=j
bottom = bottom - 1
End If
j = j - 1
Loop
If k <> i Then
t = a(k): a(k) = a(i): a(i) = t
Else
End If
Loop
For i = 1 To
Text2. Text = Text2.Text + Str(a(i))
Next i
End Sub