例1 现VB程序实现述功程序界面图示文框Text1Text2中分输入加数加数单击求钮Command1文框Text3中显示
实现述功VB程序加框处代码错请改正
Private Sub Command1_Click()
Dim t As String
xText1Text
yText2Text
z″ ″
If Len(y)
End If
For i1 To Len(y)Len(x)
xx+″0″ '①
Next i
f0
For iLen(x) To 1 Step1
aVal(Mid(xi1))
bVal(Mid(yi1))
zStr((a+b) Mod 10)+z '②
f(a+b)\10
Next
If f1 Then zStr(f)+z
Text3Textz
End Sub
答案①x″0″+x ②zStr((a+b+f) Mod 10)+z
解析①高精度数相加前首先较数前添加前导0较数数字位数相等
②计算第i位数字方法取出xy第i位数字ab低位进位f相加10余数i位数字
例2求两意位数正整数差功实现VB定义函数程序加框处代码错请改正
Private function fx(x as Stringy as String)as String '参数xy表示减数减数
Dim t As String z As String a As String b As String
Dim i As Integerf as Integer sign as String
z ″ ″
sign ″ ″
If Len(y) > Len(x) Or (Len(x) Len(y) Andx
End If
For i 1 To Len(x) Len(y)
y ″0″ + y
Next i
f 0
For i Len(x) To 1 Step 1
a Val(Mid(x i 1)) ' ①
b Val(Mid(y i 1))
If a < b Then f 1 Else f 0
z Str(a b) + z ' ②
Next
fx sign + z
End function
答案 ①aVal(Mid(xi1))f ②zStr(a+f*10b)+z
解析 根竖式相减方法位开始逐位相减出位差值程序中变量f表示否高位1z保存差值sign表示正负符号if语句功较数值存入变量x第for语句功较数前添加前导0较数位数相第二for语句功取出两数应位数字ab中减数a须先减位(01)确定次减法否位两位数字相减值加入字符串z中①处应填入a Val(Mid(x i 1))f②处应填入z Str(a+f*10b)+z
例3VB程序实现数加法功文框Text1Text2中分输入位数超100加数加数单击求钮Command1文框Text3中显示
实现述功VB程序请划线处填入合适代码
Private Sub Command1_Click()
Dim a(100) as Integerb(100) as Integerc(100) as Integer
Dim s1 as Strings2 as Strings3 as String
Dim n1 as integern2 as Integern3 as Integercf as Integer
'第1数s1位分解数组a
s1Text1Text
n1len(s1)
For i1 to n1
a(i)val(mid(s1n1i+11))
Next i
'第2数s2位分解数组b
s2Text2Text
n2len(s2)
For i1 to 2
b(i)val(mid(s2n2i+11))
Next i
If n1>n2 then n3n1+1 else n3n2+1
cf0
For i1 to n3 '位次相加
①
cfc(i)\10
②
Next i
s3″ ″
If c(n3)0 then n3n31
For in3 to 1 step1 '计算结果输出
s3 ③
Next I
Text3texts3
End sub
答案 ①c(i)a(i)+b(i)+cf ②c(i)c(i) mod 10c(i)c(i)cf*10 ③s3+Str(c(i))
解析 数组ab存放两加数位存放第元素中十位存入第二元素次存放变量cf存放进位①处循环执行位相加程次取出2位数字a(i)b(i)低位进位cf相加i位数字进位①处填c(i)a(i)+b(i)+cf①处进位值cfc(i)\10②处i位数字c(i)c(i) mod 10③处位数字c(i)连起结果in3开始高位开始③处填s3+Str(c(i))果改for i1 to n3③处应Str(c(i))+s3
课练
1VB算术运算中Double类型效数字15位实现法运算商保留意位数明根法原理编写程序功程序运行时文框Text1中输入数(正整数)文框Text2中输入数(正整数)文框Text3中输入数位数(正整数)单击钮Command1标签Label2显示法运算商程序运行界面图示
请划线处填入合适代码
Private Sub Command1_Click()
Dim x As Integery As Integer
Dim n As Integer '存储数位数
Dim s As String '存储商
xVal(Text1Text)yVal(Text2Text)
nVal(Text3Text)
ss+Str(x\y)
ss+″″ '添加数点
k ①
i1
Do While i
s ②
kk Mod y
③
Loop
Label2Caption″商″+s
End Sub
答案 ①x Mod y ②s+Str(k\y) ③ii+1
解析 程序采迭代算法具体方法先商整数部分通循环次余数k10k\y值存入skk mod y循环执行直i>nk0
2名编写位数法VB程序文框Text1中输入等1000位数文框Text2中输入1位数点击开始计算钮Command1文框Text3中显示计算结果
实现述功VB程序加框处代码错请改正
Private Sub Command1_Click()
Dim d(1 To 1001) As Integerstr1 As Stringstr2 As String
Dim i As Integern As Integerk As Integers As Integer
str1Text1Text
nLen(str1)
For i1 To n
d(i)Val(Mid(str1i1))
Next i
s0 's表示进位
kVal(Text2Text)
For in To 1 Step1
d(i)d(i) k '①
sd(i)\10
d(i)d(i) Mod 10
Next i
If s<>0 Then str2CStr(s) Else str2″ ″ 'CStr函数功类似Str
For i1 To n
str2CStr(d(i))+str2 '②
Next i
Text3Textstr2
End Sub
答案 ①d(i)d(i)*k+s ②str2str2+CStr(d(i))
解析 数组d存放数d(1)存放高位d(n)存放低位①处循环实施法先第i位数字d(i)k加低位进位s结果存入d(i)d(i)\10值s位进位更新d(i)d(i) Mod 10d(i)值第i位数字②处循环位数字d(i)存入str2d(1)存放高位d(n)存放低位str2str2+CStr(d(i))
3求两意位数正整数积实现该功VB程序界面示
文框Text1中输入数1文框Text2中输入数2单击钮积Command3文框Text3中显示积Command3钮单击事件处理程加框处代码错请改正
Private Sub Command3_Click()
Dim zero As String x1 As Integer y1 As Integer
Dim i As Integer j As Integer
Dim s(1 To 100) As String r As String
zero ″ ″
x Text1Text
y Text2Text
For i Len(y) To 1 Step 1
f 0 s(i) ″ ″ y1 Val(Mid(y i 1))
For j Len(x) To 1 Step 1
x1 Val(Mid(x j 1))
z x1 * y1
s(i) s(i)& ((f + z) Mod 10) '①
f z \ 10 '②
Next
If f <> 0 Then
s(i) f & s(i) & zero
Else
s(i) s(i) & zero
end if
zero zero + ″0″
Next
r ″ ″
For i 1 To Len(y)
r add(r s(i)) 'add定义函数功两数相加
Next i
Text3Text r
End Sub答案 ①((f + z) Mod 10) & s(i) ②(f + z) \ 10
解析 该程序高精度数运算种算法思想采竖式相加方法图
运算程先取出Y中数字B1B1X位相积s(1) C 4 C3 C2 C1取出Y中数字B2B2X位相积s(2) D 4 D3 D2 D1次类推程序中变量f记录高位进位数字zero记录s(i)需添加0数D 4 D3 D2 D1应加10E4 E3 E2 E1应添加20①处积存入s(i)中应填((f + z) Mod 10) & s(i)②处计算瞬时进位数字通次进位值加次积整10出位数字应填(f+z)\10
4明编写求真分数精确值VB程序程序运行时文框Text1中输入数文框Text2中输入数保证数数单击计算钮Command1标签Label3中显示结果(计算第20位)程序运行界面图示
(1)实现述功VB程序请划线处填入合适代码
Dim a(1 To 20) As Integer b(1 To 20) As Integer
Function Judge(position As Integer) As Boolean '判断循环节
Dim i As Integer
For i1 To position1
If b(i) ① Then JudgeFalseExit Function
Next i
JudgeTrue
End Function
Private Sub Command1_Click()
Dim m As Integern As Integerx As Integeri As Integer
Dim flag As Booleanst As String
mVal(Text1Text)nVal(Text2Text)
stStr(m)+″″+Str(n)+″0″
i1x1flagTrue
b(1)m
mm 10
Do While i<20 And flagTrue
a(i) ②
If a(i)>0 Then
xx+1
b(x)m Mod n
mb(x) 10
Else
mm 10
End If
flagJudge(x)
If b(x)0 And x<>0 Then flagFalse
st ③
ii+1
Loop
Label3Captionst
End Sub
(2)运行程序文框Text1中输入数1文框Text2中输入数3单击计算钮Command1标签Label3中显示结果
答案 (1)①b(position) ②m\n ③st+Str(a(i))
(2)1303
解析 程序中数组a存放商位数字数组b存放次余数变量x存放余数数循环中先计算商a(i)m\n商存入st②处m\n③处填st+Str(a(i))果商a(i)>0mn余数存入b(x)否说明m够须m10次mn准备接利judge函数判断前余数b(x)否出现表明出现循环数须果前余数b(x)0说明已需
定义函数judge判断第x余数否出现程序中通循环检索b(1)~b(position1)中否出现b(position)返回false否true①处填b(position)
5难度题数法运算运数组程序模拟列竖式计算程两正整数进行法计算般算法
(1)第整数位数字低位高位序次存入数组a(1)a(2)……a(La)中整数位数字低位高位序次存入数组b(1)b(2)……b(Lb)中中La表示第整数位数Lb表示第二整数位数
(2)低位高位序两整数位数值进行逐位法计算(第轮先b(1)次a(1)a(2)……a(La)第二轮b(2)次a(1)a(2)……a(La)次进行)位法结果低位高位序次存入数组c(1)c(2)c(3)……中
(3)数组ans中计算结果进行低位高位进位处理
(4)统计数组ans中实际计算结果效数值位数位数值存入变量length
(5)高位低位序输出数组ans中计算结果
强述方法设计两数进行数法计算VB程序功文框Text1Text2中次输入两整数单击计算钮Command1程序进行数法计算标签Label4中输出计算结果面信息显示进行高精度法计算程(假设输入两整数分12345)
b(1)次数组a中数先进位 b(2)次数组a中数前结果累加先进位
处理进位(逢十进)
数组
ans(4)
ans(3)
ans(2)
ans(1)
计算结果
4
13
22
15
进位处理结果
5
5
3
5
实现述功VB程序
(1)请划线处填入合适代码
Dim a(1 To 30) As Integerb(1 To 30) As Integerc(1 To 60) As Integer
Dim La As IntegerLb As Integerlength As Integer
Private Sub Command1_Click()
Dim i As Integerj As Integert As Integertemp As String
'两数(正整数)数位数字述算法次存入数组ab正整数位数分保存变量LaLb保存结果数组c(i)值初始化零(该部分程序代码略)
For i1 To Lb '低位高位序进行列竖式逐位法
For j1 To La
c(i+j1) ① +b(i)*a(j)
Next j
Next i
For i1 To La+Lb '计算结果进行进位处理
c(i+1)c(i+1)+c(i)\10
c(i) ②
Next i
lengthLa+Lb '位数
Do While c(length)0 '计算实际位数
lengthlength1
Loop
For i ③ To 1 Step1
Label4CaptionLabel4Caption+Str(c(i))
Next i
End Sub
(2)根题算法输入两整数分512518输出法计算结果时变量length值
答案 (1)①c(i+j1) ②c(i) Mod 10 ③length (2)5
解析 ①处循环功b(i)次数组a中数积加前结果c(i+j1)存入c(i+j1)②处循环计算结果进行进位处理先第i位进位c(i)\10加入c(i+1)计算第i位数字应该c(i) Mod 10结果输出通循环位c(i)输出总位数length位存放c(1)③处填length
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档