三步逐过程法”解二级VisualBasic上机考试改错题
湖南省计算机二级VB程序改错部分题库

湖南省计算机二级VB程序改错部分题库9、Visual Basic程序改错1.程序功能:求s=1+3+5+7+...直到s>2000为止。
程序中有两行有错误。
改正错误,使它能输出正确的结果。
(2025)Private Sub Form_Click()Dim i As Integer, s As Longs = 0 : i = 1Do Until s < 2000s = s + ii = i + 1LoopPrint sEnd Sub答案:s>2000 ; i+22.程序功能:计算s=2!+4!+8!。
程序中有两行有错误。
改正错误,使它能输出正确的结果。
(40346) Private Sub Command1_Click()Dim k As Integer, i As IntegerDim s As Long, t As Longs = 0i = 1Do While i <= 3t = 1k = 1While k <= 2*it = t * kk = k + 1Wends = s + twendPrint sEnd Sub答案:k<=2^i ; loop3.程序功能:计算s=2!+4!+6!+8!。
程序中有错误。
改正错误,使它能输出正确的结果。
(41066)Private Sub Command1_Click()Dim k As Integer, i As IntegerDim s As Long, t As Longs = 0 : i = 1Do While i <= 4t = 1k = 1While k <= 2^it = t * kk = k + 1Wends = s + ti = i + 1wendPrint sEnd Sub答案:k<=2*i ; loop4.程序功能:求200到400间,能被3整除但不能被7整除的数的个数。
程序中有两行有错误。
VB二级上机考试改错题常见错误类型

2001春-2改错【题目】下面程序是建立二维M*N的字符数组,并 求出将此数组顺时针旋转90°后的新数组。 分析: • 运行程序 – 检查运行错误 – 观察输出结果 ,分 析逻辑错误
2002春-2改错【题目】字符串”642138579”首尾相联形成一个 数字环,依次在数字环中顺序截取2位数、3位数、4位数,使所截取 得到的前两个数相乘等于第三个数.例如42*138=5796. 分析: • 检查语法错误
2007秋-1编程【题目】编写一个查找介于整数A,B之间所有同构 数的程序。若一个数出现在自己平方数的右端,则称此数为同构 数。如5在52=25的右端,25在252=625的右端,故5和25为同构数。 [编程要求] 1、程序参考界面如图所示,编程时 不得增加或减少界面对象或改变对 象的种类,窗体及界面元素大小适 中,且均可见; 2、运行程序,在文本框1与文本框2 中分别输入表示查找范围的A与B的 数值,按“查找”按钮,则开始查找并在列表框中显示结果; 按“清除”按钮,则将文本框和列表框清空,并将焦点置 于文本框1上,按“结束”按钮,结束程序运行 3、程序中应定义一个名为pd的函数过程,用于判断一个正整 数是否为同构数。
上机完成
2000春-3改错【题目】数组a有9个元素,本程序按序号依次将 (a1,a2,a3),(a2,a3,a4),…,(a9,a1,a2),九组元素分别相加(每组3 个元素),生成新数组b,然后找出b数组中的最大元素。
上机完成
2000秋-1改错【题目】本程序的功能是用来统计二维数组A(1 To 4,1 To 4)中所有元素中0~9十个数字出现的次数,存入数组 Timers中并显示在窗体上。
2005秋-6改错【题目】下面程序的功能是:将给定的字符串中的 数字字符筛选出来,依次组成若干个两位整数;并求出它们的最大 公约数
计算机二级上机考试程序修改题应试技巧

