2020版算法与程序设计 专项测试四 进制数转换与运算

文档属性

名称 2020版算法与程序设计 专项测试四 进制数转换与运算
格式 zip
文件大小 3.4MB
资源类型 教案
版本资源 通用版
科目 通用技术
更新时间 2019-12-01 20:28:30

文档简介

专项测试四 进制数转换与运算
1.在文本框Text1中输入一个十进制整数,单击“进制数转换”按钮Command1,则将该十进制数转换为八进制数,并在标签Label3中显示转换结果。程序运行效果如下图所示:
实现上述功能的VB程序如下,请在程序划线处填入合适的代码。
Function dtoo(x As Long) As String
  Dim y As Integer, s As String
  s = “ ”
  Do While x > 0
  y = x Mod 8
  ____①____
  s = y & s
  Loop
  ____②____
End Function
Private Sub Command1_Click()
 Dim n As Long
 n = Val(Text1.Text)
 Label3.Caption = ______③______
End Sub
(1)请在程序划线处填入合适的代码。
(2)程序运行时,在文本框Text1中123,则输出的结果为________。
解析 (1)自定义函数dtoo(x)的功能是将十进制数x转换为八进制数,十进制转换为八进制数的方法为:除8取余,直到商为0。①处代码为整数x除8后的整数商,因此代码为x=x8;②处代码表示将函数值的返回,自定义函数的函数值是通过函数名来返回,函数名为dtoo,八进制数为s,因此②处代码为dtoo=s;③处代码表示调用函数,参数为整数n,因此代码为dtoo(n)。(2)十进制数123转换为八进制数为173。
答案 (1)①x = x 8 ②dtoo = s ③dtoo(n) (2)173
2.奇偶校验是一种校验数据传输正确性的方法。其中奇校验方法:统计二进制数据的数位中“1”的个数,若个数为奇数,则校验位值为0,否则校验位值为1。
小李编写了一个计算奇校验位值得VB程序,功能如下:在文本框Text1中输入1~255十进制待校验数,单击“计算”按钮Command1后,在文本框Text2中显示该数对应的二进制值,并在标签Label3中显示该数的校验位值。程序运行界面如图所示。
(1)在设计程序界面时,要清空文本框中的显示内容,应修改该文本框中的________属性。
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
Private Sub Command1_Click()
 Dim a As Integer, s As String
 Dim n As Integer, t As Integer, v As Integer
 n = Val(Text1.Text)
 t = 0
 s = “ ”
 Do While n > 0
a = n Mod 2
n = n 2
t = ____①____
s = Str(a) + s
 Loop
 v = t Mod 2
 Text2.Text = s
 Label3.Caption = “校验位值:“ + ____②____
End Sub
(3)运行该程序,在文本框Text1中输入22,单击“计算”按钮,则显示的校验位值是________。
解析 (1)本小题主要考查的是对象的属性。文本框的内容是由Text属性所决定的。
(2)本小题主要考查的是程序的综合应用能力。变量t用于统计待校验数转化为二进制数后数位中“1”的个数,因此①处填入的代码为t+a;由于二进制数的数位中“1”的个数为奇数时,校验位值为0,为偶数时,校验位值为1,而v=t Mod 2,即t为偶数时,v=0,t为奇数时,v=1,因此v的值与所求的校验位值正好相反,故②处填入的代码为Str(1-v),也可以写为 Str(Abs(v-1)),还可以写为Str((t+1) Mod 2)。
(3)本小题主要考查的是实际应用能力。十进制22对应的二进制为10110,1的个数为3,因此检验位值为0。
答案 (1)Text (2)①t+a ②Str(1-v)或Str(Abs(v-1))或Str((t+1) Mod 2) (3)0
3.用VB编写程序界面如图所示,程序功能如下,在文本框Text1中输入一个英文字符,单击命令按钮Command1,在文本框Text2中显示字符的ASCII码值(十六进制)。
(1)程序代码“Private Sub Command1_Click()”中Command_Click()是指________(选填:对象名 / 属性名 / 过程名 / 事件名 / 方法名)。
(2)为了实现上述功能,请在划线处填入合适代码。
Private Sub Command1_Click()
 Dim ch As String, d As Integer
 Dim h1 As Integer, h2 As Integer, h3 As String
 ch = Text1.Text
 If ch < > “ ” Then d = Asc(ch)
 h1 = d 16
 ____①____
 If ____②____Then
