十进制整数换成二进制整数采用“除2倒取余”法。十进制小数转换成二进制小数采用“乘2顺取整”法,具体做法是:用2乘十进制数的小数部分,得到一个积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。小刘根据以上方法编写了VB程序,运行界面如图所示。程序运行时,在文本框Text1中输入一个带小数的正十进制数(小于32767),点击“转换”按钮Command1,在文本框Text2中输出转化后的带小数的二进制数,精确到3位小数。实现上述功能的VB程序如下,请回答下列问题:
(1)
按照本程序的功能,在Text1中输入数据9.78,点击“转换”按钮Command1,在Text2中输出。
(2)
请在划线处填入合适的代码.
Private Sub Command1_Click()
Dim i
As Integer,pos As
Integer
Dim s
As String,c As String,result As String
Dim s1
As Single,s2 As
Single
result=" ": i=1
s=Text
1.Text
c=Mid(s,i,1)
Do
While c<>"."
i=i+1
c=Mid(s,i,1)
Loop
pos=i
①
s2 =
Val("0."+Mid(s,pos +1))
result=convert(s1)&"."
& convert(s2)
Text2.Text=result
End Sub
Function convert(x As Single)As String
Dim
temp As Integer,k As lnteger
If
x>=1 Then '整数转化为二进制
temp=x
Mod 2
result=temp & result
x=x\2
Do
While x <>0
temp=x
Mod 2
result=temp & result
x=x\2
Loop
Else '小数转化为二进制,保留3位小数
k=1
Do
While ②
temp=Int(x*2)
result=result & temp
③
k=k +1
Loop
End If
convert=result
End Function
①②③
答案: 【1】1001.110
【1】s1=Val(Mid(s,1,pos-1))或者s1=Val(Mid(s,1,i-1)【2】x<>0Andk<4【3】x=x * 2-temp