计算机二级上机考试程序修改题常见应试技巧
计算机二级上机考试,题库每年都有,如果你的记忆力足够好,再加上那么一点
点运气的话,把每年的100题目全部都背下来,还是可以顺利通过上机考试的(或者
说是应付…)。
但是,一百套题,背着背着就会混淆,所以光背是远远不够的,所以,本人在这里把最容易拿分的程序修改题的应试技巧总结下来,分享给大家。
上机之后,针对程序修改题,首先单击F7,进行Build操作。
步骤如下:
1、单击“F7”
2、出现这个对话框后单击“是”
3、程序最下方会出现这样的显示:MODI1.exe - 1 error(s), 0 warning(s)。
当
提示“MODI1.exe - 1 error(s)”中“”error(s)不为零时,即为程序有
错误,无法执行。
在这个框中我们向上看出现错误的信息。
4、在程序修改题中,题目中所有的错误都出现在
“/************found************/”的下方,换句话说,就是
有几个“/************found************/“,其下方就有几处
错误。
5、各种错误信息的出现形式、修改方法参见下表:
上面介绍的是C语言上机考试程序修改题目中最常见的错误类型,总结出来供大家参考,希望对大家有所帮助,谢谢!。
计算机二级上机考试(程序改错题)1

程序编程题目1、第一大类(交换类)共7道心之所向,所向披靡2. 程序修改(第3套)给定程序中函数fun 的功能是:通过某种方式实现两个变量的交换,规定不允许增加语句和表达式。
例如变量a中的值原为8,b中的值原为3,程序运行后a中值为3,b 中的值为8./**found**/t=*x; *x=y;/**found**/return(t);2. 程序修改(第60套)给定程序中函数fun的功能是:实现两个整数的交换。
例如给a和b分别输入60和65,输出为:a=65 b=60 /**found**/void fun(int *a,int *b)/**found**/t=*b;*b=*a;*a=t;2. 程序修改(第88套)给定程序中函数fun的功能是:将主函数中两个变量的值进行交换。
例如,若变量a中的值为8,b中的值为3,则程序运行后,a中的值为3,b中的值为8。
/**found**/void fun(int *x, int *y)/**found**/t=*x,*x=*y,*y=t;2、第二大类(计算类)共22道2. 程序修改(第1套)给定程序中函数fun的功能是:求出以下分数序列的前n 项之和。
2/1+3/2+5/3+8/5+13/8+21/13+……和值通过函数值返回main函数。
例如n=5,则应输出:8.391667。
/**found**/double fun(int n)/**found**/s=s+(double)a/b;2. 程序修改(第6套)给定程序中函数fun的功能是:用递归算法计算列中第n 项的值。
从第一项起,斐波拉契数列为:1、1、2、3、5、8、13、21、……/**found**/switch(g)/**found**/case 1:case 2:return 1;2. 程序修改(第13套)给定程序中函数fun的功能是:求s=aa…aa—…—aaa—aa—a(此处aa…aa表示n个a,a和n的值在1至9之间)。
国家二级VB机试(上机操作)模拟试卷5(题后含答案及解析)

国家二级VB机试(上机操作)模拟试卷5(题后含答案及解析) 全部题型 2. 基本操作题 3. 简单应用题 4. 综合应用题基本操作题1.请根据以下各小题的要求设计Visual Basic应用程序(包括界面和代码)。
在标题为”文本框”、名称为Forml的窗体上画一个名称为Textl的文本框,无初始内容,其高、宽分别为2000、1800,可显示多行,有水平滚动条,并通过属性窗口把文本框的字体样式设置为”斜体”(如图2.49所示)。
注意:存盘时必须存放在考生文件夹下,工程文件名为sjtl.vbp,窗体文件名为sjtl.frm。
正确答案:步骤1:新建一个”标准。
EXE”工程,如表3-26在窗体中画出控件并设置其相关属性。
步骤2:按要求将文件保存至考生文件夹中。
2.在名称为Forml的窗体上画一个名称为Listl的列表框,通过属性窗口输入4个列表项:”数学”、”物理”、”化学”、”语文”,如图2-50所示。
请编写适当的事件过程,使得在装入窗体时,把最后一个列表项自动改为”英语”;单击窗体时,则删除最后一个列表项。
注意:要求程序中不得使用变量,每个事件过程中只能写一条语句。
存盘时必须存放在考生文件夹下,工程文件名为sjt2.vbp,窗体文件名为sjt2.frm。
正确答案:步骤1:新建一个”标准EXE”工程,在窗体Forml中加入一个列表框,在属性设置窗口中将其Name属性设置为Listl,在其List属性中添加四个项目,依次为”数学”、”物理”、”化学”和”语文”。
注意:每输入完一项后按<Ctrl+Enter>键换行再输入下一项。
步骤2:打开代码编辑窗口,编写相应的事件过程:参考代码:Private Sub Form_Click( )Listl.RemoveItem Listl.ListCount_1Enld SubPrivate Sub Form_Load( )Listl.List(Listl.ListCount-1)=“英语”End Sub步骤3:按要求将文件保存至考生文件夹中。
计算机二级VisualBasic考试题及答案