h3 = Str(h2)
 Else
h3=Chr (55+h2)
 End If
 Text2.Text = Str(h1) + h3
End Sub
解析 本程序的功能是将十进制数转换为十六进制数。方法为除以16取余,需注意的是商和余数为10-15时,要用字母“A-F”表示。①处代码的功能是求余数,因此代码为h2 = d Mod 16;余数大于9时,要用字母“A-F”表示,因此条件为h2<10或h2<=9。
答案 (1)过程名 (2)①h2=d Mod 16 ②h2<10或h2<=9
4.编写一个程序, 计算二个二进制数的和(二进制数)。具体功能如下:程序运行时,分别在文本框Text1、Text2中输入两个二进制数,单击“计算”按钮,则在文本框Text3中显示计算结果。 程序运行界面如下图所示。
(1)观察程序代码可知,窗体上的“计算”按钮的名称为________。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Comm1_Click()
 Dim s1 As String, s2 As String, ans As String, t As String
 Dim i As Integer, j As Integer, v As Integer
 s1 = Text1.Text: s2 = Text2.Text
 If Len(s1) < Len(s2) Then
t = s1: s1 = s2: s2 = t
 End If
 For i = 1 To Len(s1) - Len(s2)
  s2 = “0” + s2
 Next i
 i = Len(s1)
 j = 0
 ans = “ ”
 Do While i > 0
______①______
ans = (v Mod 2) & ans
j = v 2
i = i - 1
 Loop
 If ______②______
 Then ans = “1” + ans
 Text3.Text = ans
End Sub 
(3)若文本框Text1中输入的内容为“111”,文本框Text2中输入的内容为“1101”,单击“计算”按钮,文本框Text3中显示的内容是________。
解析 本题的算法思想是:首先通过高位补零的方法,使做加法运算的两个二进制数的位数相同;然后将两个二进制数从低位往高位逐位相加,每位相加时还需加上上一次的进位j;最后需注意的是最高位相加时的进位情况。①处为对应位相加,j为进位,因此①处的代码为v=Val(Mid(s1,i,1))+Val(Mid(s2,i,1))+j,②处为最高位是否进位,如最高位进位,则在二进制数前面添加一位“1”,因此②处代码为j = 1,或写为j< >0或j>0。
答案 (1)Comm1 (2)①v = Val(Mid(s1, i, 1)) + Val(Mid(s2, i, 1)) + j ②j = 1或j< >0或j>0 (3)10100
5.编写“十六进制加法”程序,实现如下功能:在文本框Text1和Text2中分别输入1位十六进制数(0~F,字母必须大写),点击“计算”按钮Command1,在文本框Text3中显示两数相加的十六进制数结果。程序运行的界面如图所示。
(1)若要让程序运行时,窗体Form1的标题显示“十六进制加法”,下列操作不可行的是:________(单选,填字母:A.可在Command1_Click事件过程中添加语句Form1.Caption=“十六进制加法” / B.在窗体Form1的属性窗口修改其caption属性值为“十六进制加法” / C.将窗体Form1的名称直接改为“十六进制加法”)。
(2)实现上述功能的VB程序如下,请在划线处填写合适的代码。
Private Sub Command1_Click( )
 Dim a As String, b As String, s As String, c As String
 Dim x As Integer, y As Integer, z As Integer, i As Integer
a = Text1.Text
 b = Text2.Text
 s = “0123456789ABCDEF”
 For i = 0 To 15
If a = Mid(s, i + 1, 1) Then x = i
If b = Mid(s, i + 1, 1) Then y = i
 Next i
 z = x + y
 If z >=16 Then
c = “1” + ______①______
 Else
c = Mid(s, z + 1, 1)
 End If
 Text3.Text = ______②______
