下列说法正确的是 ( )
下列说法不正确的是( )
①1□□1B>8 ②1□□1B>9 ③1□□1B是奇数 ④1□□1B<16
⑴找出等式中单个数字的最大值;
⑵从最大值加1的数制开始,按该数制的运算规则,把等式中所有数字转换成十进制数;
⑶如果等式两边的结论是成立的,那么该数制就是符合上述等式的最小数制,否则从下一个数制重新计算,直到十六进制为止。
小明为此编写了一个VB程序,程序运行时,在文本框Text1中输入一个等式,单击“计算”按钮Command1,在文本框Text2中显示该等式中数字所属的数制。程序运行界面如下图所示。
Private Sub Command1_Click()
Dim s1 As String, ysf As String,t1 As String,t2 As String,t3 As String
Dim ch As String,t As String, max As Integer, jz As Integer, i As Integer
s1=Text1. Text
t1=0: max=0
For i=1 To Len(s1)
ch= Mid(s1,i,1)
If ch="+" Or ch="-" Or ch="*" Or ch="\" Then
ysf=ch: t1=t: t=" "
ElseIf ch="=" Then
t2=t: t=" "
ElseIf ch>="A" And ch <="F" Then
t=t+ch
temp=
If max<temp Then max=temp
Else
t=t+ch
If max<Val(ch)Then max=Val(ch)
End If
Next i
t3=t: jz=0
Do While i<= 16
If ysf="+" Then
If XtoD(i, t1)+XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do
ElseIf ysf="-" Then
If XtoD(i, t1)-XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do
ElseIf ysf="*" Then
If XtoD(i, t1)* XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do
Else
If XtoD(i, t1)/XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do
End If
i=i+1
Loop
If jz < >0 Then
Text2.Text="该数属于"+Str(jz)+"进制"
Else
Text2.Text="没有找到合适的进制"
End If
End sub
Function XtoD(x As Integer,s As String) As Integer
Dim j As Integer
j=0
For i=Len(s)To 1 Step-1
XtoD=XtoD+Val(Mid(s, i, 1))*x
Next i
End Function