程序改错
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
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
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
'**********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 "排序:"
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
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 "排序:"
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
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
程序改错 ================================================== 题号:7471 /*------------------------------------------------------ 【程序改错】:只允许修改错误代码,其他代码不允许修改! -------------------------------------------------------- 功能:计算正整数num的各位上的数字之积。 例如:若输入:252,则输出应该是:20。 若输入:202,则输出应该是:0。 ------------------------------------------------------*/ #include
num/=10; 【或】 num=num/10; 位置 3: } while(num) ; 【或】 while(num!=0) 题号:7383 /*------------------------------------------------------ 【程序改错】:只允许修改错误代码,其他代码不允许修改! -------------------------------------------------------- 功能:统计出若干个学生的平均成绩,最低分以及得最低分的人数。例如:输入10名学生的成绩分别为92,87,68,56,92,84,67, 75,92,66,则输出平均成绩为77.9,最低高分为56,得最低分的人数为1人。 ------------------------------------------------------*/ #include "stdio.h" float Min=0; int J=0; float fun(float array[],int n) { int i;float sum=0,ave; Min=array[0]; for(i=0;i 1 / 4 程序改错题(共15题) 1、在考生文件夹下,给定程序MODI.C 的功能是: 求一维数组a 中所有元素的平均值,结果保留两位小数。 例如,当一维数组a 中的元素为:10,4,2,7,3,12,5,34,5,9 程序的输出应为:The aver is: 9.10 。 #include 程序改错题 (注意:每小题只有1行有错误,答题时请指出错误位置并给出改正结果)1. 输出计算结果。 main() { int a=b=10; a+=b+5; b*=a+=10; printf("%d%d\n",a,b); } 2. 输出计算结果。 #include 输出程序运行结果。 #include 最新二级C语言考试题库及答案程序改错专项练习 精华版
程序改错题
c语言程序改错