程序改错1

程序改错1
程序改错1

程序改错

1 题目:求s=2!+4!+6!+8!,阶乘的计算用Function过程fact实现。

程序代码:

Private Sub Form_Click()

Dim i as integer, s as long

For i = 2 to 8 →For i = 2 to 8 step 2

s = s + fact(i)

Next i

Print s

End Sub

Public Function fact( ) →Public Function fact(Byval n%)

Dim t as long

Dim i as integer

t = 1

For i = 1 to n

t = t * i

Next i

Fact = i →Fact = t

End function

2 题目:请根据下列描述编写购物优惠程序。某商场为了加速促成商品流通,采用购物打折的优惠办法,每位顾客一次购物(1)在100元以上者,按九五折优惠;(2)在200元以上者,按九折优惠;(3)在300元以上者,按八折优惠;(4)在500元以上者,按七折优惠。在窗体上添加两个文本框和一个命令按钮,要求在Text1中输入购物商品总金额,单击命令按钮,在Text2中输出优惠价。

程序代码:

Private Sub Command1_Click ()

Dim x As Integer, y As Single

x = Val(Text1.Text)

If x < 100 then

x = y →y=x

Else

If x < 200 then

y = 0.95 * x

Else

If x < 300 then

y = 0.9 * x

Else

If x < 300 then

y = 0.8 * x

Else

y = 0.7 * x

Else If →End If

End If

End If

End If

Text2.text = x →Text2.text = y

End Sub

3 题目:创建一个绘图程序。当程序运行时,单击“绘图”按钮,在窗体的Picture控件上画出【-pi,pi】即【-3.14,3.14】区间的余弦函数曲线。要求将图片框的坐标系定义为左上角为(-4,2),右下角为(4,-2),并在图片框中画出坐标的x轴和y轴。

图例:

程序代码:

Private Sub Command1_Click()

Dim i As Integer →Dim i As single

Picture1.Scale (4,2)-(4,2) →Picture1.Scale (-4,2)-(4,-2)

Picture1.Line (-4,0)-(4,0)

Picture1.Line (0,2)-(0,-2)

Picture1.CurrentX = 0.2

Picture1.CurrentY = -0.1

Picture1.Print “0”

Picture1.CurrentX = -3.2

Picture1.CurrentY = -0.1

Picture1.Print “-n”

Picture1.CurrentX = 3.3

Picture1.CurrentY = -0.1

Picture1.Print “n”

Picture1.CurrentX = 0.2

Picture1.CurrentY = 0.9

Picture1.Print “1”

Picture1.CurrentX = 0.2

Picture1.CurrentY = -0.8

Picture1.Print “-1”

For i = -3.141 To 3.141 Step 0.001

Picture1.Pset (i,sin(i)) →Picture1.Pset (i,cos(i))

Next i

End Sub

Private Sub Command2_Click()

End

End Sub

4 题目:用自定义函数的方法求sum(x)。当x在[-1,1]上,sum(x)=x/2!+x^2/3!+x^3/4!+……+x^n/(n+1)!;当x>1或x<-1时,sum(x)=0。当n<=0时,输入数据错误。x,n都是由用户输入。

程序代码:

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,”数据输入”)

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 →sum = 0

Else

For i = 2 To n →For i = 2 To n+1

ss = ss * i

sum = x ^ (i - 1) /ss →sum =sum + x ^ (i - 1) /ss

Next i

End if

End Function

5 题目:请修改程序中的错误,保证程序最后输出效果如图1所示。

图例:

程序代码:

Private Sub Form_Click()

Dim i As Integer

For i = 1 To 7

Print Spc(7); →Print Spc(7-i);

If i >= 1 Then →If i <= 1 Then

Print “*”

Else

Print “*”;Spc(2*(i - 1));”*”→Print “*”;Spc(2*(i-1)-1);”*”

End If

Next i

End Sub

6 题目:输入一个字符串,将所有的小写字母都转换为大写字母。

程序代码:

Private Sub Form_Click()

Dim s1 As String, s2 As String, i As Integer, t As String

