题目

给出只包含加、减、乘、除中一个运算符的算术等式,求该算术等式中的最小进制。如等式6*9=42,该等式中的数字均属于13进制。推算的算法是: 1)找出等式中单个数字的最大值; 2)从最大值加1的数制开始,按该数制的运算规则,把等式中所有数字转换成十进制数; 3)如果等式两边的结论是成立的,那么该数制就是符合上述等式的最小数制,否则从下一个数制重新计算,直到十六进制为止。 小明为此编写了一个VB程序,程序运行时,在文本框Text1中输入一个等式,单击“计算”按钮Command1,在文本框Text2中显示该等式中数字所属的数制。程序运行界面如下图所示。 (1) 根据上述算法,则等式“5+7=13”成立,则该等式中的数属于进制数。 (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。 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 ^ j   Next i End Function 答案: 【1】9或九 【1】Asc(ch) - Asc(”A”)+10【2】i=max+1【3】j=j+1
信息技术 试题推荐
最近更新