vb程序设计教程第五版龚沛曾(vb程序设计教程龚沛曾第五版PDF)
我想自学vb!需要的条件请大家指点!
你以前若是 一点都没学过,确实有困难,有很多名词是你以前没有见过的。
有困难的时候必须有人解答才行!!!
想系统学习编程(高深),那就去学习C
若只是编写一些小程序,那就去学VB
现在所用到中小型应用程序,VB编写的占多数!!
WOrd字处理软件就是用VB编的 系统是用C编写的
VB程序设计简明教程 高等教育出版社
这本书编写的相当好!!!!
Visual Basic程序设计简明教程(第二版)
ISBN:7-04-011549,P334
龚沛曾等,已出版,定价:25.60元
本书是为将Visual Basic作为程序设计第一语言课程的学校编写的。在第一版的基础上,本书针对初学者的特点,在内容编排、叙述严谨、实验题选择等方面做了进一步修改,力图便于教与学。
本书分为教学篇和实验篇。教学篇从两个方面即程序设计语言和可视化界面设计进行介绍,重点在第一方面。对程序设计的基本知识、基本语法、编程方法和常用算法进行了较为系统、详细的介绍,让学生学会分析问题、掌握简单问题编程的能力;而可视化界面设计是实际应用当中不可缺少的。本书将两者有机地结合,既可提高学生学习积极性又可提高编程效率和教学效果,真正达到学以致用的目的。
实验篇根据教学篇的布局,安排了相应的十一个实验,每个实验有若干个题目。根据教学规律和读者的建议,凡奇数号的实验给出了解答,偶数号实验答案则在配套的《Visual Basic实验指导与测试》(第二版)一书中给出,以培养学生独立解题的能力。返回
作者介绍:
龚沛曾(GONG PEIZENG),女,1953年8月生,1969年1月参加工作,1982年1月毕业于华东理工大学。现任同济大学计算机系教授,基础学科组主任,全国高校计算机教育研究会常务理事,上海市计算机基础教育协会秘书长。
长期从事计算机基础教学和科研工作。主讲《高级程序设计语言(C、VB、FORTRAN、PASCAL、COBOL)》、《计算机文化》、《实用软件技术》、《数据结构》、《Web技术》等课程。研究方向计算机辅助教育。
主编教材10余本、发表论文20余篇。主要教材有:《计算机文化基础》、《Visual Basic程序设计教程》、《Visual Basic计算机绘图》、《C语言程序设计》等系列教材;发表的主要论文有:"通用学分制智能教务管理系统的研究与实践"、"研究集教学、实验、考试于一体化的CAI课件的有效途径"、"多媒体CAI课件开发的技术和方法"等。承担了教育部《基于网络环境的计算机基础教学改革与实践》等教改项目。
主要成果有:负责的《面向21世纪计算机基础教学改革与实践》项目2001年获国家级教学成果二等奖、上海市教学成果一等奖;主编的《计算机文化基础》、《Visual Basic程序设计教程》教材2000年分别获上海市优秀教材二、三等奖,其中《计算机文化基础》教材列入国家十五规划教材,《Visual Basic程序设计教程》列入教育部面向21世纪教材;参加的国家七?五攻关项目"城市环境噪声防治系统"1992年获上海市科技进步三等奖;承担的《通用学分制智能智能教务管理系统》、《计算机文化CAI课件》两项目1997年分别获教育部、全国工科协作组优秀CAI软件三等奖。返回
专家书评:
探索 创新 实用--评《Visual Basic程序设计简明教程》
同济大学 吴启迪
由龚沛曾编著的《Visual Basic程序设计简明教程》已由高等教育出版社出版。从一些使用高校反馈的信息看,这是一本适用于计算机第二层次教学的优秀教材,它有以下特色。
一、 体现时代特征,选材超前
教育部关于计算机基础教育三个层次的课程体系中的第一层次--计算机文化教育的重要性,已成为广大教育工作者的共识。探索改革第二层次中程序设计语言课程教学,体现21世纪的时代特征,是深入教育改革的研究内容。为此,作者提出了将传统的程序设计语言教学转向反映21世纪潮流的面向对象的程序设计技术,并以VB为环境进行实施。VB不仅具有面向对象、可视化、事件驱动等特点,而且继承了 Basic简单易学的优点,尤其适合于非计算机专业学生的学习。教材的出版对探索和推广面向21世纪的程序设计语言教学改革有着重要的意义。
二、 结构合理,层次清楚,适用性强
该书兼顾到读者的不同程度,从打好基础和培养学生应用计算机的能力角度出发,分为基础篇、提高篇和实验篇。 基础篇分为8章。针对程序设计的初学者,注重VB的基础知识。对VB的程序设计语言基础做了较详细的介绍,列举了一般程序设计语言教学中必须掌握的常用算法,同时介绍了VB的控件、菜单、文件、图形设计等。此篇可作为大学生的程序设计语言的必修课教学内容。
提高篇分四章。对已掌握了程序设计的学生,注重VB与当前新技术应用的结合,包括与数据库、OLE、API函数、WEB等相结合,这些可作为选修课或自学内容。
实验篇提供了15个单元的实验和自我测试题。通过针对性的上机实践,使读者掌握程序设计与调试的方法,提高动手能力,巩固所学的知识。
三、 两个结合,注重应用
教材始终贯穿了两个结合,即将面向对象程序设计方法和结构化程序设计方法有机结合,计算机文化基础和计算机技术基础两个层次有机结合。
面向对象的程序设计方法还是要以结构化程序设计为基础。因此,该书与其他同类VB教材不同之处在于加强了结构化程序设计和常用算法的训练,并与VB中的对象属性和方法相联系,使读者既掌握了程序设计的基本方法,更加深了对面向对象概念的理解。例如,在分析数组排序算法的同时,也介绍了利用VB列表框的SORT属性可实现数据的有序,同时指出两者的特点和利弊。
利用学生已在计算机文化基础课程中对Windows图形界面及软件熟练使用的基础,在该书中,大量的实例都围绕着第一层次中已学过的软进行剖析,如对计算器、图形浏览器、文本编辑器、数据库管理等的分析。通过实例分析,并加以编程实现,使学生既掌握了VB内容的学习,进行了开发实用软件的训练,更激发了探索VB奥妙的兴趣,达到事半功倍的效果。
四、 在精字上下功夫,有创新
为了解决内容多、学时少的矛盾,作者花费了大量的创造性劳动,在精字上下功夫。表现在:精练的文笔简述基本语法的使用规则,淡化繁琐的语法规则。短小精悍的实例引路,通过问题的展开导出对象属性和方法,加深读者对新知识的理解。精心设置了思考题并留有余地,给学生提供较多的独立思考的机会,巩固学习内容。精选了与实际生活密切相关的问题作为实例或实验内容,既调动了学生的学习积极性,又使得学与用密切结合,增强了学生运用知识的能力。提供了与教材配套的CAI课件,构成了立体化教材,利用大屏幕投影,真正贯彻精讲多练的原则,提高了教学的质量和效率。提供了与教材配套的教学网站,并提供了网络化VB考试与评分系统,随时可进行相关测评。教材结构紧凑,层次清楚、图文并茂、好教易学。
这些特色在同类计算机基础教材改革中具有一定的创新意义,使学生通过该书的学习,提高获取知识的能力、分析问题和解决问题的能力以及开发实用软件的能力。这在一般程序设计语言课程教学中难以完全兼顾到。
第三版VB程序设计教程课后习题答案 龚沛曾主编的
习题一
答案在教材上找。
习题二
1.对象指现实世界中的实体。每个对象有自己的特征(属性)、行为(方法)和发生在该对象上的活动(事件)。
类是对同一种对象的集合与抽象。类包含所创建对象的属性数据,以及对这些数据进行操作的方法。封装和隐藏是类的重要特性,将数据结构和对数据的操作封装在一起,类的内部实现细节对用户来说是透明的。
VB工具箱中的可视图标是VB系统设计好的标准控件类。通过将控件类实例化,得到真正的控件对象。在窗体上画一个控件,就将类转换为对象,创建了一个控件对象。
VB中常用的对象是控件。此外,VB还提供了系统对象。窗体是个特例,它既是类也是对象。当向一个工程添加一个新窗体时,实质就由窗体类创建了一个窗体对象。
对象的三要素:属性、事件和方法。
属性:存放对象的数据(决定对象外观及功能)对象属性的设置方法:在设计阶段,利用属性窗口直接设置属性值;程序运行时,通过语句[对象名.]属性名=属性值。若属性只能在设计阶段设置,在程序运行阶段不可改变,称为只读属性。
事件:发生在对象上的事情。同一事件,对不同的对象,会引发不同的反应。
事件过程:应用程序处理事件的步骤。应用程序设计的主要工作就是为对象编写事件过程的代码。
方法:面向对象的程序设计语言,为程序设计人员提供了一种特殊的过程和函数。方法是面向对象的,调用时一定要指明对象。
2.窗体和控件具有的基本属性“
(1) Name属性:名称
所创建的对象名称,在程序中引用。
(2) Caption属性:标题
该属性决定了对象上显示的内容。
(3) Height、Width、Top和Left属性
决定对象的大小和位置。
(4) Enabled 属性:对象是否允许操作
(5) Visible 属性:对象是否可见
(6) Font 属性组:文本的外观
FontName字体、FontSize大小
FontBold粗体、FontItalic斜体
FontStrikethru 删除线
FontUnderline 下划线
(7) ForeColor属性:前景颜色
(8) BackColor属性:背景颜色
(9) MousePointer属性:鼠标指针类型, 设置值范围0~15,由系统指定 。若为99,由用户提供的图形文件定义鼠标指针形状。
(10) MouseIcon属性:在MousePointer属性值为99时,存放自定义的鼠标图标文件(.ico或.cur)。图标库在Graphics目录下。
3.窗体的事件:Load事件是在窗体被装入工作区时触发的事件。当应用程序启动,自动执行该事件,该事件通常用来在启动应用程序时对属性和变量进行初始化。
窗体的方法:(1)Print方法
用来显示文本内容,格式:[对象.]print 表达式
(2)Cls方法
清除运行时在窗体或图形框中产生的文本或图形, Cls方法不能清除窗体在设计时的文本和图形。
格式:[对象.]cls
(3)Move方法
可移动窗体或控件,并可改变其大小。
语法格式如下:
[对象.]Move 左边距离[,上边距离[,宽度[,高度]]]
4.标签作用:用于显示文本(输出)信息,不能作为输入信息的界面。其内容只能通过Caption属性设置或修改,不能直接编辑。
5.文本框是一个文本编辑区域,可以在该区域输入、编辑、修改和显示正文内容。在VB中字符长度以字为单位,也就是一个西文字符与一个汉字都是一个字,长度为1。
重要属性(1) Text 显示或输入的正文内容。
(2) Maxlength 设置文本框可输入的文字最大长度。默认值为0,表示可以输入任意长字符串。
(3) MultiLine 多行属性
设置为True时,文本框可以输入或显示多行正文,同时具有文字处理器的自动换行功能,按Enter键可插入一空行。
(4) ScrollBars 滚动条属性
0-None 无滚动条
1-Horizontal 水平滚动条
2-Vertical 垂直滚动条
3-Both 同时加水平和垂直滚动条
注意:当MultiLine为True时,ScrollBars才有效
(5) PassWordChar 设置显示文本的替代符。例如,当设置为“*”,则在文本框输入的内容均以“*”显示,而存储的值是用户输入的原文。一般用于设置口令的输入。
当MultiLine为True时,该属性不起作用,密码不允许多行。
(6) Locked 指定文本控件是否可被编辑,默认值为False(可编辑),当设置为True时,文本控件相当于标签控件的作用。
注意:Locked与Enabled的区别。
(7)文本内容进行选择操作的三个属性
SelStart 选定的正文开始位置
SelLength 选定的正文长度
SelText 选定的正文内容
这3个属性互相关联,例如设置SelStart、SelLength后,SelText 自动存放指定的文本。
注意:属性窗口中没有这三个属性,只能在程序代码中使用。
6.文本框的事件:(1) Change事件:当Text属性值发生改变时引发该事件
(2) KeyPress事件:按下并且释放键盘上的一个键时,引发焦点所在控件的KeyPress事件,所按键的值存放在参数KeyAscii中。对回车的判断 KeyAscii=13
7.文本框最有用的方法是SetFocus,把光标移到指定的文本框中。
8.命令按钮 Picture属性:按钮可显示图片文件(.bmp和.Ico),当Style为1时有效。
10. 启动窗体时将命令按钮定位在窗体中央的代码
Private Sub Form_Load()
Command1.Left = Form1.ScaleWidth / 2 - Command1.Width / 2
Command1.Top = Form1.ScaleHeight / 2 - Command1.Height / 2
End Sub
11.vb图片文件在 C:\Program Files\Microsoft Visual Studio\Common\Graphics 文件夹。
安装VB时可选择是否安装这些图片文件。
习题三
1. 合法常量:
(1) Double
(2) 错误
(3) Double
(4) Double
(5) 错误
(6) Integer
(7) String
(8) String
(9) Date
(10) Double
(11) 错误(汉字字符)
(12)Integer(八进制)
(13) 错误(八进制无数码8)
(14) Integer
(15) Boolean
(16) 错误
(17) 错误(十六进制无数码g)
(18) Single
说明:浮点型变量默认为Double类型而非Single。
2. 合法变量名:
(1) √
(2) √
(3) 误:数字开头
(4) 误:含空格
(5) 误:关键字
(6) √
(7) 误:关键字
(8) 误:有括号
(9) √
(10) √
(11) √
(12) √(汉字字符可作为变量名,但不常用,且此名称易误解)
变量命名规则见P.41-42。
字母(汉字)开头,字母(汉字)、数字、下划线组成,长度为1-255个字符;关键字不可作为变量名,但可在变量名中嵌入关键字;不区分大小写。
常量、数组、类型、函数、过程、对象命名规则与此相同。常量名通常全用大写。
3. 写VB表达式
(1) Abs(x + y) + z ^ 5
(2) (1 + x * y) ^ 6
(3) (10 * x + Sqr(3 * y)) / (x * y)
(4) (-b + Sqr(b ^ 2 - 4 * a * c)) / (2 * a)
(5) 1 / (1 / r1 + 1 / r2 + 1 / r3)
(6) Sin(45 * 3.14159 / 180) + (Exp(10) + Log(10)) / Sqr(x + y + 1)
4. 根据条件写表达式
(1) 随机产生大写字母 Chr(Int(Rnd * (Asc("L") - Asc("C") + 1) + Asc("C")))
(2) [100,200]内的随机数 Int(Rnd * 101) + 100
(3) 点(x,y)位于第一或第三象限 x 0 And y 0 Or x 0 And y 0 或 x * y 0
(4) x是5或7的整数倍 x Mod 5 = 0 Or Int(x / 7) = x / 7
(5) 将两位整数x的个位与十位对换 x \ 10 + (x Mod 10) * 10
(6) 四舍五入取两位小数 Round(x, 2)
(7) 字符变量C是字母字符(不区分大小写)——准确地说是:字符变量C的第一个字符是字母
C = "A" And C = "Z" Or C = "a" And C "z"
或 UCase(C) = "A" And UCase(C) = "Z"
或 LCase(C) = "a" And LCase(C) = "z"
(8) 字符变量S第5个字符起取6个字符 Mid(S, 5, 6)
(9) 10≤x<20 10 = x And x 20
(10) x,y至少有一个小于z x z Or y z
(11)x,y都大于z x z And y z
5. 写表达式的值
(1) 188 ——注意运算的优先级顺序,以及整除运算“\”的计算
(2) 200100 —— 计算100 + "100"时,由于两个操作数类型不同,在可能的情况下自动采用精度较高的类型,即把字符型转换为数值型,100 +100 得到200;然后进行字符串连接运算200 100 ,再自动将两个数值转换为字符串,得200100。
(3) 68.56 ——在四舍五入函数产生之前,这就是四舍五入的计算方法
(4) 876554 ——先进行字符串的“+”运算,再转换成数值。在变量名和函数名后可加上类型符,以强调其类型,但不是必须的。
(5) 2000-2-29
(6) 6
6.Shell函数调用
i = Shell("mspaint.exe", 1) '启动画图
i = Shell("C:\Program Files\Microsoft Office\OFFICE11\winword.exe", 1) '启动Word
说明:“画图”是Windows本身提供的程序,可以省略路径。
8. 答:单精度浮点型
第7,9题答案在教材中找。
习题四
第1,3,5,8题答案在教材中找。
2. 赋值语句的错误
(1)10x 不能做变量名。
上机验证结果:VB将10识别为行号,x = Sin(x) + y是为变量x赋值。故无语法错误。
(2)Sqr函数的参数为负数。
上机验证结果:“无效的过程调用或参数”
(3)赋值号左边不是变量名。
上机验证结果:“缺少子程序、函数或属性”
(4)除数为0
上机验证结果:“溢出”。
4. [答案略]
说明:小数位可以使用四舍五入函数Round或输出格式函数Format。例如Round(x, 2)和Format(x, “0.00”)均可使结果只保留两位小数。但如果四舍五入后要进行数值运算,则使用Round函数,例如z=Round(x,2)+Round(y,2)。而Format函数通常只用于输出格式设置。
6.指出错误
(1)“≥”应改为“=”,前者是中文字符,不具有运算功能。
(2)“10x20”应改为“10x And x20”,否则运行结果错误。
7.写条件语句
(1)
Dim c As String
c = InputBox("c=")
If Mid(c, 3, 1) = "C" Then
MsgBox "Yes"
Else
MsgBox "No"
End If
(2)
# 使用If语句
Dim x As Single, y As Single
x = Val(InputBox("x="))
If x 20 Then
y = x ^ 2 + 3 * x + 2
ElseIf x = 10 Then
y = Sqr(3 * x) - 2
ElseIf x 0 Then
y = 1 / x + Abs(x)
End If
Print "y="; y
# 使用Select Case语句
Dim x As Single, y As Single
x = Val(InputBox("x="))
Select Case x
Case Is 20
y = x ^ 2 + 3 * x + 2
Case Is = 10
y = Sqr(3 * x) - 2
Case Is 0
y = 1 / x + Abs(x)
End Select
Print "y="; y
(3)
# 使用If语句
Dim x As Single, y As Single, z As Single, Max As Single
x = Val(InputBox("x="))
y = Val(InputBox("y="))
z = Val(InputBox("z="))
Max = x
If y Max Then Max = y
If z Max Then Max = z
Print "Max="; Max
# 使用IIF函数
x = Val(InputBox("x="))
y = Val(InputBox("y="))
z = Val(InputBox("z="))
Max = IIf(x y, x, y)
Max = IIf(z Max, z, Max)
Print "Max="; Max
9. 计算循环次数
(1) 6
(2)19
(3)0
(4)死循环直至溢出
10. 40号语句执行 4次;第50 号语句执行12次;
执行第90号语句输出的结果是: 13,0,2
说明:该程序为嵌套循环,其中外循环由j值变化(1,4,7,10)控制执行4次,当j值为13时结束循环;内循环由k值变化(6,4,2)控制执行3次,当k值为0时结束循环。第40 行是外循环的循环体,故执行4次;第50 行是内循环的循环体,故执行4*3=12次。
11. 可以定一个较大的循环次数,在循环体中根据条件用Exit For退出。
但这种情况通常用Do While循环控制。
12. 编程(并非唯一正确答案)
(1)
Dim i As Integer, s As Integer
For i = 1 To 10
s = s + (i + 1) * (2 * i + 1)
Next i
Print "s="; s
(2)
Dim i As Integer, n3 As Integer, n7 As Integer
For i = 1 To 100
If i Mod 3 = 0 Then n3 = n3 + 1
If Int(i / 7) = i / 7 Then n7 = n7 + 1
Next i
Print "1-100中3的倍数有"; n3; "个"
Print "1-100中7的倍数有"; n7; "个"
(3)
Dim s1 As String, s2 As String, i As Integer
s1 = InputBox("Input String")
s2 = ""
For i = 1 To Len(s1)
s2 = Mid(s1, i, 1) + s2
Next i
Print "原序:"; s1
Print "反序:"; s2
或
For i = Len(s1) To 1 Step -1
s2 = s2 + Mid(s1, i, 1)
Next i
13. 输出字符串“10100”。该程序功能是将十进制数转化为二进制。
说明:要理解该程序需要了解数制转换的计算方法(有兴趣者参看百度百科)。48是字符"0"的ASCII码。
14. 运行时输出 22 484
该程序功能是求x和y最大公约数和最小公倍数。
说明:此算法称为“辗转相减法”。可对照例4.17的辗转相除(辗转求余)法。
15.[50,100]间的20个随机数,求最大值、最小值、平均值。
Dim x As Integer, sum As Integer, aver As Single
Dim n%, i%, max%, min%
Randomize
max = 50: min = 100: n = 20
For i = 1 To n
x = Int(Rnd * 51 + 50)
List1.AddItem x
sum = sum + x
If x max Then max = x
If x min Then min = x
Next i
aver = sum / n
Print "最大值:"; max, "最小值:"; min, "平均值:"; aver
习题五
1. 指定数组的默认下界 Option Base 1
2.合理的数组声明
(1)错。定义数组不可用变量(教材99页)。
(2)正确。该数组下标为0-11。
(3)错。VB中数组下标用圆括号。
(4)正确。三维数组三个下标分别为0-1,0-1,0-2,共12个元素。
(5)错误。非动态数组,不可重定义。
(6)错误。动态数组重定义时不可改变数据类型。
(7)正确。二维数组两个下标分别为0-2,0-3,共12个元素。
(8)语法错误,二维数组定义中漏写逗号——可能是印刷错误,加上此逗号则正确。
3.当引用数组元素时下标值小于定义的最小下标,或大于最大下标时,会发生“下标越界”错误。
4.数组名:a ;数组类型:Single(单精度浮点型);维数:二维;
各维的上下界:第一维下界(最小下标)为 -1,上界(最大下标)为2,
第二维下界(最小下标)为 0,上界(最大下标)为3;
数组的大小:4行4列共16个元素
以矩阵的格式输出二维数组:
For i = -1 To 2
For j = 0 To 3
Print a(i, j);
Next j
Next i
或写成更加通用的代码形式:
For i = LBound(a, 1) To UBound(a, 1)
For j = LBound(a, 2) To UBound(a, 2)
Print Tab(j * 8); a(i, j);
Next j
Next i
6.一维字符数组
Dim a(1 To 20) As String
Private Sub Command1_Click() '(1)随机产生字符串
Dim i As Integer, j As Integer, n As Integer, c As String * 1
Randomize
For i = 1 To 20
a(i) = "" '将第i个元素清空
n = Int(Rnd * 10 + 1) '产生[1,10]的随机数
For j = 1 To n 'a(i)中有n个字符
c = Chr(Int(Rnd * 26 + 97)) '随机产生字母97是字母a的ASCII码
a(i) = a(i) + c
Next j
Next i
End Sub
Private Sub Command2_Click() '(2)输出字符串
Dim i As Integer
For i = 1 To 20
Print Tab(((i - 1) Mod 5) * 11); a(i);
If i Mod 5 = 0 Then Print
Next i
End Sub
Private Sub Command3_Click() '(3)最长的字符串
Dim i As Integer, imax As Integer
imax = 1
For i = 2 To 20
If Len(a(i)) Len(a(imax)) Then
imax = i
End If
Next i
Print "最长的字符串:"; a(imax)
End Sub
第7,8题答案在教材中找。
第9题“自定义变量”含义不明,暂时无法回答。
第5,10 题 [暂略]
习题六
第1,2,6-8题答案可在教材中找到。
3.指出过程说明中的错误
(1)Sub子过程不应该定义类型
(2)函数与形式参数不应该同名
(3)数组作为形式参数时,应使用传地址方式,不可使用传值(ByVal)
(4)形式参数应该是变量或数组名,不可以是一个数组元素
4.指出调用过程语句的错误
(1)无语法错误,但因形参sum所对应的实参是常量3,故计算结果无法传递给主调程序。
(2)实参变量c与形参sum的类型不一致。
(3)类似于(1),形参sum所对应的实参是表达式a+b,故计算结果无法传递给主调程序。
(4)类似于(1)和(2),形参sum所对应的实参是表达式Sqr(c),故计算结果无法传递给主调程序。另外srq(a)存在语法错误(拼写错)。
(5)与(2)相同,实参c与形参sum的类型不一致。
5.迭代法求平方根
(1)自定义函数的定义及调用
Function FSqr1(a As Single) As Single
Dim x0 As Single, x As Single
x = a
Do
x0 = x
x = (x0 + a / x0) / 2
Loop While Abs(x - x0) 0.00001
FSqr1 = x
End Function
Private Sub Command1_Click()
Dim x!, y!
x = Val(InputBox("x="))
If x = 0 Then
y = FSqr1(x)
Print y
End If
End Sub
(2)自定义子过程的定义及调用
Sub FSqr2(a As Single, x As Single)
Dim x0 As Single
x = a
Do
x0 = x
x = (x0 + a / x0) / 2
Loop While Abs(x - x0) 0.00001
End Sub
Private Sub Command2_Click()
Dim x!, y!
x = Val(InputBox("x="))
If x = 0 Then
Call FSqr2(x, y)
Print y
End If
End Sub
(3)递归函数及调用 [略]
习题七
第1-9题,答案在教材上找;第10,12-14题,略。
11.检测Ctrl和F3同时按下的代码:
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If Shift = 2 And KeyCode = 114 Then MsgBox "HAHA"
End Sub
习题八
第1,2,6,7,9题答案可阅读教材找到。
3.写Open语句
(1) Open "Seqnew.dat" For Output As #1 '重写
或 Open "Seqnew.dat" For Append As #1 '添加
(2)Open "Seqold.dat" For Input As #2
(3)Open "Seqappend.dat" For Append As FreeFile
4.编程,将文件Text.dat 读入变量strTest。
Dim strTest As String
Open "Text.dat" For Input As #2
Do While Not EOF(2)
strTest = strTest + Input(1, #2)
Loop
8.本课程不涉及二进制文件。故此处以顺序文件读写方式编程。另外合并的结果可以是合并到其中某一个文件,也可以是合并到一个新的文件,此处代码是合并到其中一个文件F1.txt。
'方法一,在2号文件一次读一个字符并写入1号文件
Dim strTemp As String * 1
Open "d:\F1.txt" For Append As #1
Open "d:\F2.txt" For Input As #2
Do While Not EOF(2)
strTemp = Input(1, #2)
Print #1, strTemp; '注意结尾有分号,否则每个字符一行
Loop
Close
'方法二,在2号文件一次读一个字符并累加,最后将累加结果写入1号文件
Dim strTemp As String '注意方法一变量定义的区别
Open "d:\F1.txt" For Append As #1
Open "d:\F2.txt" For Input As #2
strTemp = ""
Do While Not EOF(2)
strTemp = strTemp + Input(1, #2)
Loop
Print #1, strTemp
Close
习题九
答案在教材上找。
习题十
答案在教材上找

怎么用vb制作俄罗斯方块游戏啊,简单点的。
visual basic继承了basic语言易学易用的特点,特别适合于初学者学习windows系统编程。随着21世纪信息社会的到来,计算机在人们的工作和生活中的深入,要求我们越来越多地与计算机打交道,为了使用户在繁忙的日程工作中得到放松,于是出现了各种各样的休闲软件,如聊天工具,游戏等等。于是我们小组着手设计开始一个这样的游戏软件。通过这学期来Visual Basic的学习,我初步掌握了Visual Basic语言的最基本的知识,于是在牛荣和李鹏等老师的指导下动手用Visual Basic编写俄罗斯方块游戏。
我们之所以选择开发俄罗斯方块游戏,无可争议,《俄罗斯方块》是有史以来最伟大的游戏之一。 在曾经发布过的所有游戏中,《俄罗斯方块》还被认为是仅有的一个能够真正吸引广泛人群的作品。谁能说清楚,迄今为止人们究竟花了多少万个小时在这个游戏上?也许这些时间本来可以被花在更具生产力的活动上。某些批评家也许会声称,《俄罗斯方块》要比过去二十年间出现的任何东西都要浪费人们的时间。至于我们,则要欣然提名它为GameSpot评选出的历史上最伟大游戏之一。
为了怀念经典,也为了能够给大多的计算机用户在工作之余找到一个休闲、娱乐的一个方式,我们小组开始着手用VB语言开发一个经典的俄罗斯方块游戏。
工程概况
2.1 项目名称
俄罗斯方块游戏
2.2 设计平台
VB 全称Visual Basic,它是以Basic语言作为其基本语言的一种可视化编程工具。
Vb是microsoft公司于1991年退出的windows应用程序开发工具visual意思是“可视化的”。在它刚推出来时,自身还存在一些缺陷,功能也相对少一些。但是经过多年的开发研究。最近microsoft公司又推出了VB6.0版本
VB6.0运行环境:硬件,要求486以上的处理器、16MB以上内存,50MB 以上的硬盘,cd-rom驱动器,鼠标。软件:要求windows 95以上版本。
2.3程序设计思想
游戏是用来给大家娱乐的,所以要能在使用的过程中给大家带来快乐,消除大家的疲劳,所以我们在游戏中添加了漂亮的场景和动听的音乐,设置了过关升级的功能,激发大家的娱乐激情。
从游戏的基本玩法出发,主要就是俄罗斯方块的形状和旋转,我们在设计中在一个图片框中构造了一个4*4的网状小块,由这些小块组合成新的形状,每四个小块连接在一起就可以构造出一种造型,因此我们总共设计了7中造型,每种造型又可以通过旋转而变化出2到4种形状,利用随机函数在一个欲览窗体中提前展示形状供用户参考,然后将展示的形状复制到游戏窗体中进行摆放,在游戏窗体中用户就可以使用键盘的方向键来控制方块的运动,然后利用递归语句对每一行进行判断,如果有某行的方块是满的,则消除这行的方块,并且使上面的方块自由下落,其中,方块向下的速度是有时钟控件控制的,在游戏中,用户也可以使用向下键加快下落速度,定义一个变量,对消除的函数进行记录,最后就可以得出用户的分数,用if 语句对分数判断,达到一定的积分就可以升级到下一个档次。
俄罗斯方块游戏设计的主要步骤为以下10个方面:
(1)游戏界面的设计。
(2)俄罗斯方块的造型。
(3)俄罗斯方块的旋转。
(4)俄罗斯方块的运动情况(包括向左,向右和向下)。
(5)俄罗斯方块的自动消行功能。
(6)游戏级别的自由选择。
(7)游戏速度的自由选择。
(8)游戏得分的计算。
(9)游戏菜单选项的设计及功能实现。
(10)游戏的背景音乐及特效。
2.4运用的控件和主要对象
我们在设计过程中主要用到的控件有:command控件,image控件,picture控件,label控件,timer控件,text控件,windows media player控件等等。
2.5主要实现的功能
我们开发的俄罗斯方块游戏,主要实现了以下几种功能:
1.可以灵活控制方块在图形框中运动。
2.游戏过程中方块可以自由旋转。
3.当某一行的方块排列满时,将自动将这一行方块消除,然后将上面所有方块向下移动,可以支持连续消行。
4.游戏前可以选择游戏的速度和游戏的等级,游戏速度既为方块下落速度,游戏等级为初始游戏时在基层随机生成一定行数的无规律方块,生成的行数由你来选择,每行至少产生5个以上的无规律方块,这样增加了游戏难度,对于游戏高手来说,无疑不是一个新的挑战。
5.游戏的得分支持积分,并且按照公式:
得分 = 原来分数+ 100 * (2 ^ 同时消除的行数-1)
这样,你同一时间消除的行数越多,你的得分也就越高,当游戏积分到了一定时可以自动升级,这个升级指速度升级。
6.游戏中提供了一个漂亮的场景和动听的音乐,给你带来无限激情。
2.6开发人员
由于这次课程设计所选的题目太复杂,而时间又比较紧张,指导老师建议和同学分工完成。我们小组成员包括组长孙磊周,副组长邹海星,此游戏由我们两个人共同开发而成。
正文
3.1游戏设计的具体实现
在我们两个人共同努力下,此次设计,终于能够圆满完成。由于时间的紧促,在设计中,也许会有一些考虑不周之处,但其功能已经能够满足大多用户的需求,相信假以时日,一定能做出一个更经典,更完美的俄罗斯方块游戏,下面我们将对每一步的具体如何实现展示给大家。
3.1.1游戏界面的设计和背景音乐及特效的实现
俄罗斯方块游戏主要由两个界面构成,登陆界面和开始游戏界面,在登陆界面中我们可以首先看到圣诞节的晚上飘梅花的场景,梅花从窗体顶部做函数曲线的下落运动,在窗体中定义一个Image控件组,在通用中定义梅花X坐标变量动态数组,Y坐标变量动态数组,步距X的变量动态数组,步距Y的变量动态数组,以及振幅变量动态数组。然后在窗体form_load中可以定义梅花的数量,利用随机函数产生随机的梅花坐标,步距和振幅,Image控件在运行时候就调用梅花图片,Image控件就可以由时钟控件控制下落速度,可以自由调节,梅花按snow(i).Left = xp(i) + am(i) * Sin(dx(i))函数在做纵向的正玄函数轨迹运动,竖直方向上为自由下落运动,,有am(i)来控制梅花的左右移动振幅。因此,我们就可以看到一个梅花在空中自由飘舞的画面了。
背景画面是用photoshop软件处理的漂亮图案,原本画面中的动画效果都是由Image控件制作的,还有点击进入游戏的按钮是由Label控件实现的,因为Image控件没有置前置后功能,不能将下雪的场景体现完整性,所以将这些图案全部放在背景上,不影响雪花飘落的效果,当点击画面的时候一样可以进入游戏界面。
游戏的背景音乐是由一段代码调用系统播放器Windows Player播放背景音乐,由于本次设计主要是针对游戏如何设计的,所以在这里就不对播放背景音乐的功能做介绍了。
3.1.2俄罗斯方块的造型
相信朋友们都玩过俄罗斯方块,对这个游戏的玩法和方块形状都比较熟悉。我们这个游戏只选择了最基本的7中造型,包括长条型,正方型,正S型,反S型,正7型,反7型,T型。如果需要我们可以添加更多的造型。将游戏界面的游戏区图片框分割成10*20的小块,每个小块放置一个command控件,预览区图片框按同样比例分割成4*4的小块,同样有command控件构成,我们可以把预览区图片框看作是从游戏区图片框中选取的一个部分,游戏区的小方块编号和欲览区编号如下图:
0 1 2 3 4 5 6 7 8 9
… … … … … … … … … …
… … … … … … … … … …
90 91 92 93 94 95 96 97 98 99
3 4 5 6
13 14 15 16
23 24 25 26
33 34 35 36
游戏区编号 欲览区编号
利用Select将方块的7中造型列出,比如长条型的设计,在欲览区中分别有3.4.5.6和5.15.25.35四个方块构成两中形态,用数组为:
m(0) = 3: m(1) = 4: m(2) = 5: m(3) = 6: situation2 = 0
m(0) = 5: m(1) = 15: m(2) = 25: m(3) = 35: situation2 = 1
将它的形状编号为0和1,在后面方便调用,其他的方块造型同样的方法。
3.1.3俄罗斯方块的旋转
俄罗斯方块的旋转主要将方块的位置加以变换得到的,例如上述范例,长条型有两中样式,根据小方块的编号变动来实现整个造型的旋转,比如:
If n(0) - 18 = 2 And n(3) + 9 = 198 Then
If cmdfang(n(0) - 18).Visible = False And _
cmdfang(n(1) - 9).Visible = False And _
cmdfang(n(3) + 9).Visible = False Then
hidefang 0
n(0) = n(0) - 18
n(1) = n(1) - 9
n(3) = n(3) + 9
showfang 0
situation = 1
End If
End If
方块的造型在旋转的时候存在一个公式,当然首先要判断是否满足旋转的要求,以上是一个长条型由横着变成竖立状态的旋转,我们以它的造型中的第三个小方块n(3)为中心旋转,这样,在开始运动的时候,长条形要发生旋转最少要运动到第三行,才能由横着变成竖立状态,游戏区图形框中第三行的第一个方块的编号为20,所以长条造型的第一个小方块的编号n(0)必须要大于20。同样,长条型方块在下落到底部的时候也有限制。如果长条下落到最后一行也将无法由横着变成竖立状态。
3.1.4如何实现方块的运动和自动消除满行的方块
我们的这个俄罗斯方块游戏主要是利用command控件的visible属性完成效果的,其实在游戏区图形框可以看成是由许多的command小方块组成,方块运动的过程就是造型里方块显示或者隐藏,就像现在的霓虹灯效果一样,由时钟控件控制visible属性改变的速度,上一层的消失,下一层的显示,这样,从视觉效果可以看到方块的下落运动效果。
方块在下落的过程中会自动判断每一行方块的visible属性,如果全部为true时,就会将这一行小方块的visible属性全部变成false,在将上面的小方块向下移动,利用for语句进行循环判断,将所有这样情况的行改变小方块visible属性。当有多行同时出现这样情况时使用递归调用,实现连续消行。具体程序代码如下:
For i = 190 To 10 Step -10
If cmdfang(i).Visible = True And _
cmdfang(i + 1).Visible = True And _
cmdfang(i + 2).Visible = True And _
cmdfang(i + 3).Visible = True And _
cmdfang(i + 4).Visible = True And _
cmdfang(i + 5).Visible = True And _
cmdfang(i + 6).Visible = True And _
cmdfang(i + 7).Visible = True And _
cmdfang(i + 8).Visible = True And _
cmdfang(i + 9).Visible = True Then
For j = i + 4 To i Step -1
t = 1
cmdfang(j).Visible = False
cmdfang(2 * i + 9 - j).Visible = False
For k = 1 To 4000
DoEvents
Next
t = 0
Next
linenum = linenum + 1
For j = i - 1 To 0 Step -1
If cmdfang(j).Visible = True Then
cmdfang(j).Visible = False
cmdfang(j + 10).Visible = True
End If
Next
clearline '为了实现连消数行,这里使用递归调用
End If
Next
3.1.5游戏速度和游戏级别自由选择
游戏速度的自由选择无非就是改变时钟控件的频率,我们在菜单中添加了选择速度的功能,还有添加了考验功能,将欲览窗中的方块造型隐藏,给玩家提高了难度,如果你不愿意接受考验也可以点击显示还原成原来状态。
游戏级别的自由选择是让用户选择游戏开始时候,游戏区底部出现一定行数的随机方块,同样给玩家增加了难度,功能代码如下:
For i = 19 To 20 - Val(txthard.Text) Step -1
For j = i * 10 To i * 10 + 9
If Rnd = 0.5 Then cmdfang(j).Visible = True
Next
Next
可以根据你选择的难度系数在底层的每一行随机产生超过半数(即5个以上)以上的小方块,这样适合喜欢高难度的玩家。
3.1.6游戏得分的计算和游戏菜单的编辑
游戏得分的计算主要是根据消除的行数来决定的,当然每一次同时消除的行数不一样,每一行的得分也不一样,如果你每次消除的行数为1,则最后得分是100分,如果同时消除2行,则最后得分是300分,同时消除3行,得分为700分,同时消除4行,得分为1500分,这由公式:得分 = 原来分数+ 100 * (2 ^ 同时消除的行数-1)。
游戏的编辑,读者可以参照下面的功能介绍。
3.2 游戏功能的介绍
文件-------开始:开始游戏。
继续:继续游戏。
暂停:暂时停止游戏,点击继续的时候可以继续游戏。
退出:退出游戏。
设置-------选择游戏级别。
选择游戏速度。
考验-------显示:显示欲览去方块。
隐藏:隐藏欲览去方块。
帮助-------操作提示以及版本信息和作者资料。
用户界面具体如图:
图—登陆界面 图—游戏界面
图—菜单编辑界面 图—游戏帮助界面
有关说明
经过两个多星期的设计和开发,俄罗斯方块游戏已经成功。其功能基本符合用户需求,能够完成游戏的控制,方块的变换以及消层等功能。并提供游戏设置,对于一些技术性比较过硬的玩家,可以调游戏级别、以及游戏速度,使得玩家能够充分的发挥竞技游戏的特色,可以不断的挑战自我,挑战极限。
4.1游戏设计中的不足之处
但是由于课程设计时间较短,所以该游戏还有许多不尽如人意的地方,比如方块类型太少,退出游戏不能存储进度等多方面问题。这些都有待进一步改善,我们在游戏中还可以更换背景音乐,以适合不同的玩家,在每通过一关可以给玩家播放一段flash,吸引玩家去挑战极限,不断提高玩家的兴趣,相信在以后的制作过程中我们将给大家带来一个更新功能更全面的游戏。
4.2VB与C语言之间的不同之处
我们这个小游戏也可以用C语言来实现,在程序的编程上没有VB语言方便实用,C语言和VB语言之间存在很多的共同点,虽然语法方面有点差异,但是在编程思路上完全一样,VB能够实现很多C#不能做到的功能,如When语句、Optional参数、局部Static变量、对象实例访问静态方法、Handles绑定事件、On Error处理异常、Object直接后期绑定等等。VB和C#语言,编译出来的是同样的CIL,但为什么VB支持很多有趣的特性呢。我们一起来探究一下。
4.21局部静态变量
VB支持用Static关键字声明局部变量,这样在过程结束的时候可以保持变量的数值:
Public Sub Test1()
Static i As Integer
i += 1 '实现一个过程调用计数器
End Sub
我们实现了一个简单的过程计数器。每调用一次Test,计数器的数值就增加1。其实还有很多情况我们希望保持变量的数值。而C#的static是不能用在过程内部的。因此要实现过程计数器,我们必须声明一个类级别的变量。这样做明显不如VB好。因为无法防止其他过程修改计数器变量。这就和对象封装一个道理,本来应该是一个方法的局部变量,现在我要被迫把它独立出来,显然是不好的设计。那么VB是怎么生成局部静态变量的呢?将上述代码返汇编,我们可以清楚地看到在VB生成的CIL中,i不是作为局部变量,而是作为类的Field出现的: .field private specialname int32 $STATIC$Test1$2001$i
也就是说,i被改名作为一个类的字段,但被冠以specialname。在代码中试图访问$STATIC$Test1$2001$i是不可能的,因为它不是一个有效的标识符。但是在IL中,将这个变量加一的代码却与一般的类字段完全一样,是通过ldfld加载的。我觉得这个方法十分聪明,把静态变量变成生命周期一样的类字段,但是又由编译器来控制访问的权限,让它成为一个局部变量。同时也解释了VB为什么要用两个不同的关键字来声明静态变量——Static和Shared。由于局部静态变量的实质是类的字段,所以它和真正的局部变量还是有所不同的。比如在多线程条件下,对局部静态变量的访问就和访问字段相同。
4.2.2Handles和WithEvents
VB除了可以用C#那样的方法来处理事件响应以外,还有从VB5继承下来的独特的事件处理方式——WithEvents。
我喜欢称这种事件处理方式为静态的事件处理,书写响应事件的方法时就已经决定该方法响应的是哪一个事件,而C#则是在代码中绑定事件的。VB中WithEvents静态方法是非常有用的,它可以显著增强代码可读性,同时也让VB.net中的事件处理非常方便,不像C#那样离开了窗体设计器就必须手工绑定事件。
4.2.3类型转换运算符
在Visual Basic 2005中将加入一个新的运算符——TryCast,相当于C#的as运算符。我一直希望VB有这样一个运算符。VB目前的类型转换运算符主要有CType和DirectCast。他们的用法几乎一样。我详细比较了一下这两个运算符,得出以下结论:
1.在转换成引用类型时,两者没有什么区别,都是直接调用castclass指令,除非重载了类型转换运算符CType。DirectCast运算符是不能重载的。
2.转换成值类型时,CType会调用VB指定的类型转换函数(如果有的话),比如将String转换为Int32时,就会自动调用。
4.2.4默认属性和属性参数
在原先的VB6里,有一项奇特的功能——默认属性。在VB6中,对象的名称可以直接表示该对象的默认属性。
4.2.5可选参数和按名传递
VB从4.0开始支持“可选参数”这一特性。就是说,函数或子程序的参数有些是可选的,调用的时候可以不输入。其实VB从1.0开始就有一些函数带有可选参数,只不过到了4.0才让用户自己开发这样的过程。在VB4里,可选参数可以不带默认值,而在VB里,如果使用可选参数,则必须带有默认值。在调用的时候,VB若发现参数被省略,则自动读取.param部分的默认值,并显式传递给过程。这一部分完全由编译器处理,而且没有任何性能损失,和手工传递所有参数是完全一样的。至于按名传递,VB会自动调整参数的顺序,其结果与传统方式的传递也没有任何的不同。这说明我们可以放心地使用这项便利。而且带有可选参数的过程拿到C#中,顶多变成不可选参数,也不会造成什么其他的麻烦。
PS.很多COM组件都使用了默认参数,而且有些过程的参数列表非常长,在VB里可以轻松地处理它们,而在C#中经常让开发者传参数传到吐血。
4.2.6在经过对比之后可得以下一个结论:
1.目前的主流编程语言没有简单的,如果你想学精通的话。
2.VB的门槛比较低,编程思想较容易接受。
3.学习C不能短期内见到成效。
4.据用户调查69%的考生觉得VB更容易接受
致谢
在本次课程设计中,我从指导老师牛荣和李鹏身上学到了很多东西。老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。
另外,在游戏开发过程中化希耀老师和杜义君老师也给于我们很大的帮助,帮助解决了不少的难点,使得游戏能及时开发完成,还有所有的同学同样给与我不少帮助,这里一并表示感。
参考文献:
[1]Vsual Basic 程序设计教程 作者:龚沛曾,陆慰民,杨志强 高等教育出版社出版
[2]Vsual Basic 6.0程序设计 作者:刘新民,蔡琼,白糠生 清华大学出版社出版
[3]80例上手 VB6 编程 作者:唐凯军,汤惠莉 山东电子音像出版社
[4]Vsual Basic 实例教程 作者:卢毅 科学出版社出版
[5]Vsual Basic 经典范例50讲 作者:赵欣胜,亢慧娟,刘晟宏 科学出版社出版
vb.net哪本教材 比较好?
Wrox红皮的《Visual Basic 2010 入门经典》还是不错的,毕竟是比较权威的书。不过这个还是要靠兴趣和编程量的。我觉得作为教材的书基础一点就可以了,有深度的可以作为课下资料或者上网查。个人觉得多编一些实际一点的有意思的程序比较好吧
解放军军事经济学院考研
专业课命题参考书目 科目代码 科目名称 参 考 书 目 601 军事学基础 《军事学基础》海潮出版社2005年版 801 经济学基础 《西方经济学》高鸿业主编,中国人民大学出版社2007年第四版《公共部门经济学》黄瑞新主编,海潮出版社2006年版 802 管理学基础 《管理学:技能与应用(第11版)》(中文版)刘松柏译,北京大学出版社2006年版 803 会计学基础 《基础会计学》杨仕鹏、余家健主编,海潮出版社2005年版《财务会计学》李汉兴主编,军事经济学院2008年版 804 军需管理 《被装勤务学》李刚主编,海潮出版社2006年版《给养勤务学》匡应新主编,解放军出版社2008年版 805 审计学基础 《审计学原理》肖文八主编,军事科学出版社,2005年版《计算机审计》陈雄智主编,军事经济学院,2007年版 806 军队管理基础 《军队管理学》王京朝、方宁主编,军事科学出版社2004年版《军队管理规律研究》王安主编,解放军出版社2001年版 807 军事后勤基础理论 《战术后勤学》马峦主编,海潮出版社2006年版《后勤机关工作》王少文主编,解放军出版社2008年版 808 军需装备学 《被装装备学》张前枝主编,海潮出版社2005年版《营养与食品学》杨文学主编,解放军出版社2003年版《饮食装备实用教程》盛四联主编,海潮出版社2005年版 809 运筹学基础 《运筹学教程》胡运权著,清华大学出版社2003年版《运筹学》徐渝编著,清华大学出版社2005年版或徐裕生、张海英主编,北京大学出版社 901 高科技产业研究 《国防科学技术论》温熙森主编,国防科学技术大学出版社1997年版《产业经济学》芮明杰主编,上海财大出版社2005年版 902 军费与资产管理 《军事财政概论》夏济人主编,海潮出版社2003年版《军事资产管理》朱连清主编,海潮出版社2002年版《国防预算系统研究》李英成著,海潮出版社2001年版 903 国防经济理论与实务 《现代军事经济学通论》陈代兴主编,军事科学出版社2004年版《中国国防经济理论与实践》徐勇主编,军事科学出版社2008年版《管理学》(第四版)周三多主编,复旦大学出版社2004年版 904 军队采购与物流理论 《军队物资勤务学》李海初、杨腾驰主编,解放军出版社2004年版《军队采购学》万毅主编,解放军出版社2004年版《军事物流学》王丰等主编,中国物资出版社2003年版 905 装备财务管理与装备会计 《装备财务管理研究》黄毓义主编,军事科学出版社2003年版《军队会计学》方正起主编,海潮出版社2006年版《成本会计学》胡黎雪主编,海潮出版社2006年版 906 战争动员学 《国防动员学教程》朱庆林、李歌梁主编,军事科学出版社2007年版 907 军事运筹理论 《军事运筹学》张最良编,军事科学出版社1993年版《军事运筹学教程》李长生编著,军事科学出版社1998年版或《军事运筹学教程》董树军主编,蓝天出版社2006年版 908 新时期军队管理理论与实践 《后勤管理科学化》范吉昌主编,解放军出版社2008年版《军队基层管理》李士春主编,解放军出版社2003年版 909 军队后勤建设与保障 《面向信息化战争的军队后勤建设》熊德禹主编,海潮出版社2006版《合同战术》陈新文主编,军事科学出版社2006年版 910 军需勤务学 《军需勤务学》谢守和主编,解放军出版社2005年版 911 军队财务管理 《军队财务管理学》熊友存主编,解放军出版社2006年版 912 军人保险理论 《社会保障理论》李珍主编,中国劳动社会保障出版社2001年版《军人保险概论》黄瑞新主编,解放军出版社2004年版 913 军队会计学 《军队会计学》方正起主编,海潮出版社2008年版《军队会计实务》何松明主编,解放军出版社2007年版《军队会计研究》方正起主编,军事经济学院2008年版 914 军队财务管理信息系统 《军队财务信息系统应用》刘志峰等主编,海潮出版社2008年版《VB程序设计教程》龚沛曾主编,高等教育出版社2007年版 915 建设工程造价管理 《建设工程造价管理》周述发主编,武汉理工大学出版社2008年版《工程造价管理》郭婧娟主编,清华大学出版社2006年版 916 战时军需勤务 《战时军需勤务学》李茂信主编,解放军出版社2006版 917 军队审计学 《军队审计学》肖文八主编,军事科学出版社,2007年版《军队基本建设审计》于吉全主编,军事经济学院,2008年版《战时审计概论》欧阳程等编,解放军出版社,2004年版
麻烦采纳,谢谢!
vb二级考试范围
2007年9月全国计算机二级VB试题
一、选择题(每小题2分,共70分)
下列各题A) 、B) 、C) 、D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
(1)软件是指
A)程序 B)程序和文档
C)算法加数据结构 D)程序、数据与相关文档的完整集合
(2)软件调试的目的是
A)发现错误 B)改正错误
C)改善软件的性能 D)验证软件的正确性
(3)在面向对象方法中,实现信息隐蔽是依靠
A)对象的继承 B)对象的多态
C)对象的封装 D)对象的分类
(4)下列叙述中,不符合良好程序设计风格要求的是
A)程序的效率第一,清晰第二 B)程序的可读性好
C)程序中要有必要的注释 D)输入数据前要有提示信息
(5)下列叙述中正确的是
A)程序执行的效率与数据的存储结构密切相关
B)程序执行的效率只取决于程序的控制结构
C)程序执行的效率只取决于所处理的数据量
D)以上三种说法都不对
(6)下列叙述中正确的是
A)数据的逻辑结构与存储结构必定是一一对应的
B)由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构
C)程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构
D)以上三种说法都不对
(7)冒泡排序在最坏情况下的比较次数是
A)n(n+1)/2 B)nlog2 n C)n(n-1)/2 D)n/2
(8)一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为
A)219 B)221 C)229 D)231
(9)下列叙述中正确的是
A)数据库系统是一个独立的系统,不需要操作系统的支持
B)数据库技术的根本目标是要解决数据的共享问题
C)数据库管理系统就是数据库系统
D)以上三种说法都不对
(10)下列叙述中正确的是
A)为了建立一个关系,首先要构造数据的逻辑关系
B)表示关系的二维表中各元组的每一个分量还可以分成若干数据项
C)一个关系的属性名表称为关系模式
D)一个关系可以包括多个二维表
(11)要使一个文本框可以显示多行文本,应设置为True的属性是
A)Enabled B)MultiLine C)MasLenfth D)Width
(12)在窗体上有一个名为Text1的文本框。当光标在文本框中时,如果按下字母键“A”,则被调用的事件过程是
A)Form_KeyPress() B)Text1_LostFocus()
C)Text1_Click() D)Test1_Change()
(13)设在窗体上有一个名称为Command1的命令按钮和一个名称为Text1的文本框。要求单击Command1按钮时可把光标移到文本框中。下面正确的事件过程是
A)Private Sub Command1_Click() B)Private Sub
Text1.GotFocus Command1.GotFocus
End Sub EndSub
C)Private Sub Command1_Click() D)Private Sub
Text1.SetFocus Command1.SetFocus
End Sub End Sub
(14)执行以下程序后输出的是
Private Sub Command1_Click()
Ch$=”AABCDEFGH”
Print Mid(Righ(ch$,6),Len(left(ch$,4)),2)
End Sub
A)CDEFGH B)ABCD C)FG D)AB
(15)设在窗体Form1上有一个列表框List1,其中有若干个项目。要求单击列表框中某一项时,把该项显示在窗体上,正确的事件过程是
A)Prvate Sub List1_Click() B)Private Sub Form1_Click()
Print List1.Text Print List1.Text
End Sub End Sub
C)Private Sub List1_Click() D)Private Sub Form1_Click()
Print Form1.Text List1.Print List1.Text
End Sub End Sub
(16)若窗体上的图片框中有一个命令按钮,则此按钮的Left属性是指
A)按钮左端到窗体左端的距离 B)按钮左端到图片框左端的距离
C)按钮中心点到窗体左端的距离 D)按钮中心点到图片框左端的距离
(17)为使程序运行时通用对话框CD1上显示的标题为“对话框窗口”,若通过程序设置该标题,则应使用的语句是
A)CD1.DialogTitle=“对话框窗口” B)CD1.Action=“对话框窗口”
C)CD1.FileName=“对话框窗口” D)CD1.Filter=“对话框窗口”
(18)在窗体上有如右图所示的控件,各控件的名称
与其标题相同,并有如下程序:
Private Sub Form_Load()
Command2.Enabled=False
Check1.Value=1
End Sub
刚运行程序时,看到的窗体外观是:
(19)设在窗体中有一个名称为List1的列表框,其中有若干个项目(如图)。要求选中某一项后单击Command1按钮,就删除选中的项,则正确的事件过程是
A)Private Sub Command1_Click()
List1.Clear
End Sub
B) Private Sub Command1_Click()
List1.Clear List1.ListIndex
End Sub
C) Private Sub Command1_Click()
List1.Removeltem List1.ListIndex
End Sub
D) Private Sub Command1_Click()
List1.Removeltem
End Sub
(20)某人设计了如下程序用来计算并输出7!(7的阶乘)
Private Sub Command1_Click()
t=0
For k=7 To 2 Step -1
t=t*k
Next
Print t
End Sub
执行程序时,发现结果是错误的,下面的修改方案中能够得到正确结构的是
A)把t=0改为t=1
B)把For k = 7 To 2 Step -1改为For k =7 To 1 Step -1
C)把For k = 7 To 2 Stip-1改为Fork=1 To 7
D)把Next改为Nexi k
(21)若窗体中已经有若干个不同的单选按钮,要把它们改为一个单选按钮数组,在属性窗口中需要且只需要进行的操作是
A)把所有单选按钮的Index属性改为相同值
B)把所有单选按钮的Index 属性改为连续的不同值
C)把所有单选按钮的Caption属性值改为相同
D)把所有单选按钮的名称改为相同,且把它们的Index属性改为连续的不同值。
(22)窗体上有文本框Text1和一个菜单,菜单标题、名称如表,结构见图。要求程序执行时单击“保存”菜单项,则把其标题显示在Text1文本框中。下面可实现此功能的事件过程是:
标题 名称
文件 file
新建 new
保存 save
A)Private Sub save_Click() B)Private Sub save_Click()
Text1.Text=file.save.Caption Text1.Text=save.Caption
End Sub End Sub
C)Private Sub file_Click() D)Private Sub file_Click()
Text1.Text=file.save.Caption Text1.Text=save.Caption
End Sub End Sub
(23)某人在窗体上画了一个名称为Timer1的计时器和一个名称为Lab
的属性设置为Enabled=True, Interval=0,并编程如下。希望在每2秒在标签上显示一次系统当前时间。
Private Sub Timer1_Timer()
Label1.Caption=Time$
End Sub
在程序执行时发现未能实现上述目的,那么,他应做的修改是
A)通过属性窗口把计时器的Interval属性设置为2000
B)通过属性窗口把计时器的Enabled属生设置为False
C)把事件过程中的Label1.Caption=Time$语句改为Timer1.Interval=Tims$
D)把事件过程中的Label1.Caption=Time$语句改为Label1.Caption=Timer1.Time
(24)形状控件的Shape属性有6种取值,分别代表6种几何图形。下列不属于这6种几何图形的是
(25)下面关于文件的叙述中错误的是
A)随机文件中各条记录的长度是相同的]
B)打开随机文件时采用的文件存取方式应该是Random
C)向随机文件中写数据应使用语句Print#文件号
D)打开随机文件与打开顺序文件一样,都使用Open语句
(26)设窗体上有一个图片框Picture1,要在程序运行期间装入当前文件夹下的图形文件File1.jpg,能实现此功能的语句是
A)Picture1.Picture=”Flie1.jpg
B)Picture1.Picture=LoadPicture(“File1.jpg”)
C) LoadPicture(“File1.jpg”)
D)Call LoadPicture(“File1.jpg”)
(27)下面程序执行时,在窗体上显示的是
Private Sub Command1_Click()
Dim a(10)
For k = 1 To 10
a(k) = 11 – k
Next k
Print a(a(3)\a(7) Mod a(5))
End Sub
A)3 B)5 C)7
(28)为达到把a、b中的值交换后输出的目的,某人编程如下:
Private Sub Command1_Click()
a% = 10:b% = 20
Call swap(a,b)
Print a,b
End Sub
Private Sub swap(ByVal a As Integer,ByVal b As Integer)
c= a:a=b:b=c
End Sub
在运行时发现输出结果错了,需要修改。下面列出的错误原因和修改方案中正确的是
A)调用swap过程的语句错误,应改为Call swap a,b
B)输出语句错误,应改为:Print ”a”,”b”
C)过程的形式参数有错,应改为:swap(ByRef a As Integer,ByRef b As Integer)
D)swap中3条赋值语句的顺序是错误的,应改为a=b:b=c:c=a
(29)有如下函数:
Function fun(a As Integer,n As Integer) As Integer
Dim m As Integer
While a =n
a=a-n
m= m+1
Wend
fun=m
End Function
该函数的返回值是
A)a乘以n的乘积 B)a加n的和
C)a减n的差 D)a除以n的商(不含小数部分)
(30)下面程序的输出结果是
Private Sub Command1_Click()
ch$=”ABCDEF”
proc ch
Print ch
End Sub
Private Sub proc(ch As String)
S=””
For k=Len(ch) To 1 Step-1
s=sMid(ch,k,1)
Next k
ch=s
End Sub
A)ABCDEF B)FEDCBA C)A D)F
(31)某人编写了一个能够返回数组a中10个数中最大数的函数过程,代码如下:
Function MaxValue(a() As Integer) As Integer
Dim max%
max=1
For k = 2 To 10
If a(k)a(max) Then
max = k
End If
Next k
MaxValue = max
End Function
程序运行时,发现函数过程的返回值是错的,需要修改,下面的修改方案中正确的是
A)语句max = 1应改为max = a(1)
B)语句For k = 2 To 10应改为For k = 1 To 10
C)If语句中的条件a(k)a(max)应改为a(k)max
D)语句MaxValue = max 应改为MaxValue = a(max)
(32)在窗体上画一个名称为Command1的命令按钮,并编写以下程序:
Private Sub Command1_Click()
Dim n%,b,t
t = 1:b = 1:n = 2
Do
b = b*n
t = t + b
n = n +1
Loop Until n9
Print t
End Sub
此程序计算并输出一个表达式的值,该表达式是
A)9! B)10! C)1!+2!+…+9! D)1!+2!+…+10!
(33)有一个名称为Form1的窗体,上面没有控件,设有以下程序(其中方法Pset(X,Y)的功能是在坐标X,Y处画一个点):
Dim cmdmave As Boolean
Private Sub Form_MouseDown(Button As Integer,Shift As Integer, X As Single,Y As Single)
cmdmave = True
End Sub
Private Sub Form_MouseMove(Button As Integer,Shift As Integer, X As Single, Y As Single)
If cmdmave Then
Form1.Pset(X,Y)
End If
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single,Y As Single)
cmdmave = False
End Sub
此程序的功能是
A)每按下鼠标键一次,在鼠标所指位置画一个点
B)按下鼠标键,则在鼠标所指位置画一个点;放开鼠标键,则此点消失
C)不按鼠标键而拖动鼠标,则沿鼠标拖动的轨迹画一条线
D)按下鼠标键并拖动鼠标,则沿鼠标拖动的轨迹画一条线,放开鼠标键则结束画线
(34)某人设计了下面的函数fun,功能是返回参数a中数值的位数
Function fun(a As Integer) As Integer
Dim n%
n = 1
While a \ 10 = 0
n = n + 1
a = a \ 10
Wend
fun = n
End Function
在调用该函数时发现返回的结果不正确,函数需要修改,下面的修改方案中正确的是
A)把语句n = 1改为n = 0
B)把循环条件a \ 10 = 0改为a \ 10 0
C)把语句 a = a \ 10改为a = a Mod 10
D)把语句fun = n改为 fun = a
(35)在窗体上有一个名称为Check1的复选框数组(含4个复选框),还有一个名称为Text1的文本框,初始内容为空。程序运行时,单击任何复选
框,则把所有选中的复选框后面的方字罗列在文本框中(见图)。下面能实现此功能的事件过程是
A)Private Sub Check1_Click(Indes As Integer)
Text1.Text =""
For k = 0 To 3
If Check1(k).value = 1 Then
Text1.Text = Text1.Text Check1(k).Caption " " '双引号中是空格
End If
Next k
End Sub
B)Private Sub Check1_Click(Index As Integer)
For k = 0 To 3
If Check1(k).Value = 1 Then
Text1.Text = Text1.Text Check1(k).Caption " " '双引号中是空格
End If
Next k
End Sub
C)Private Sub Check1_Click(Index As Integer)
Text1.Text = ""
For k = 0 To 3
If Check1(k).Value = 1 Then
Text1.Text = Text1.Text Check1(Index).Caption " " '双引号中是空格
End If
Next k
End Sub
D)Private Sub Check1_Click(Index As Integer)
Text1.Text = ""
For k = 0 To 3
If Check1(k).Value = 1 Then
Text1.Text = Text1.Text Check1(k).Caption " " '双引号中是空格
Exit For
End If
Next k
End Sub
二、填空题(每空2分,共30分)
请将每空的正确答案写在答题卡[1]~[15]序号的横线上,答在试卷上不得分。
(1)软件需求规格说明书应具有完整性,无岐义性、正确性、可验证性、可修改性等特征,其中最重要的是【1】 。
(2)在两种基本测试方法中,【2】 测试的原则之一是保证所测模块中每一个独立路径至少执行一次。
(3)线性表的存储结构主要分为顺序存储结构和链式存储结构。队列是一种特殊的线性表,循环队列是队列的【3】 存储结构。
(4)对下列二叉树进行中序遍历的结果为【4】 。
(5)在E-R图中,矩形表示【5】 。
(6)窗体上有一个组合框,其中已输入了
若干个项目。程序运行时,单击其中一
项,即可把该项与最上面的一项交换。
例如:单击图1中的“重庆”,则与“北
京”交换,得到图2的结果。下面是可
实现此功能的程序,请填空。
Private Sub Combo1_Click()
Dim temp
temp = Combo1.Text
[6] = Combo1.List(0)
Combo1.List(0) = temp
End Sub
(7)设窗体上有一个名称为HScroIII的水平滚动条,要求当滚动块移动位置后,能够在窗体上输出移动的距离(即新位置与原位置的刻度值之差,向右移动为正数,向左移动为负数)。下面是可实现此功能的程序,请填写。
Dim [7] As Integer
Private Sub Form_Load()
pos=HScroIII.Value
End Sub
Private Sub HScroIII_Change()
Print [8] -pos
pos=HScroIII.Value
End Sub
(8)设窗体上有一个名称为CD1的通用对话框,一个名称为Text1的文本框和一个名称为Command1的命令按钮。程序执行时,单击Command1按钮,则显示打开文件对话框,操作者从中选择一个文本文件,并单击对话框上的“打开”按钮后,则可打开该文本文件,并读入一行文本,显示在Text1中。下面是实现此功能的事件过程,请填空。
Private Sub Command1_Click()
CD1.Filter ="文本文件1*.txt(Word 文档)*.doc"
CD1.Filterinder = 1
CD1.ShowOpen
If CD1.FileName""Then
Open [9] For Input As #1
Line Input #1,ch$
Close #1
Text1.Text = [10]
End If
End Sub
(9)下面的程序执行时,可以从键盘输入一个正整数,然后把该数的每位数字按逆序输出。例如:输入7685,则输出5867,输入1000,则输出0001。请填空。
Private Sub Command1_Click()
Dim x As Integer
x=InputBox(“请输入一个正整数”)
While x__[11]___
Print x Mod 10;
x=x\10
Wend
Print__[12]__
End Sub
(10)有如图所示的窗体。程序执行时先在Text1文本框中输入编号,当焦点试图离开Text1时,程序检查编号的合法性,若编号合法,则焦点可以离开Text1文本框;否则,显示相应错误信息,并自动选中错误的字符,且
焦点不能离开Text1文本框(见图)。
合法编号的组成是:前2个字符是大写英文
字母,第3个字符是“-”,后面是数字字符
(至少1个)。下面程序可实现此功能,请
填空。
Private Sub Text1_Lostfocus()
Dim k%,n%
n=Len( [13] )
For k=1 to if (n3,n,4)
c=Mid(Text1. Text,k,1)
Select Case k
Case 1,2
If c"A" Or c"Z" Then
MsgBox("第"k"个字符必须是大写字母!")
SetPosition k
Exit For
End If
Case 3
If c"-" Then
MsgBox("第"k"个字符必须是字符"'"-"'")
SetPosition k
Exit For
End If
Case Else
If c"0" Or c"9" Then
MsgBox("第"k"个字符必须是数字!")
SetPosition k
Exit For
End If
End Select
Next k
End Sub
Private Sub SetPosition(pos As Integer)
Text1.SelStart=pos-1
Text.SelLength= [14]
Text1. [15]
End Sub
2007年9月全国计算机等级考试二级VB参考答案
一、选择题
1-5 DBCAA
6-10 CCABA
11-15 BDCCA
16-20 BAACA
21-25 DBABC
26-30 BDCDB
31-35 DCDBA
二、填空题
1、无歧义性
2、白盒测试
3、顺序
4、ACBDFEHGP
5、实体集
6、Combol1.List(Combol1.ListIndex)
7、pos
8、HScroll1.value
9、CD1.FileName
10、ch
11、10
12、x
13、Text1.Text
14、1
15、SetFocus
这个应该不错,你可以下载看看,不过要先注册一下,呵呵