s1 = Inputbox(“输入字符串,以#号结束”)

i = 1

s1 = Mid (s1,i,1) →t = Mid (s1,i,1)

While t <> “#”

If t >= “a” And t <= “z” Then t = Chr(Asc(t)-30) →If t >= “a” And t <= “z” Then t = Chr(Asc(t)-32) s2 = s2 +t

i = i +1

t = Mid(s1,i,1)

Wend

Print “新字符串为:”;s1 →Print “新字符串为:”;s2

End Sub

-----------------------------------------------

'【程序改错】

'------------------------------------------------

'题目:下列程序进行-n阶乘运算,当阶乘的值超过-21147483648 ' 溢出报错,并将结果输出为-1。

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结

'------------------------------------------------

'【程序改错】

'------------------------------------------------

'题目:下列程序进行-n阶乘运算,当阶乘的值超过-21147483648 ' 溢出报错,并将结果输出为-1。构

'------------------------------------------------

'**********FOUND**********

Private Function jc(ByVal n As Integer) As long

Dim I As Integer

Dim result As Long

result = 1

I = 1

Do While I <= n

If result < 2114748348 / I Then

'**********FOUND**********

result = result*i

I = I + 1

Else

lblerr.Caption = "溢出"

'**********FOUND**********

jc = -1

Exit Function

End If

Loop

jc = result

End Function

Private Sub Form_Click()

MsgBox jc(3)

End Sub

【程序改错】

'------------------------------------------------

'题目:给定三角形的三条边,计算三角形的面积。要求' 程序首先判断给定的三条边能否构成三角形。

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构'------------------------------------------------

Private Sub Form_Click()

Dim a As Single, b As Single, c As Single

Dim s As Single, t As Single

start:

a = InputBox("输入1边长:")

b = InputBox("输入2边长:")

c = InputBox("输入3边长:")

'**********FOUND**********

If a + b < c Or b + c < a or a+c

MsgBox ("不能构成三角形,请重新输入个边")

GoTo start

End If

'**********FOUND**********

t = (a + b+c) / 2

'**********FOUND**********

s = Sqr(t*(t - a) * (t - b) * (t - c))

Print "该三角形的面积:"; s

End Sub

【程序改错】

'------------------------------------------------

'题目:输出40以内能够被3整除的数,要求输出结果为5 ' 个数一行。

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构

'------------------------------------------------

Private Sub Form_Click()

Cls

Dim x As Integer

Dim i As Integer

'**********FOUND**********

i = 0

For x = 1 To 40

If (x / 3) = (x \ 3) Then

'**********FOUND**********

Print x;

i = i + 1

End If

If i Mod 5 = 0 Then

Print

End If

'**********FOUND**********

Next x

End Sub

Option Explicit

'------------------------------------------------

'【程序改错】

'------------------------------------------------

'题目:给定年号与月份,判断该年是否闰年,并根据给出的

' 月份来判断是什么季节和该月有多少天?

' (闰年的条件是:年号能被4整除但不能被100整除,

' 或者能被400整除。)

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构

'------------------------------------------------

Private Sub Form_Click()

Dim Year As Integer, Month As Integer, flag As Integer

Year = InputBox("输入年号:")

Month = InputBox("输入月份:")

'**********FOUND**********

If Year Mod 4 = 0 And Year Mod 100 <> 0 Or Year Mod 400 <> 0 Then

'**********FOUND**********

flag =1

MsgBox "闰年"

Else

flag = 0

MsgBox "非闰年"

End If

'**********FOUND**********

Select Case Month

Case 1

MsgBox "该月有31天,春季"

Case 2

If flag = 1 Then MsgBox "该月有29天,春季" Else MsgBox "该月有28天,春季"

Case 3

MsgBox "该月有31天,春季"

Case 4

MsgBox "该月有30天,夏季"

Case 5

MsgBox "该月有31天,夏季"

Case 6

MsgBox "该月有30天,夏季"

Case 7

MsgBox "该月有31天,秋季"

Case 8

MsgBox "该月有31天,秋季"

Case 9

MsgBox "该月有30天,秋季"

Case 10

MsgBox "该月有31天,冬季"

Case 11

MsgBox "该月有30天,冬季"

Case 12

MsgBox "该月有31天,冬季"

End Select

End Sub

Option Explicit

'------------------------------------------------

'【程序改错】

'------------------------------------------------

'题目:下面的程序段用于删除数组中指定位置的数字,' 如果位置错误给出提示,否则分别显示删除前' 后的数组元素

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构'------------------------------------------------

Private Sub Form_Click()

Dim a(10) As Integer, x As Integer

Dim i As Integer, k As Integer

For i = 1 To 10

a(i) = Int(Rnd * 90) + 10

Print a(i);

Next i

Print

x = InputBox("请输入要删除第几位数字")

'**********FOUND**********

If x > 0 Then

'**********FOUND**********

For k = x To 9

'**********FOUND**********

a(k) = a(k+1)

Next k

Print "删除后的数组:"

For i = 1 To 9

Print a(i);

Next i

Else

Print "删除位置错误"

End If

End Sub

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

'**********FOUND**********

Print Spc (n)

For j = 1 To 2 * m - 1

Print s;

Next j

Print

'**********FOUND**********

n = n - 1

'**********FOUND**********

m = m + 1

Next i

End Sub

Option Explicit

'------------------------------------------------

'【程序改错】

'------------------------------------------------

'题目:本程序的功能是随机产生的10个两位正整数,并进行递减排序。

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构

'------------------------------------------------

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

'**********FOUND**********

X(I) = Int(10+Rnd() * 90)

Print X(I);

Next I

Print

Print "排序:"

For I = 0 To N - 1

For J = I + 1 To N

'**********FOUND**********

If X(I) < X(J) Then

'**********FOUND**********

Temp = X(J)

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

Option Explicit

'------------------------------------------------

'【程序改错】

'------------------------------------------------

'题目:用输入对话框输入x,根据公式(图1)计算对应的y, ' 并在窗体上输出y的值。

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构'------------------------------------------------

Private Sub Command1_Click()

Dim x As Single, y As Single

x = Val(InputBox("Please input x :", "输入X的值"))

If x = 10 Then

y = 0

'**********FOUND**********

Elsei f x > 10 Then

'**********FOUND**********

y = Sqr(x) + Sin(x)

Else

'**********FOUND**********

y = 2 * x^ 3 + 6

End If

Print y

End Sub

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的值"))

'**********FOUND**********

work = b ^ 2 - 4 * a * c

If work >= 0 And a <> 0 Then

'**********FOUND**********

root1 = (-b + Sqr(work)) / (2 * a)

'**********FOUND**********

root2 = (-b - Sqr(work)) / (2 * a)

Debug.Print "有二个实根" + Str$(root1) + "," + Str$(root2) Else

Debug.Print "无实根!"

End If

End Sub

Option Explicit

'------------------------------------------------

'【程序改错】

'------------------------------------------------

'题目:程序功能根据输入的学习成绩,分别显示优秀

' (90分以上), 良好(75分以上),及格(60分以上)

' ,不及格几个等级.

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构

'------------------------------------------------

Private Sub Form_Click()

Cls

Dim i As Integer

i = InputBox("请输入学习成绩")

Select Case i

'**********FOUND**********

Case i > 100 or I<0

MsgBox "成绩应该在0--100之间"

'**********FOUND**********

Case 90 to 100

Print "优秀"

Case 75 To 90

Print "良好"

Case 60 To 75

Print "及格"

'**********FOUND**********

Case else

MsgBox "不及格", vbCritical

End Select

End Sub

Option Explicit

'------------------------------------------------

'【程序改错】

'------------------------------------------------

'题目:判断给定的年月日是该年中的第几天。

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构

'------------------------------------------------

Private Sub Form_Click()

Dim year As Integer, month As Integer, day As Integer

Dim days As Integer, i As Integer

'**********FOUND**********

Dim a(1 To 11) As Integer

days = 0

For i = 1 To 12

a(i) = InputBox("输入" & i & "月份的天数,2月暂输入为28天:") Next i

year = InputBox("输入年:")

month = InputBox("输入月:")

day = InputBox("输入日:")

For i = 1 To month

'**********FOUND**********

days = days + a(I-1)

Next i

'**********FOUND**********

days = days + day

If year Mod 4 = 0 And year Mod 100 <> 0 Or year Mod 400 = 0 And month >= 3 Then days = days + 1

Print "该日期是该年中的第"; days; "天"

End Sub

程序改错

'------------------------------------------------

'【程序改错】

'------------------------------------------------

'题目:本程序的功能是随机产生的10

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构

'------------------------------------------------

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 = 0 To N

'**********FOUND**********

X(I) = Int(Rnd() * 90)

Print X(I);

Next I

Print

Print "排序:"

For I = 0 To N - 1

For J = I + 1 To N

'**********FOUND**********

If X(I) > X(J) Then

'**********FOUND**********

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

2. 【程序改错】

'------------------------------------------------

'题目:用自定义函数的方法求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都是由用户输入。

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构

'------------------------------------------------

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

'**********FOUND**********

Exit Do

Else

'**********FOUND**********

For i = 2 To n

ss = ss * i

'**********FOUND**********

Sum = x ^ (i - 1) / ss

Next i

End If

End Function

3. 【程序改错】

'------------------------------------------------

'题目:编程将一个数从已经有序(设从小到大排序)的数组

' 中删除,使数组还继续保持有序而且其余元素按照下

' 标连续存放。

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构'------------------------------------------------

Private Sub Form_Click()

Dim A() As Integer, N As Integer, Flag As Integer

Dim i As Integer, X As Integer, P As Integer

Flag = 0

N = InputBox("输入元素个数")

'**********FOUND**********

Dim A(N)

For i = 1 To N

A(i) = InputBox("输入数组的第" & i & "个元素")

Next i

Print "删除某元素前的数组"

For i = 1 To N

Print A(i);

Next i

Start:

X = InputBox("输入要删除的元素:")

For i = 1 To N

If X = A(i) Then P = i: Flag = 1

相关主题