End Sub
(3)若在文本框Text1和Text2中都输入“F”,点击计算按钮后,Text3中显示的结果为________。
解析 (1)本题主要考查的是窗体的对象名、属性及属性值。(2)本题主要考查的是十六进制数的加法运算。若z>=16,则表示高位进位,而个位上的结果是z-16或z Mod 16,根据字符串s可知,数字0在字符串s的位置为1,数字1在字符串s中的位置为2,依次类推,因此①处语句为Mid(s,z-15,1)或Mid(s,z Mod 16 + 1,1);(3)本小题主要考查的是十六进制数加法运算的实际应用。十六进制数F表示15,因此FH+FH=1EH。
答案 (1)C (2)①Mid(s,z-15,1)或Mid(s,z Mod 16 + 1,1) ②C (3)1E
6.“5421BCD”码是一种采用四位二进制数表示一位十进制数的编码,其各位的权依次为5、4、2、1,并要求大于等于5的十进制数所对应的编码最高位为1(如十进制数7所对应的“5421BCD”码为1010)。转换时,将十进制数从右至左按位转换成对应的“5421BCD”码,然后依次连接。小王编写了一个VB程序,在文本框Text1中输入十进制数,单击“转换”按钮Command1,在文本框 Text2中显示对应的“5421BCD”码。程序运行界面如图所示。
(1)观察代码,单击“转换”按钮触发的事件处理过程名是____________。
(2)为实现上述功能,请在划线处填入合适的语句。
Private Sub Command1_Click()
 Dim x As Long, y As String, a As Integer , a1 As Integer
 Dim a2 As Integer, a3 As Integer, a4 As Integer
 x = Val(Text1.Text)
 y = “ ”
 Do While ________①________
   a = x Mod 10
   x = ________②________
a1 = a 5: a = a Mod 5
a2 = a 4: a = a Mod 4
a3 = a 2: a = a Mod 2
a4 = a
y = ________③________
 Loop
 Text2.Text = y
End Sub
(3)十进制数3721所对应的5421BCD码为________。
解析 (1)过程名为Command1_Click;(2)本题的算法思想是:从低到高位取出十进制数的每一位数字,然后逐一对取出的数字进行分析,组成该数字的5421组合情况,并用01字符表示,最后将每个数字的对应的01串拼接起来,就是十进制数对应的5421BCD码。用除以10取余的方法取出整数的每一位数字,直到全部数字取出为止,因此①处代码 为x>0;②处为x除以10的整数商,因此代码为x10;③为5421组合情况拼接在字符串y中,需注意的是高位数字的5421码依次拼接在字符串y的前面,因此③处代码为Str(a1)+Str(a2)+Str(a3)+Str(a4)+y。
答案 (1)Command1_Click (2)①x>0 ②x10
③Str(a1)+Str(a2)+Str(a3)+Str(a4)+y
(3)11101000100001
专项测试四 进制数转换与运算
1.在文本框Text1中输入一个十进制整数,单击“进制数转换”按钮Command1,则将该十进制数转换为八进制数,并在标签Label3中显示转换结果。程序运行效果如下图所示:
实现上述功能的VB程序如下,请在程序划线处填入合适的代码。
Function dtoo(x As Long) As String
  Dim y As Integer, s As String
  s = “ ”
  Do While x > 0
  y = x Mod 8
  ____①____
  s = y & s
  Loop
  ____②____
End Function
Private Sub Command1_Click()
 Dim n As Long
 n = Val(Text1.Text)
 Label3.Caption = ______③______
End Sub
(1)请在程序划线处填入合适的代码。
(2)程序运行时,在文本框Text1中123,则输出的结果为________。
2.奇偶校验是一种校验数据传输正确性的方法。其中奇校验方法:统计二进制数据的数位中“1”的个数,若个数为奇数,则校验位值为0,否则校验位值为1。
小李编写了一个计算奇校验位值得VB程序,功能如下:在文本框Text1中输入1~255十进制待校验数,单击“计算”按钮Command1后,在文本框Text2中显示该数对应的二进制值,并在标签Label3中显示该数的校验位值。程序运行界面如图所示。
(1)在设计程序界面时,要清空文本框中的显示内容,应修改该文本框中的________属性。
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
Private Sub Command1_Click()
 Dim a As Integer, s As String
 Dim n As Integer, t As Integer, v As Integer
 n = Val(Text1.Text)
 t = 0
 s = “ ”
 Do While n > 0
a = n Mod 2
n = n 2
t = ____①____
s = Str(a) + s
 Loop
 v = t Mod 2
 Text2.Text = s
 Label3.Caption = “校验位值:“ + ____②____
