题目

给出只包含加、减、乘、除中一个运算符的算术等式,求该算术等式中的最小进制。如等式6*9=42,该等式中的数字均属于13进制。推算的算法是: ⑴找出等式中单个数字的最大值; ⑵从最大值加1的数制开始,按该数制的运算规则,把等式中所有数字转换成十进制数; ⑶如果等式两边的结论是成立的,那么该数制就是符合上述等式的最小数制,否则从下一个数制重新计算,直到十六进制为止。 小明为此编写了一个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             Next i End Function 答案: 【1】9或九 【1】Asc(ch)-Asc("A")+10【2】i=max+1【3】j=j+1
信息技术 试题推荐
最近更新