计算机二级VisualBasic考试题及答案2017计算机二级Visual Basic考试题及答案考生们在备考计算机考试科目时,除了复习教材以外,还要结合试题加深对知识点的理解和巩固,以下是店铺搜索整理的一份2017计算机二级Visual Basic考试题及答案,供参考练习,预祝考生们考出自己理想的成绩!想了解更多相关信息请持续关注我们店铺!1.窗体中有一个名称为txtSpeed的文本框,一个名称为hsbSpeed的滚动条。
以下程序:Private Sub hsbSpeed_Change( )txtSpeeD.Text = hsbSpeeD.ValueEnd Sub当单击滚动条hsbSpeed右端的箭头时,以下说法不正确的是(B) (单)A.此时会触发change事件B.此时不会触发change事件C.在文本框中显示了滚动条滑块所在位置的值D.此时不会触发scroll事件2.利用窗体中的滚动条HScroll1改变窗体的背景色,可以这样编写代码:Private Sub HScroll1_Change( )R= HScroll1.Valueform1.BackColor = RGB(R,int(Rnd*256),int(Rnd*256))End Sub以下说法不正确的是(C) (单)A.窗体的背景色是一个随机的颜色B.RGB函数取得到的颜色有256*256*256种C.表达式int(Rnd*256)取得随机数的范围为0-256之间的整数D.表达式int(Rnd*256)取得随机数的范围为0-255之间的整数3.窗体中有一个名称为Slider1的可选择性刻度滑块控件,一个名称为text1的`文本框,如下程序:Private Sub Slider1_change( )Text1.FontSize =【Slider1.value】End Sub当拖动滑块时,以上程序实现用Slider控件设置文本框中的字体大小的功能。
New【全国计算机等级考试二级VF上机改错题及参考答案】

文本框 PassWordChar 改为 *功能:如果用户输入的用户名和口令一致,则在提示信息后关闭该表单,否则重新输入用户名和口令。
&&**********Error**********************if thisform.text1 = thisform.text2 改为 if thisform.text1.value=thisform.text2.valuewait "欢迎使用……" window timeout 1&&**********Error**********************thisform.close 改为 thisform.releaseelsewait "用户名或口令不对,请重新输入……" window timeout 1endif*检索选课门数大于或等于3门以上的每个学生的学号、姓名、平均成绩、最低分、选课门数和院系,*并按平均成绩降序排序,将结果存储到表TEST1中.以下程序有三处错误,请改正SET TALK OFFSET SAFETY OFFSELECT STUDENT.学号, 姓名, AVG(成绩) 平均成绩, MIN(成绩) 最低分, COUNT(*) 选课门数,院系院系;FROM STUDENT, SCORE;WHERE STUDENT.学号 = SCORE.学号;GROUP BY STUDENT.学号 HAVING SUM(课程编号) >= 3; &&*Error* 将sum改为count其他不变ORDER BY 平均成绩 ; &&*********Error******* 改为 order by 平均成绩 descINTO TEST1 SDF &&*********Error******* 改为 into table test1RETURN*检索选课门数是3门以上的每个学生的学号、姓名、平均成绩、最低分、选课门数和院系编号,*并按平均成绩降序排序.SET TALK OFFSET SAFETY OFFUSE DATABASE SDB &&****Error***修改本行的语法错误,不许注释掉本行或删除本行将use改为openCREATE VIEW VS1SELECT STUDENT2.学号, 姓名, AVG(成绩) 平均成绩, MIN(成绩) 最低分, COUNT(*) 选课门数, 院系编号;FROM STUDENT2, COURSE2; &&*************Error************* 改为 from student2,scWHERE STUDENT2.学号 = SC.学号 ;GROUP BY SC.学号 HAVING COUNT(课程号) > 3;ORDER BY 成绩 &&*************Error************* 改为 order by 平均成绩 descCLOSE DATABASERETURN*检索同时选修课程号c1和c2的学生的学号*以下程序有三处错误,请改正SELECT 学号;FROM SC ;WHERE 课程号 = 'c1' AND 学号 = ; &&*****Error******* 改为 where 课程号="c1" and 学号 in( SELECT * FROM SC ; &&************Error************改为 (select 学号 from sc;WHERE 学号 = 'c2' ) &&************Error************改为 where 课程号="c2")CLOSE DATABASE检索选修课程门数等于3门或3门以上,每门课程成绩大于或等于70分的每个学生的,学号,姓名,性别,平均成绩,最低分和选课门数,并将结果存储到表NEW_TEST中.*以下程序有三处错误,请改正OPEN DATABASE SDBSELECT STUDENT.学号,姓名,性别,AVG(成绩) 平均成绩,MIN(成绩) 最低分,COUNT(*) 选课门数;FROM STUDENT,SC;WHILE STUDENT.学号 = SC.学号 AND 成绩 >= 70 ; &&*******Error******** 将While 改为 where 其他不变GROUP BY STUDENT.学号 HAVING SUM(课程号) >= 3; &&*******Error******** 将sum 改为 count 其他不变TO NEW_TEST &&**********Error********** 改为 into table NEW_TESTCLOSE ALLThisForm.标题 = "商品销售数据输入" 改为 thisform.caption="商品销售数据输入"DO sellcomm 改为DO Form sellcommDO print1 TO PREVIEW 改为 report Form print1 PREVIEWSELECT FORM DEPT 改为 SELECT * FROM DEPTDELETE THISFORM 改为 THISFORM.release&&所有器件的单价增加5元UPDATE order_detail1 SET 单价 WITH 单价+ 5 改为 UPDATE order_detail1 SET 单价=单价+ 5&&计算每种器件的平均单价SELECT 器件号,AVG(单价) AS 平均价 FROM order_detail1 ORDER BY 器件号 INTO CURSOR lsb 将 order by 改为 group by 其他不变&&查询平均价小于500的记录SELECT * FROM lsb FOR 平均价 < 500 改为SELECT * FROM lsb where 平均价 < 500UPDATE ALL 日期 WITH DATE() 改为 UPDATE 雇员 set 日期 = DATE()RELEASE THISFORM 改为 thisform.releaseSELECT COUNT((现价-买入价)*持有数量) ; 将count 改为 sum 其他不变FROM stock_sl ;WHERE 股票代码 ;= ; 改为 in(SELECT 股票代码 FROM stock_name ;WHERE "银行" LIKE 股票简称) 将like 改为 $ 其他不变CLOSE ALLOPEN DATABASE 成绩管理USE 选课 IN 0USE 学生 EXCL IN 0***********Error***********MODIFY TABLE 学生 ADD 平均成绩 N(6,2) 改为 alter table 学生 ADD 平均成绩 N(6,2)SELECT 学生***********Error***********DO WHILE EOF() 改为 do while not eof()SELECT AVG(成绩) FROM 选课 WHERE 学号=学生.学号 INTO ARRAY cj***********Error***********REPLACE 平均成绩 = cj[1] 改为 replace 平均成绩 with cj[1]cj[1]=0SKIPENDDOCLOSE DATABASE下面的程序在第2行、第3行、第4行、第5行有错误,请直接在错误处修改。
全国计算机二级VB上机题库(题+答案)word版

一、基本操作题下面出现的“考生文件夹”均为c:\wexam\20060001。
请根据以下各小题的要求设计Visual Basic应用程序(包括界面和代码)。
1.在窗体上建立一个二级菜单,该菜单含有“文件”和“帮助”两个主菜单项(名称分别为vbFile和vbHelp),其中“文件”菜单包括“打开”、“关闭”和“退出”三个子菜单项(名称分别为vbOpen、vbClose和vbExit)。
只建立菜单,不必定义其事件过程。
注意:保存时必须存放在考生文件夹下,窗体文件名为kt1.frm,工程文件名为kt1.vbp。
2.在名称为Form1的窗体上建立两个名称分别为Cmd1和Cmd2、标题分别为“喜欢”和“不喜欢”的命令按钮。
编写适当的事件过程,要求程序运行后,如果单击“喜欢”命令按钮,则在窗体上显示“数理化”;如果单击“不喜欢”命令按钮,则在窗体上显示“政史地”。
程序中不能使用任何变量,直接显示字符串。
注意:保存时必须存放在考生文件夹下,窗体文件名为kt2.frm,工程文件名为kt2.vbp。
一、基本操作题答案1.【解题步骤】(1)打开“菜单编辑器”。
(2)菜单设计见表4-1。
表4-1标题名称内缩符号文件vbFile 0打开vbOpen 1关闭vbClose 1退出vbExit 1帮助vbHelp 0(3)按要求设计含有“文件”和“帮助”的菜单栏。
(4)为“文件”菜单设计“打开”、“关闭”和“退出”三个子菜单项。
(5)设计完成之后,按规定方式存盘。
2.【解题步骤】(1)建立界面和控件并设置控件属性。
程序中用到的控件及其属性见表4-2。
表4-2控件属性设置值按钮Name Cmd1Caption 喜欢按钮Name Cmd2Caption 不喜欢(2)编写程序代码。
参考代码:Private Sub Cmd1_Click()Print"数理化"End SubPrivate Sub Cmd2_Click()Print"政史地"End Sub(3)调试并运行程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三步逐过程法”解二级VisualBasic上机考试改错题
一、改错题解法现状
许多同学为了掌握解决改错题的技巧和方法,一方面着重熟练VB集成开发环境中调试工具的使用,另一方面归纳总结了近几年来二级考试改错题中涉及到的错误类型。
这些对于提高应试能力无疑是有帮助的。
但是在实际考试中,他们也发现,解答改错题的方法沦为逐一去猜测错误类型,然后按模式来套解。
毫无疑问,这一解法效率慢,正确率不高,而且即便正确解答出来,也有一种侥幸的感觉。
之所以如此,根本的原因在于没有抓住具体题目算法逻辑特征这一主线,因而单纯的总结错误类型的意义也就不大了。
为此,我们可以采用一种比较完善的改错题解法——“三步逐过程法”。
二、“三步逐过程法”解法说明
“三步逐过程法”核心是把握题目算法逻辑特征,按照“从整体到部分,再由部分到整体”的思路排查错误,调试程序,具体步骤可分为三步:步骤一:把握题意,泛读程序,分析程序组成和各过程的功能;
步骤二:从通用过程入手, 逐过程输入并逐过程调试;
步骤三:输入并调试事件过程,完成对各通用过程调用和组装。
下面,我们结合一道改错题来具体说明每个步骤中的方法和技巧。
三、“三步逐过程法”解改错题举例
以江苏省二级VB上机考试中的一道考题为例。
已知下面程序的功能是找出2000以内这样的正整数N: 它的不同值的因子(包括1和N在内)之和是一个素数. 例如: 16: 1+2+4+8+16=31(下图为程序正确执行时的画面).
含有错误的源程序如下:
Option Explicit
Option Base 1
Private Sub Command1_Click()
Dim I As Integer, K As Integer, Sum As Integer
Sum = 0
For I = 2 To 2000
Call Fctor(I, Sum)
If Prime(Sum) Then
K = K + 1
Text1 = Text1.Text & Str(I) & " "
If K Mod 5 = 0 Then Text1 = Text1 & Chr(13) & Chr(10) End If
Next I
End Sub
Private Sub Fctor(N As Integer, S As Integer)
Dim I As Integer, J As Integer
Do While I < N
If N Mod I = 0 Then
S = S + I
End If
I = I + 1
Loop
End Sub
Private Function Prime(N As Integer) As Boolean
Dim m As Integer
For m = 2 To Sqr(N)
If N Mod m = 0 Then Exit Sub
Next m
Prime = True
End Function
“三步逐过程法”解题步骤:
步骤一:把握题意,泛读程序,分析程序组成和各过程的功能;
显然,该程序的组成如下图所示:
那么,我们如何分析出各个过程的功能呢?
核心技巧是从输出语句着手, 逆向推导, 分析各变量的含义, 进而根据过程的输入参数及其输出或
者反馈, 分析出此过程的功能。
1.标记出输出语句
输出语句有两句:
(1)、Text1 = Text1.Text & Str(I) & " "
(2)、If K Mod 5 = 0 Then Text1 = Text1 & Chr(13) & Chr(10)
2.逆向推导,分析各变量的含义
对于输出语句(1),显然是将符合条件的数I显示到文本框。
而根据题意,符合条件的数必须满足:2000以内和因子和为素数两个条件,因此,我们从语句(1)逆向推导,我们知道I是由2到2000的循环变量,并且只有满足Prime(S um)为True的才能显示到文本框,因此,我们知道Sum应该是I的因子和;对于输出语句(2),后半句的功能是为了实现回车和换行,结合K Mod 5=0以及逆向找出的K=K+1,我们知道,K的功能是为了控制输出按照每5个换行进行。
3.分析过程功能
对于语句Call Fctor(I,Sum),由于此时的I为2到2000的循环变量,Sum 为I的因子和,因此我们可以判定Fctor的功能是求I的因子和,并将该和赋给S um变量;根据Prime(Sum),我们可以判定Prime的功能是对Sum值进行是否是素数的判定,如果是,则返回True,否则返回False。
步骤二: 从通用过程入手, 逐过程输入并逐过程调试.
核心技巧是将通用过程输入后, 根据步骤一中分析出的各过程的功能,用含有具体参数值的过程调用语句来调试过程, 即: 给定确定的输入, 看有无准确的输出或者反馈。
那么如何构造含有具体参数值的过程调用语句呢?
对于Function过程,由于有输入参数和返回值,因此比较好构造调用调试语句。
譬如,对于Prime过程,由步骤一中我们已经知道其作用是用于判断输入参数是否为素数,如果为素数则返回True,否则返回False。
因此我们可以构造:Print Prime(7);Prime(10)
为此,我们只要在窗体上放置一个按钮Command1,在Command1_Click中输入Print Prime(7);Prime(10)即可,若输出为“True False”,则该过程正确。
如此操作,调试结果为:
由此,我们将Exit Sub修改为Exit Function,运行正确。
对于Sub过程,其没有返回值,因此该过程的反馈信息将可以通过两种方式得到,一种是直接在Sub中使用输出语句显示运行结果;一种是利用按地址传递的参数将反馈信息由被改变的实参带出。
对于Fctor(N,S)过程,根据步骤一,知其功能是,求N的因子和并由S带出。
为此,首先,我们根据给定的可以设定N为16。
1.输入Prime过程, 用print prime(7),prime(10)来调试;
2.输入fctor过程, 用
dim s as integer
call fctor(16,s)
print s
来调试.
步骤三: 对于事件过程, 若代码较长, 则逐程序块输入并调试(程序块通常以循环来区分)
核心技巧:在事件过程中, 将完成对通用过程的调用组装, 因此特别留意以下三点:
循环:注意循环变量的初值、终值和步长以及累积量的初值。
数组:元素从0开始还是从1开始。
过程:注意参数传递(Byval、ByRef),返回值类型,调用形式,具体的说包括:
1.实参与形参类型是否一致.
2.参数传递方法(ByVal与ByRef)是否正确
3.循环调用时, 同一变量调用前后值有无干涉,具体体现在: 前值没
有清空遗留在后值中或者动态数组元素未清空等, 此时错误表现在: 清空语句放置位置不对.
四、总结:
1.思维过程是微观到宏观
体现在: 由题意及变量含义推断过程作用; 逐过程输入调试后再进行事件工程中的调用和组装;
2.在调试通用过程时, 应用了数学中的特殊值法;
3.在组装事件过程时, 应用了工程中的经验法。