End Sub
(3)运行该程序,在文本框Text1中输入22,单击“计算”按钮,则显示的校验位值是________。
3.用VB编写程序界面如图所示,程序功能如下,在文本框Text1中输入一个英文字符,单击命令按钮Command1,在文本框Text2中显示字符的ASCII码值(十六进制)。
(1)程序代码“Private Sub Command1_Click()”中Command_Click()是指________(选填:对象名 / 属性名 / 过程名 / 事件名 / 方法名)。
(2)为了实现上述功能,请在划线处填入合适代码。
Private Sub Command1_Click()
 Dim ch As String, d As Integer
 Dim h1 As Integer, h2 As Integer, h3 As String
 ch = Text1.Text
 If ch < > “ ” Then d = Asc(ch)
 h1 = d 16
 ____①____
 If ____②____Then
h3 = Str(h2)
 Else
h3=Chr (55+h2)
 End If
 Text2.Text = Str(h1) + h3
End Sub
4.编写一个程序, 计算二个二进制数的和(二进制数)。具体功能如下:程序运行时,分别在文本框Text1、Text2中输入两个二进制数,单击“计算”按钮,则在文本框Text3中显示计算结果。 程序运行界面如下图所示。
(1)观察程序代码可知,窗体上的“计算”按钮的名称为________。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Comm1_Click()
 Dim s1 As String, s2 As String, ans As String, t As String
 Dim i As Integer, j As Integer, v As Integer
 s1 = Text1.Text: s2 = Text2.Text
 If Len(s1) < Len(s2) Then
t = s1: s1 = s2: s2 = t
 End If
 For i = 1 To Len(s1) - Len(s2)
  s2 = “0” + s2
 Next i
 i = Len(s1)
 j = 0
 ans = “ ”
 Do While i > 0
______①______
ans = (v Mod 2) & ans
j = v 2
i = i - 1
 Loop
 If ______②______
 Then ans = “1” + ans
 Text3.Text = ans
End Sub 
(3)若文本框Text1中输入的内容为“111”,文本框Text2中输入的内容为“1101”,单击“计算”按钮,文本框Text3中显示的内容是________。
5.编写“十六进制加法”程序,实现如下功能:在文本框Text1和Text2中分别输入1位十六进制数(0~F,字母必须大写),点击“计算”按钮Command1,在文本框Text3中显示两数相加的十六进制数结果。程序运行的界面如图所示。
(1)若要让程序运行时,窗体Form1的标题显示“十六进制加法”,下列操作不可行的是:________(单选,填字母:A.可在Command1_Click事件过程中添加语句Form1.Caption=“十六进制加法” / B.在窗体Form1的属性窗口修改其caption属性值为“十六进制加法” / C.将窗体Form1的名称直接改为“十六进制加法”)。
(2)实现上述功能的VB程序如下,请在划线处填写合适的代码。
Private Sub Command1_Click( )
 Dim a As String, b As String, s As String, c As String
 Dim x As Integer, y As Integer, z As Integer, i As Integer
a = Text1.Text
 b = Text2.Text
 s = “0123456789ABCDEF”
 For i = 0 To 15
If a = Mid(s, i + 1, 1) Then x = i
If b = Mid(s, i + 1, 1) Then y = i
 Next i
 z = x + y
 If z >=16 Then
c = “1” + ______①______
 Else
c = Mid(s, z + 1, 1)
 End If
 Text3.Text = ______②______
End Sub
(3)若在文本框Text1和Text2中都输入“F”,点击计算按钮后,Text3中显示的结果为________。
6.“5421BCD”码是一种采用四位二进制数表示一位十进制数的编码,其各位的权依次为5、4、2、1,并要求大于等于5的十进制数所对应的编码最高位为1(如十进制数7所对应的“5421BCD”码为1010)。转换时,将十进制数从右至左按位转换成对应的“5421BCD”码,然后依次连接。小王编写了一个VB程序,在文本框Text1中输入十进制数,单击“转换”按钮Command1,在文本框 Text2中显示对应的“5421BCD”码。程序运行界面如图所示。
(1)观察代码,单击“转换”按钮触发的事件处理过程名是____________。
(2)为实现上述功能,请在划线处填入合适的语句。
Private Sub Command1_Click()
 Dim x As Long, y As String, a As Integer , a1 As Integer
 Dim a2 As Integer, a3 As Integer, a4 As Integer
 x = Val(Text1.Text)
 y = “ ”
 Do While ________①________
   a = x Mod 10
   x = ________②________
a1 = a 5: a = a Mod 5
a2 = a 4: a = a Mod 4
a3 = a 2: a = a Mod 2
a4 = a
y = ________③________
 Loop
 Text2.Text = y
End Sub
(3)十进制数3721所对应的5421BCD码为________。
同课章节目录