
m = 6
n = 14
Print "约分前的分数表示为:" &m"/" &n
If m >0 And n >0 Then
a = m
b = n
res = b Mod a
Do While (res <>0)
b = a
a = res
res = b Mod a
Loop
Print "约分后的分数表示为:" &m / a"/" &n / a
Else
Print "结果为:0"
End If
End Sub
fz=分子fm=分母
fz1 = fz: fm1 = fm
DO '辗转相减法求最大公约数
IF fz1 <fm1 THEN fm1 = fm1 - fz1
IF fz1 >fm1 THEN fz1 = fz1 - fm1
LOOP UNTIL fz1 = fm1
fz = fz / fz1
fm = fm / fm1
Msgbox fz"/"fm'此处的FZ为约分后的分子,FM为分母
REM This program is from zona1993@gmail.com
这里在窗体上放置三个文本框,text1,text2,text3分别用来输入分子、分母和输出结果,再放置一个命令按钮来控制。把下面的代码粘贴进去,运行后输入不同的数值试试,可是你想要的结果。
Private Sub Command1_Click()
Dim GYS As Integer '定义公约数
Dim XSW1 As Integer
Dim XSW2 As Integer
XSW1 = XSW(Text1)
XSW2 = XSW(Text2)
If XSW1 >XSW2 Then '根据小数位,将分子分母同时扩大相同的倍数,转为整数
Text1 = Val(Text1) * 10 ^ XSW1
Text2 = Val(Text2) * 10 ^ XSW1
Else
Text1 = Val(Text1) * 10 ^ XSW2
Text2 = Val(Text2) * 10 ^ XSW2
End If
GYS = GCD(Val(Text1.Text), Val(Text2.Text)) '将两个数同时除以最大公约数
Text1 = Val(Text1) / GYS
Text2 = Val(Text2) / GYS
Text3 = Text1 &"/" &Text2
End Sub
Private Function GCD(x As Integer, y As Integer) As Integer '求两个数的最大公约数
Dim r As Integer
Do Until y = 0
r = x Mod y
x = y
y = r
Loop
GCD = x
End Function
Function XSW(dd As String) '求小数位
XSW = 0
For i = 1 To Len(dd)
If Mid(dd, i, 1) = "." Then
XSW = Len(dd) - i
End If
Next
End Function
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)