收藏 分销(赏)

VB程序改错题.docx

上传人:仙人****88 文档编号:8740419 上传时间:2025-02-28 格式:DOCX 页数:12 大小:21.86KB 下载积分:10 金币
下载 相关 举报
VB程序改错题.docx_第1页
第1页 / 共12页
VB程序改错题.docx_第2页
第2页 / 共12页


点击查看更多>>
资源描述
程序改错 1.题目:已知C的公式表示如下: ' n! ' C=------------------ ' (n-m)!*m! '函数过程fac( )求k!函数,在Fomr_Click事件中完成运算, '请修正程序中错误。 '------------------------------------------------ Option Explicit Private Function fac(k As Integer) As Single Dim x As Single, j As Integer x = 0 For j = 1 To k x = x ^ j Next j fac = x End Function Private Sub Form_Click() Dim C As Single Dim m As Integer, n As Integer m = Val(InputBox("请输入一个整数(m):")) n = Val(InputBox("请输入一个整数(n):")) C = fac(n) / fac(n - m) * fac(m) Print "C="; C End Sub 2.题目:程序功能为打印下列图形: ' * ' ** ' *** ' **** ' ***** '------------------------------------------------ Option Explicit Private Sub Form_Click() Cls Dim i As Integer Dim j As Integer For i = 1 To 7 For j = 1 To 5 Print "*"; Loop Print Next i End Sub 3.题目: 本程序的功能是随机产生的10个两位正整数,并进行递减排序。 '------------------------------------------------ Option Explicit Private Sub CreateRND() Dim Temp As Integer Dim I As Integer Dim N As Integer Dim X(10) As Integer Dim J As Integer N = 10 Print "数据:" For I = 1 To N X(I) = Int(Rnd() * 90) Print X(I); Next I Print Print "排序:" For I = 0 To N - 1 For J = I + 1 To N If X(I) > X(J) Then Temp = X(I) X(J) = X(I) X(I) = Temp End If Next J Print X(I); Next I Print End Sub Private Sub Command1_Click() CreateRND End Sub 4.题目: 随机产生并输出100以内大于50的20个整数,输 出时每5个数一行。 '----------------------------------------------- Option Explicit Private Sub Form_Click() Randomize Timer Dim i As Integer, ma As Integer i = 1 Do Until i < 20 ma = Rnd() * 100 \ 1 If ma > 50 Then Print ma; i = i + 1 If i \ 5 = 0 Then Print End If End If Loop End Sub 5题目:以下程序段用于计算5的N次方。 '------------------------------------------------ Option Explicit Private Sub Form_Click() Dim n As Integer, k As Integer, s As Long n = InputBox(" Input n ") k = 0 s = 0 Do While k <= n s = s * 5 k = k + 1 Next Print "5的"; "n次方是"; s End Sub 6.题目:下面程序可输出如下图形: ' * ' *** ' ***** ' ******* ' ********* '------------------------------------------------ Option Explicit Private Sub Form_Click() Dim m As Integer, n As Integer, s As String, i As Integer, j As Integer n = 4 m = 1 s = "*" For i = 5 To 1 Step -1 Print Spc(n) For j = 1 To 2 * m - 1 Print s; Next j Print n = n + 1 m = m - 1 Next i End Sub 7.题目: 用自定义函数的方法求sum(x),求当-1≤x≤1时, ' sum(x)=x/2!+x^2/3!+x^3/4!+……+x^n/(n+1)!, ' 当x〉1或x〈-1时,函数值为0。当n〈=0时,输入数 ' 据错误。X、N都是由用户输入。 '------------------------------------------------ Option Explicit Private Sub Command1_Click() Dim s As Single Dim n As Integer, x As Single, k As Integer n = Val(InputBox("Please input a integer value:")) x = Val(InputBox("Please input a single value:")) If n <= 0 Then k = MsgBox("数据输入错误!", vbRetryCancel + vbExclamation, "数据输入") Exit Sub End If s = Sum(x, n) Print s End Sub Function Sum(x As Single, n As Integer) Dim i As Integer, ss As Long ss = 1 Sum = 0 If x > 1 Or x < -1 Then Exit Do Else For i = 2 To n ss = ss * i Sum = x ^ (i - 1) / ss Next i End If End Function 8.题目:以下程序功能是输入三个数,由大到小排序。 ------------------------------------------------ Option Explicit Dim A As Integer Dim B As Integer Dim C As Integer Private Sub Form_Click() Dim nTemp As Integer A = Val(InputBox("Please input first integer", "输入正整数")) B = Val(InputBox("Please input second integer", "输入正整数")) C = Val(InputBox("Please input third integer", "输入正整数")) If A <= C Then nTemp = A A = B B = nTemp End If If B <= C Then nTemp = A A = C C = nTemp End If If A <= B Then nTemp = B B = C C = nTemp End If Print "The integers in order is"; A; B; C End Sub 9.题目: 用辗转相除法求两个整数的最大公约数。 '------------------------------------------------ Option Explicit Function gcd(ByVal m As Integer, ByVal n As Integer) As Integer Dim r As Integer r = m Mod n Do While r <> 0 n = m n = r r = m Mod n Loop gcd = r End Function Private Sub Form_Click() Dim a As Integer, b As Integer, c As Integer a = InputBox("输入一个整数") b = InputBox("输入一个整数") a = Val(a) b = Val(b) Call gcd(a, b) Print a, b, c End Sub 10.题目:下面的程序用“冒泡”法完成数组a中的10个整数 按升序排列,请修正程序中错误。 '------------------------------------------------ Option Explicit Private Sub Command1_Click() Dim a Dim i As Integer, j As Integer, a1 As Integer a = Array(-2, 5, 24, 58, 43, -10, 87, 75, 27, 83) For i = 1 To 9 For j = i+1 To 9 If a(j) >= a(i) Then a1 = a(i a(i) = a(j) a(j) = a(i) End If Next j Next i For i = 0 To 9 Print a(i) Next i End Sub 11.题目: 程序功能为求解一元二次方程的实根,请修正程序中错误。 '------------------------------------------------ Option Explicit Private Sub Form_Load() Dim a!, b!, c!, root1#, root2#, work As Double a = Val(InputBox(" 请输入系数a的值")) b = Val(InputBox(" 请输入系数b的值")) c = Val(InputBox(" 请输入系数c的值")) work = b * 2 - 4 * a * c If work >= 0 And a <> 0 Then root1 = (Sqr(work)) / (2 * a) root2 = (Sqr(work)) / (2 * a) Debug.Print "有二个实根" + Str$(root1) + "," + Str$(root2) Else Debug.Print "无实根!" End If End Sub 12.题目: 下面程序的作用是产生100以内的全部素数,并 按每行5个数据输出。 '------------------------------------------------ Option Explicit Private Function prime(ByVal n As Integer) Dim i As Integer prime = 1 If n <= 1 Then prime = 0 For i = 1 2 To n - 1 If n Mod i = 0 Then prime = 0 Next i End Function Private Sub Form_Click() Dim i As Integer, k As Integer k = 0 For i = 1 To 100 If prime(i) = 1 Then Print Tab((k Mod 5) * 8); i k = k + 1 If k Mod 4 = 0 Then Print ; End If Next i End Sub 13.题目: 输出40以内能够被3整除的数,要求输出结果为5 个数一行。 '------------------------------------------------ Option Explicit Private Sub Form_Click() Cls Dim x As Integer Dim i As Integer i = 1 For x = 1 To 40 If (x / 3) = (x \ 3) Then Print x i = i + 1 End If If i Mod 3 = 0 Then Print End If Next x End Sub 14.题目: 程序功能:求1+2+3……,直到其和超出3000为 止,并输入结果。 '------------------------------------------------ Option Explicit Private Sub Form_Click() Cls Dim i As Integer Dim s As Single i = 1 s = 1 Do i = i + 2 1 s = s + i Loop s > 3000 Print "从1 到:"; i; "的和是"; s End Sub 15.题目: 以下程序段用于输出100-300的所有素数 '------------------------------------------------ Option Explicit Private Sub Form_Click() Dim n As Integer, k As Integer, i As Integer, swit As Integer For n = 101 To 300 Step 2 k = Int(Sqr(n)) i = 2 swit = 1 While swit = 0 If n Mod i = 0 Then swit = 1 Else i = i - 1 End If Wend If swit = 0 Then Print n; End If Next n End Sub 16.题目: 本程序的功能是随机产生的10个两位正整数,并进行递减排序。 '------------------------------------------------ Option Explicit Private Sub CreateRND() Dim Temp As Integer Dim I As Integer Dim N As Integer Dim X(10) As Integer Dim J As Integer N = 10 Print "数据:" For I = 1 To N X(I) = Int(Rnd() * 90) Print X(I); Next I Print Print "排序:" For I = 0 To N - 1 For J = I + 1 To N If X(I) > X(J) Then Temp = X(I) X(J) = X(I) X(I) = Temp End If Next J Print X(I); Next I Print End Sub Private Sub Command1_Click() CreateRND End Sub 17.题目:输入两个正整数m和n,求其最大公约数。 '------------------------------------------------ Option Explicit Private Sub Form_Click() Dim m As Integer, n As Integer, r As Integer m = InputBox("输入m的值:") n = InputBox("输入n的值:") Do While n <> 0 r = m / n m = n n = m r Loop Print "两数的最大公因子为:"; n End Sub 18.题目: 下面程序将10个整数从大到小排序 '------------------------------------------------ Option Explicit Private Sub Form_Click() Dim t%, m%, n%, w% Dim a(10) As Integer For m = 1 To 10 a(m) = Int(10 + Rnd() * 90) Print a(m); " "; Next m Print For m = 1 To 9 t = m For n = 2 n+1 To 10 If a(t) > a(n) Then n = t Next n If t = m Then w = a(m) a(m) = a(t) a(t) = w End If Next m For m = 1 To 10 Print a(m) Next m End Sub 19.题目: 求s=72+102+132+……+832的值。 '------------------------------------------------ Option Explicit Private Sub Form_Click() Cls Dim s As Long Dim i As Integer s = 1 For i = 7 To 832 s = s + i loop 30 Print s End Sub 20.题目: 下面程序用于将十个数字从小到大排序 '------------------------------------------------ Option Explicit Option Base 1 Private Sub Form_Click() Cls Dim a(10) As Integer Dim i As Integer, j As Integer, temp As Integer For i = 0 To 10 If i Mod 2 = 0 Then a(i) = i Else a(i) = -i Print a(i); Next Print For i = 1 To 10 For j = 1 To 10 - i If a(j) < a(j + 1) Then temp = a(j): a(j) = a(j + 1): a(j + 1) = temp End If Next i, j For i = 1 To 10 Print a(i); Next End Sub
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服