Visual Basic实验-答案(3)

更新时间:2024-04-19 23:24:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

学院 专业 (班级) 姓名 学号 任课教师

1

目录

实验一 Visual Basic编程环境和控件 ...................... 1 实验二 窗体及基本控件使用 ............................... 7 实验三 顺序结构程序设计 ................................ 14 实验四 选择结构程序设计 ................................ 20 实验五 选择结构程序设计(续) ........................... 25 实验六 循环结构程序设计 ................................ 33 实验七 循环结构程序设计(续) ........................... 38 实验八 常用控件 ....................................... 42 实验九 常用控件(续) .................................. 51 实验十 数组 .......................................... 56 实验十一 数组(续) .................................... 65 实验十二 顺序文件 ...................................... 70 实验十三 过程 ......................................... 77 实验十四 过程(续) .................................... 84 实验十五 菜单及通用对话框 ............................... 90 实验十六 随机文件(选作) ............................... 94 附录:VB统考编程题(精选) ............................... 98 期末自测题(A卷) ..................................... 108 期末自测题(B卷) ..................................... 113

2

实验报告的整理与编写

上机实验结束后,编写实验报告是软件工程的要求,也是培养科学作风的重要途径,实验报告的主要内容包括:

(1)实验目的

实验作为教学的一个重要环节,其目的在于更深入地理解和掌握课程教学中的有关基本概念,应用基本技术解决实际问题,从而进一步提高分析问题和解决问题的能力。因此,当我们着手做一个实验的时候,必须明确实验的目的,以保证达到课程所指定的基本要求。在写实验报告时,要进一步确认是否达到了预期的目的。

(2)实验内容

实验的目的是要通过解决一些具体问题来达到的。在书中,每一部分都安排了多个实验题目,根据教学安排、进度、实验条件、可提供的机时、学生的基础等因素,可以选择其中的几个或全部。因此,在实验报告中,实验内容是指本次实验中实际完成的内容。在每一个实验题目中,一般都提出一些具体要求,其中有些具体要求是为了达到实验目的而提出的,不仅有具体的实验题目,还应包括具体要求。

(3)程序设计说明

包括算法设计思路,必要的流程图,界面设计说明、使用模块及变量的说明等。 (4)源程序代码

Visual Basic的源程序包括界面设计和代码。程序设计的产品是程序,它应与算法或流程图相一致,要与用户界面设计一致。程序要有具有易读性,符合结构化原则。

(5)程序的运行结果(包括对不同测试数据的运行结果)

程序运行结果一般是输出语句所输出的结果。对于不同的输入,其输出的结果是不同的。因此,在输出结果之前一般还应注明输入的数据,以便对输出结果进行分析和比较。

3

在程序的运行中,还必须用各种不同情况的数据进行调试,以检查程序能否正常运行。因为,有时程序对某些情况是可以正常运行的,而对某些特殊情况的数据可能会出现运行出错或死机,通过各种数据的调试,尽量做到程序不会出问题。

(6) 实验体会

分析和体会实验中碰到的问题及解决方法,这是实验报告中最重要的一项,也是最容易忽视的一项。实验过程中大量的工作是程序调试,在调试过程中会遇到各种各样的问题,每解决一个问题就能积累一点经验,提高自己的编程能力。因此,对实验的总结,最主要的是程序调试经验的总结。调试分析也包括对结果的分析。体会主要是指通过本次实验是否达到了实验目的,有哪些基本概念得到了澄清,碰到了那些以前没有见到的问题,最后采用什么方法得到解决等。

4

实验日期 年 月 日

实验一 Visual Basic编程环境和控件

一、实验目的

1、掌握启动与退出Visual Basic的方法。 2、掌握Visual Basic语言程序的开发环境. 3、掌握Visual Basic语言程序设计的方法与特点

4、掌握建立、编辑、运行和保存一个简单的Visual Basic应用程序的全过程。

二、实验内容

申请一个免费邮箱(如果已经有邮箱,请跳过),以便以后将每星期编制的程序压缩并存放在邮箱中(或者保存在U盘中),以便复习时用。

1. 创建第一个应用程序。编写一个简单程序,实现单击命令按钮时在文本框显示“单击命令按钮”,单击窗体空白处时在文本框显示“单击窗体”。 保存窗体文件名:SY1_1.frm,保存工程名:SY1_1.vbp。程序界面如图1 1.

所示。 图1.1 实验1的运行界面

【步骤】

① 启动Visual Basic6.0,在弹出的“新建工程”对话框中选择“标准EXE”。 ② 在窗体上建立一个文本框和一个命令按钮。

建立方法:在左边工具箱上,单击要绘制的控件的按钮,再把鼠标移到窗体,

按住鼠标左键画出所需大小的框体。或者是双击工具箱的要绘制的控件的按钮。 ③ 分别选中命令按钮和文本框,在属性窗口中对各属性进行设置,属性设置参照表:

1

表1.1 实验1属性设置

对象名称 窗体 文本框 命令按钮 属性 Caption Text Caption 属性值 我的第一个程序 (空) 命令按钮 ④ 双击命令按钮,进入代码窗口中命令按钮的默认事件,编写代码如下:

Private Sub Command1_Click()

Text1.Text = \单击命令按钮\ End Sub

⑤ 双击窗体的空白处,进入代码窗口中窗体的默认事件(Form_Load()),在右边的过程列表框中选择Click,,编写代码如下:

Private Sub Form_Click()

Text1.Text = \单击窗体\ End Sub

⑥ 单击工具栏上的

按钮,运行程序,分别单击命令按钮以及窗体空白处,观察

文本框上显示的内容有何变化。如果程序代码有错误,则进入代码窗口中调试程序。 ⑦ 单击工具栏上的⑧ 单击工具栏上的

盘上。

2. 建立一个应用程序, 界面如图1.2所示,窗体包含有一个文本框和三个按钮,要求文本框中的字体为14号黑体加粗,颜色为红色,且文本内容居中显示。编写代码实现:

按钮,结束程序运行。

按钮,将窗体、工程分别以SY1_1.frm、SY1_1.vbp保存在磁

图1.2 实验2 的运行界面

1)按“显示内容”按钮时,文本框显示“Hello,Visual Basic!”; 2)按“清屏”按钮时,文本框中文字消失;

2

3)按“结束”按钮后,程序结束。(提示:代码中输入End,则可结束应用程序运行) 保存窗体文件名:SY1_2.frm,保存工程名:SY1_2.vbp。

表1.2 实验2属性设置

对象名称 窗体Form1 属性 Caption Text Alignment Font ForeColor Caption Caption Caption 显示内容 清屏 结束 属性值 文本框Text1 命令按钮Command1 命令按钮Command2 命令按钮Command3

编写代码如下:

代码

遇到的主要问题及分析:

3、P260 实验A 。二、3.编写一程序,在文字框中统计在该窗口上鼠标单击的次数。设计和运行界面如图1.3所示。完成后自己取名保存。

图1.3 实验3 设计界面 运行界面

3

编写代码如下:

代码

遇到的主要问题及分析:

【提高题】 P259 实验A 。二、1. 编写一程序,要求在屏幕上显示“欢迎学习Visual Basci”,并在“请输入你的姓名”标签后的文本框Text1中输入姓名;单击“你输入的姓名是”按钮,则在Label3标签上显示在文本框Text1中输入的姓名。窗体如图1.4所示。 Label1 调整控件的大小使内容显示为两行 Label2 Command1 图1.4 提高题 的运行界面

Text1 Label3 将BorderStyle属性设置为1

编写代码如下:

代码

遇到的主要问题及分析:

【选作题】窗体上有两个名称分别为C1, C2的命令按扭,一个文本框Text1。命令按

钮的标题及文本框上显示的字符自定。编程实现当按下C1时,将C2的标题与Text1中

4

的内容交换。要求:

1)界面自己设计 2)连续多次单击C1,都能将C2的标题与Text1中的内容交换。 设计的界面如下:

编写代码如下:

代码

遇到的主要问题及分析:

实验心得体会

5

成绩: 教师签名:

6

实验日期 年 月 日

实验二 窗体及基本控件使用

一、实验目的

1、复习启动与退出Visual Basic的方法。

2、掌握窗体基本的事件、方法和属性,并学会在不同的事件的过程中,编写代码。 3、掌握文本框和标签两种控件的使用,掌握文本框和标签控件的常用属性、事件和方法。以及它们之间的区别。

4、掌握命令按钮控件的常用属性、事件和方法。

二、实验内容

1、设计一个程序(如图2.1所示),用窗体模拟黑板,窗体上没有最大化、最小化按钮;鼠标单击窗体时窗体上输出提问,双击时显示回答。

分析:把窗体装扮成黑板模样,要设置窗体的BackColor属性为黑色,ForeColor属性为白色(模拟粉笔字的颜色)。窗体上没有最大化、最小化按钮,则需要设置窗体的MaxButton、MinButton属性。而单击、双击时的输出显示,可以在Click、DblClick事件里用Print和Cls方法来实现。

(a)设计状态

1) 属性设置

(d)窗体双击

(b)运行状态 (c)窗体单击

图2.1 实验2.1模拟黑板

表2.1 实验1属性设置

对象名称 窗体Form1 属性 BackColor ForeColoFont 属性值 vbBlack Vbwhite 7

MaxButton MinButton

2)代码编写

False False

代码

Private Sub Form_Load() Form1.Caption = \模拟黑板\End Sub

Private Sub Form_Click() Cls

Print \End Sub

Private Sub Form_DblClick() Cls

Print \End Sub

【思考】

遇到的主要问题及分析:

如果进一步要求随机出题(简单的数学四则运算题)在窗体上输出并显示答案,该怎么做

Private Sub Form_Click() Dim a As Integer, b As Integer a = Int(Rnd * 10) b = Int(Rnd * 10)

Print a; \‘减法等同理 End Sub

2、窗体上有一个文本框Text1,要求当鼠标划过文本框Text1时,鼠标显示Cross“┼”形状;窗体上的一个标题为“复制”的命令按钮C1。通过属性窗口实现以上的设置之后,编程实现:

1)程序启动时窗体标题为“修改文本框内容”;

2)单击命令按钮C1,则把按钮上的标题复制到文本框,并使按钮不可见; 3)单击窗体空白处,按钮可见但不可用。

8

? 必要属性设置

表2.2 实验2属性设置

对象名称 属性 mousepointer caption 属性值 2-cross Text1 C1

? 代码编写

复制 代码

Private Sub Form_Load()

Form1.caption= “修改文本框内容” End Sub

Private Sub C1_Click() Text1 = C1.Caption C1.Visible = False End Sub

Private Sub Form_Click() C1.Visible = True C1.Enabled = False End Sub

遇到的主要问题及分析:

3、窗体上有四个文本框,两个标题分别为“显示选中信息”“选中文本”的命令按钮。要求程序运行时,光标焦点在Text1上,按下Tab键后,光标焦点跳到在Text3上。在文本框

Text1中输入一些字符;要求编程实现: 图2.2 实验2.3文本信息选定窗体

1)在文本框Text1中输入一行文字并按回车(Enter)后,把Text1的内容设置为窗体的标题。

2)在Text1中选中其中一部分内容后,单击“显示选中信息”命令按钮,则把在Text1

9

中被选中文本的第一个字符的顺序号,被选中文本的字符个数,被选中的文本内容分别显示在文本框Text2,Text3,Text4中。

3)分别在文本框Text2,Text3中输入你所希望文本框Tex1中选中文本信息的顺序号以及长度,单击“选中文本”命令按钮,则根据文本框Text2,Text3输入的内容,在Text1中选中对应的内容,同时在Text4中显示出来。

【提示】部分相关属性和事件:SelStart、SelLength、SelText、KeyPress

? 必要的属性设置

表2.3 实验3属性设置

对象名称 Text1 Text2 Text3 Text4 Command1 Command2 Text1 Text3 或者Text2

? 代码编写

属性 text text text text caption caption tabindex tabindex tabstop 属性值 “” “” “” “” 显示选中信息 选中文本 0 1 false 代码

Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Form1.Caption = Text1 End Sub

Private Sub Command1_Click() Text2 = Text1.SelStart Text3 = Text1.SelLength Text4 = Text1.SelText End Sub

Private Sub Command2_Click() Text1.SelStart = Text2 Text1.SelLength = Text3 Text4 = Text1.SelText End Sub

或者 Private Sub Text1_LostFocus()

Text3.SetFocus End Sub

遇到的主要问题及分析:

10

【提高题1】创建VB工程,运行时可将文本框中的文字缩小以及还原。

窗体中包括下列控件:标签、文本框和两个命令

按钮,窗体标题为“字符缩小”,文本框字号为30磅。 图2.3 实验提高1窗体

在文本框输入一串字符;按下“缩小”按钮时字号缩小为原来的一半(每按一下都会缩小为一半),界面如右图。

请完善以下代码:

Private Sub Form_Load()

Text1.FontSize = 30 ' 设置文本框原始字号 End Sub

Private Sub Command1_Click()

Text1.FontSize = __ Text1.FontSize / 2_' 将文本框字体每次缩小一半 End Sub

Private Sub Command2_Click()

__ Text1.FontSize = 30_____ ' 文本框的字体恢复为30 End Sub

【提高题2】 P260 实验A 。二、5. 命令按钮、

字号、内容和格式的复制练习!效果如右图。

要求:

1)Command1:使得Text1中的字体和字号根据 图2.4实验实验提高1窗体 命令按钮上显示的要求改变。

2)Command2:要求将Text1选中的内容及其字体格式复制到Text2文本框中。

? 代码编写

代码

Private Sub Command1_Click() Text1.FontName = \隶书\Text1.FontSize = 25 End Sub

Private Sub Command2_Click()

遇到的主要问题及分析:

11

Text2 = Text1.SelText

Text2.FontName = Text1.FontName Text2.FontSize = Text1.FontSize End Sub

【选作题】参考P35,建立一个允许剪切、复制和粘贴的简单便笺板程序。可增加内容:利用MouseMove事件决定命令按钮的有效性, 即当选中内容,“剪切”、“复制”按钮有效,否则无效。

图2.5 窗体原始界面 按下运行按钮时的界面 选中文本框部分内容的界面 ? 代码编写

代码

Private Sub Form_Load() Command1.Enabled = False Command2.Enabled = False End Sub

Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Text1.SelText <> \ Command1.Enabled =true Command2.Enabled =true End If End Sub

其他代码见p36

遇到的主要问题及分析:

实验心得体会

12

成绩:

教师签名:

13

实验日期 年 月 日

实验三 顺序结构程序设计

实验目的:

1.熟练掌握VB的基本数据类型。 2.熟练掌握基本的输入输出函数和语句。 3.掌握顺序结构程序设计的方法。

实验内容

1、定义两个变量a和b,它们的值分别由键盘输入。编程计算并输出a与b的和、差、积、商、a除以b的余数、a b的值。(要求自己设计窗体及输入、输出,必须有明确的示意提示)。

? 代码编写:

代码

Private Sub Form_Click() Dim a as integer,b as integer

a = Val(InputBox(\输入a的值\b = Val(InputBox(\输入b的值\Print \Print \Print \Print \

Print \End Sub

遇到的主要问题及分析:

2、定义一个变量a,由键盘输入其值为任意四位整数,编程实现分别输出个、十、百、千位四个数字,并各个数字的平方和。

14

【提示】利用mod和\\运算符将每一位分离。 ? 代码编写:

代码

Private Sub Form_Click() Dim a As Integer Dim b%, c%, d%, e%

a = Val(InputBox(\输入a的值,要求4位整数\b = a Mod 10 '个位 c = a \\ 1000 '千位

d = (a - c * 1000) \\ 100 '百位 e = (a - c * 1000 - d * 100) \\ 10 Print \个位:\Print \十位:\Print \百位:\Print \千位:\

Print \平方和:\End Sub

遇到的主要问题及分析:

3、P262 实验B 二、1。 ? 代码编写:

代码

Private Sub Command2_Click()

Text1 = Format(9 / 5 * Val(Text2) + 32, \End Sub

遇到的主要问题及分析:

4、设计窗体并实现:

1)单击“连接”,将Text1和Text2的内容连接起来显示在Text3; 2)单击“求和”,求出Text1和Text2之和显示在Text3 ;

3)要求:在单击“连接”之前Text3不可见,点“连接”之后“连接”按钮不可用;

15

(a) 设计状态 (b) 运行状态

图3.1 实验3.4窗体

? 代码编写:

代码

Private Sub Command1_Click() Text3.Visible = True Text3 = Text1 & Text2

Command1.Enabled = False End Sub

Private Sub Command2_Click() Text3 = Val(Text1) + Val(Text2) End Sub

Private Sub Form_Load() Text3.Visible = False End Sub

遇到的主要问题及分析:

5、创建VB工程,界面如右所示,编程实现运行时可将标签中的文字字号随机放大(1~5整数倍)和(任意比例)缩小以及还原(原来字号)。界面如右图所示。

【提示】 图3.2 实验3.5窗体

1)将标签的AotuSize属性设置为False及True,看看有什么区别?

2)用一个变量在程序开始运行时记住标签中原始字体的大小(想想放在什么事件过程中?);这个变量还会在“还原”按键中使用,其说明语句要放在通用-声明中;

3)每次按放大或缩小按键都会在当前的基础上放大或缩小; 4)字体放大到一定程度会出现“溢出”的错误提示,可以先不管。

? 代码编写:

代码

Dim t

Private Sub Form_Load() t = Label1.FontSize

遇到的主要问题及分析:

16

End Sub

Private Sub Command1_Click()

Label1.FontSize = Label1.FontSize * Int(Rnd * 5 + 1) End Sub

Private Sub Command2_Click()

Label1.FontSize = Label1.FontSize * Rnd End Sub

Private Sub Command3_Click() Label1.FontSize = t End Sub

6、编程实现随机产生一个“F”~“S”范围内的大写字母,并输出该字母及其对应的ASCII码值,同时输出其小写字母及其对应的ASCII码的值。

? 代码编写:

代码

Private Sub Form_Click()

a = Int(Rnd * (83 - 70 + 1) + 70) Print Chr(a); \的ASCII值=\

Print LCase(Chr(a)); \的ASCII值=\End Sub

遇到的主要问题及分析:

【选作题1】编程解决古代数学问题“鸡兔同笼”。即已知在同一个笼子里有总数为m只鸡和兔,鸡和兔的总脚数为n只,求鸡和兔各有多少只?

【提示】鸡和兔的总数m、鸡和兔的总脚数n需要预先输入(文本框或输入框输入)。再设鸡和兔子的个数分别为x和y,通过已知输入的m和n;列出方程求解,分别用m,n两个已知量来表示x和y。

? 代码编写:

代码

Private Sub Form_Click() m = Val(Text1) n = Val(Text2) y = 1 / 2 * n - m x = 2 * m - 1 / 2 * n

Print \鸡有\兔子有\End Sub

遇到的主要问题及分析:

17

【选作题2】编程实现电话号码自动升位。要求将原来任意一个带区号的7位电话号码升到8位,在电话号码最前面加8。程序运行结果如图所示。(要求必须适用于3位或4位区号的电话号码)

【提示】无论区号或电话号码是多少位,只要找到“-”的位置,就可以将“-”之前(包括“-”)的左子串、“8”、以及“-”后面剩下的字符串 “串”起来。

? 代码编写:

代码

Private Sub Form_Click() a = InStr(Text1, \

Text2 = Left(Text1, a) + \End Sub

遇到的主要问题及分析:

【提高题】参考教材P33的例2.5及P65的例4.2,完成P263实验B 二、2。 ? 代码编写:

代码

Const PI = 3.14

Private Sub Command1_Click() r = Val(Text1)

Text2 = Format(PI * r ^ 2, \End Sub

Private Sub Command2_Click() r = Val(Text1)

Text3 = Format(2 * PI * r, \End Sub

Private Sub Text1_LostFocus() If Not IsNumeric(Text1) Then

MsgBox \输入有非数字字符,请重新输入\ Text1 = \

Text1.SetFocus End If End Sub

遇到的主要问题及分析:

18

成绩:

教师签名:

19

实验心得体会

实验日期 年 月 日

实验四 选择结构程序设计

实验目的:

2.掌握逻辑表达式的正确书写形式。 3.掌握单分支与双分支条件语句的使用。

实验内容

1.编写程序,通过键盘输入变量x的值,求函数y的值。

? x , x?0?y?? 1 ? x , x?0? 代码

遇到的主要问题及分析:

Private Sub Command1_Click() x = Val(Text1) If x >= 0 Then y = Sqr(x) Else

y = 1 / Abs(x) End If Text2 = y End Sub

2、输入一串字符串C,判断字符串C中的第三个字符是“C”时,利用msgbox显示“yes”,否则显示“No”.

代码

Private Sub Command1_Click() Dim C As String C = Text1

If Mid(C, 3, 1) = \MsgBox (\Else: MsgBox (\

遇到的主要问题及分析:

20

End If End Sub

3、输入一个年份,判断它是否为闰年,并输出是否为闰年的相关信息。

【提示】判断闰年的条件是:年份能被4整除但不能被100整除;或者是能被400整除。如:1900、2100、2010年不是闰年;2008、2000年是闰年。

代码

Private Sub Form_Click() Dim a As Integer a = Text1

If a Mod 400 = 0 Or a Mod 4 = 0 And a Mod 100 <> 0 Then MsgBox (\本年份为闰年\Else

MsgBox (\此年份为非闰年\End If End Sub

遇到的主要问题及分析:

4. 如右图,窗体上有两个文本框一个标签和一个命令按钮。程序运行时分别在文本框中输入两个数字后单击命令按钮进行计算。要求:Text1中的数值大于或等于Text2时,计算两个数的和,否则计算两个数的差,最后将运算式和结果显示在标签中。

代码

Private Sub Command1_Click() x = Val(Text1) y = Val(Text2) If x >= y Then

Label1 = x & \Else

Label1 = x & \End If End Sub

遇到的主要问题及分析:

【进一步要求】对两个文本框中的数据进行有效性判断。利用文本框的LostFocus事件进行判断,若输入的不是数字,用MsgBox给出“是否重新输入”的提示,提示窗口上有两个命令按钮:“是”和“否”,显示问号的图标。若回答“是”则将文本框中原来的内容清空、光标重新定位于文本框,若回答“否”则程序终止。

21

? 代码编写:

代码

Private Sub Text1_LostFocus() If Not IsNumeric(Text1) Then

i = MsgBox(\是否重新输入\警告\If i = 6 Then Text1 = \

Text1.SetFocus Else End End If End If End Sub

Private Sub Text2_LostFocus() If Not IsNumeric(Text2) Then

i = MsgBox(\是否重新输入\警告\If i = 6 Then Text2 = \

Text2.SetFocus Else End End If End If End Sub

遇到的主要问题及分析:

5、猜数字游戏:事先设定的一个数字(如6),程序提示用户输入一个1~10之间的整数,如果输入的数字与事先设置的数字相同,则提示“输入正确”,否则显示“错了”。 ? 代码编写:

遇到的主要问题及分析: 代码

Private Sub Command1_Click()

x = Val(InputBox(\输入一个1~10之间的整数\If x = Text1 Then

MsgBox \输入正确\Else

MsgBox \错了\End If End Sub

22

【提高题1】修改上面程序,当输入的值比设置的数字小,显示“错了,你猜得小了。”;输入的值比设置的大,则显示“错了,你输入的太大了。”(请直接在上题修改)

【提示】本实验属于多分支结构。

Private Sub Command1_Click()

x = Val(InputBox(\输入一个1~10之间的整数\If x = Text1 Then

MsgBox \输入正确\ElseIf x < Text1 Then

MsgBox \错了,你猜得小了。\Else

MsgBox \错了,你输入的太大了。\End If End Sub

【提高题2】通过InputBox函数任意输入三条边长,经过简单的计算后,判断三条边长能否构成三角形,并在文本框中显示结果。

【提示】构成三角形,必须保证任意两边的和大于第三边 ? 代码编写:

代码

Private Sub Command1_Click() Dim a!, b!, c!

a = Val(InputBox(\输入第1条边长\b = Val(InputBox(\输入第2条边长\c = Val(InputBox(\输入第3条边长\

If a + b > c And b + c > a And a + c > b Then Print \此三边可构成三角形\Else

Print \此三边不可构成三角形\End If End Sub

遇到的主要问题及分析:

【选作题】课堂示例“字符串替换”,使用多个函数完成时,如果源字符串中没有要查找的子串,程序就会出错。修改程序当没有要查找的子串时,弹出“没有找到的”提示框,并将源串放到结果文本框中。

23

【提示】InStr(C1,C2) 在C1中查找C2是否存在,若找不到,结果为0。

? 代码编写:

代码

Private Sub Command1_Click() i = InStr(Text1, Text2) If i = 0 Then

MsgBox \没有找到\ Label5 = Text1 Else

k = i + Len(Text2) Ls = Left(Text1, i - 1)

Label5 = Ls + Text3 + Mid(Text1, k) End If End Sub

遇到的主要问题及分析:

实验心得体会

成绩: 教师签名:

24

实验日期 年 月 日

实验五 选择结构程序设计(续)

实验目的:

1.掌握情况语句的使用。

2. 掌握情况语句与多分支条件语句的区别。 3.掌握分支嵌套语句的使用。

实验内容

1、输入一元二次方程ax2+bx+c=0系数a,b,c的值,计算并输出一元二次方程的两个根x1和x2。

【提示】求根时要对三个数分别考虑重根和无实根情况的处理。 ? 代码编写:

代码

Private Sub Command1_Click() Dim a%, b%, c%, d%, x1!, x2! a = Val(InputBox(\输入a\b = Val(InputBox(\输入b\c = Val(InputBox(\输入c\d = b * b - 4 * a * c If d > 0 Then

x1 = (-b + Sqr(d)) / (2 * a) x2 = (-b - Sqr(d)) / (2 * a) ElseIf d = 0 Then x1 = -b / (2 * a) x2 = x1 Else

MsgBox \无实根\End If

Print \End Sub

遇到的主要问题及分析:

25

2、输入一个字符,判断该字符是字母、数字还是其他字符,并作相应的显示。

【要求】分别使用两种语句If ……ElseIf……和Select Case 来完成。

代码

If ……ElseIf语句实现

Private Sub Command2_Click() a = InputBox(\输入一个字符\

If a >= \ MsgBox a + \是字母\

ElseIf a >= \ MsgBox a + \是数字\Else

MsgBox a + \是其他字符\End If

End SubSelect Case语句实现 Private Sub Command1_Click() a = InputBox(\输入一个字符\Select Case a

Case \ MsgBox a + \是字母\ Case \

MsgBox a + \是数字\ Case Else

MsgBox a + \是其他字符\End Select End Sub

遇到的主要问题及分析:

思考:编写一个对文本框中输入的字符进行转换的程序。窗体如上右图所示。将小写字母转换成大写字母,大写字母转换成小写字母,空格不转换,其余字符转换成”*”。要求每输入一个字符马上 进行判断和转换,结果

显示在Text2中。

? 代码编写:

代码

Private Sub Text1_Change() a = Right(Text1, 1) Select Case a Case \

Text2 = Text2 + UCase(a)

遇到的主要问题及分析:

26

Case \

Text2 = Text2 + LCase(a) Case \

Text2 = Text2 + \ Case Else

Text2 = Text2 + \End Select End Sub

3、输入一个数字(1-7),用英文显示对应的星期一至星期日。

【提示】用Select Case语句来实现

? 代码编写:

代码

Private Sub Command1_Click() a = Val(InputBox(\输入星期几\Select Case a Case 1

MsgBox \ Case 2

MsgBox \ Case 3

MsgBox \ Case 4

MsgBox \ Case 5

MsgBox \ Case 6

MsgBox \ Case 7

MsgBox \ Case Else

MsgBox \输入错误\End Select End Sub

遇到的主要问题及分析:

4、编程实现简单计算器功能。要求程序运行后,分别输入两个操作数以及运算符(+、-、*、/)后,单击“计算”按钮,

27

则自动计算出表达式的结果,并显示在运算结果对应的文本框中。

【提示】除数为0时要做适当处理。 ? 代码编写:

代码

Private Sub Command1_Click() Select Case Text2 Case \

Text4 = Text1 + Text3 Case \

Text4 = Text1 - Text3 Case \

Text4 = Text1 * Text3 Case \

If Text3 = 0 Then

MsgBox \除数不能为0\ Else

Text4 = Text1 / Text3 End If Case Else

MsgBox \输入错误\End Select End Sub

遇到的主要问题及分析:

5、密码登录程序。要求:建立一个登录窗口,要求输入帐号和密码。设定密码为“Basic1234”;若密码正确,显示“祝贺你,成功登录!”;若密码不正确,显示“对不起,密码错误,无法登录!”,并统计出错次数,当输入超过3次时,则退出系统。

【要求】帐号为6位数字,如果输入的不是数字或不足6位,则给出相应提示并要

求重新输入(利用LostFocus事件及IsNumeri等函数);密码输入时应显示为“*。”

【提示】该题用分支嵌套来完成。 ? 代码编写:

代码

Dim I As Integer '全局变量 Private Sub Form_Load() Text1.Text = \ Text2.Text = \

Text2.PasswordChar = \ I = 0 '全局变量付初值 End Sub

遇到的主要问题及分析: 参考p65例4.2

28

Private Sub Text1_LostFocus()

If Not IsNumeric(Text1.Text) Then

MsgBox \账号必须为数字\警告\ ' 连续两个逗号(\)缺省按钮数目,仅有\确定\按钮 Text1.Text = \ Text1.SetFocus End If

If Len(Text1) <> 6 Then

MsgBox \密码是6位数字\警告\ Text1.Text = \ Text1.SetFocus End If End Sub

Private Sub Command1_Click()

If Text2.Text = \ MsgBox (\祝贺你,成功登录!\ Else

MsgBox (\对不起,密码错误,无法登录!\ I = I + 1

If I >= 3 Then End End If End Sub

6、在上周实验【提高题】的基础上完成,输入三角形的三条边,根据边长判断是否能构成三角形的程序,若能构成,则进一步判断三角形类型(等边、等腰、直角、一般)。

【提示】该题用分支嵌套来完成。

注:请在上周程序代码的适当位置用红笔来添加代码实现。

Private Sub Command1_Click() Dim a!, b!, c!

a = Val(InputBox(\输入第1条边长\b = Val(InputBox(\输入第2条边长\c = Val(InputBox(\输入第3条边长\

If a + b > c And b + c > a And a + c > b Then

If a = b And b = c Then MsgBox \等边\

ElseIf a = b Or b = c Or a = c Then MsgBox \等腰\

ElseIf a ^ 2 = b ^ 2 + c ^ 2 Or b ^ 2 = a ^ 2 + c ^ 2 Or c ^ 2 = a ^ 2 + b ^ 2 Then MsgBox \直角三角形\

29

Else

MsgBox \一般三角形\ End If Else

MsgBox \此三边不可构成三角形\End If End Sub

【选做题】开始运行如左下图所示,单击“出题”按钮后计算机自动出题,窗口如右下图所示,此时由用户输入加法运算答案,然后单击“判定”按钮。如果用户运算正确则提示“答对了,你真聪明!”,否则显示“错了,努力啊!”。再次按下“出题”就会再出一道题。

【提示】①计算机自动出题,显示的题目应该是随机的,所以这里必须使用随机函数Rnd,其值为 [0,1)间的随机数,如果要得到区间 [L,U] 中的随机整数,应使用表达式 Int((U-L+1)*Rnd+L) 。

②命令按钮Command1每次按下时其Caption属性会发生变化,从“出题”变成“判定”,又从“判定”变成“出题”。当它是“出题”时,按下就会随机出题;当它是“判定”时,按下就会对用户输入的答案判断对错。

【思考】多次执行这个程序,是否发现每次出的题目是一样的?如何解决?

【进一步修改程序】使得该工程只可执行10次,每执行一次,判断用户输入的答案是否正确,正确则得10分,错误则不给分。执行10次后,可给出总得分,然后关闭该窗体。

? 代码编写:

代码

Dim i As Boolean

Private Sub Command1_Click() If i = True Then

遇到的主要问题及分析:

30

Text1 = Int(100 * Rnd + 1) '产生[1,100]之间的随机整数 Text2 = Int(100 * Rnd + 1) '产生[1,100]之间的随机整数 Command1.Caption = \判定\ i = False Else

If Text3 = Val(Text1) + Val(Text2) Then MsgBox \答对了,你真聪明!\ Else

MsgBox \错了,努力啊!\ End If i = True

Command1.Caption = \出题\End If End Sub

Private Sub Command2_Click() End End Sub

Private Sub Form_Load() i = True

Command1.Caption = \出题\

Randomize ‘多次执行这个程序,每次出的题目不一样 End Sub

【进一步修改程序】

Dim i As Boolean Dim a%, b%

Private Sub Command1_Click() If a < 10 Then If i = True Then

Text1 = Int(100 * Rnd + 1) '产生[1,100]之间的随机整数 Text2 = Int(100 * Rnd + 1) '产生[1,100]之间的随机整数 Command1.Caption = \判定\ i = False Else

If Text3 = Val(Text1) + Val(Text2) Then MsgBox \答对了,你真聪明!\ b = b + 1 '统计答对的题数 Else

MsgBox \错了,努力啊!\

31

End If a = a + 1 i = True

Command1.Caption = \出题\End If End If

If a = 10 Then

MsgBox \答对了\End End If End Sub

Private Sub Command2_Click() End End Sub

Private Sub Form_Load() i = True

Command1.Caption = \出题\

Randomize '多次执行这个程序,每次出的题目不一样 a = 0 b = 0 End Sub

实验心得体会

成绩: 教师签名:

32

实验日期 年 月 日

实验六 循环结构程序设计

实验目的:

1.掌握For语句和Do..Loop循环语句的使用。 2.掌握循环的规则及其执行过程。

3.掌握如何控制循环条件,防止死循环或不循环。

实验内容

1. 编写程序,输出7的倍数中十位数为2的所有3位数,并统计个数。

【进一步要求】求满足条件的数的平方和。 ? 代码编写:

代码

Private Sub Command1_Click() t = 0 s = 0

For i = 100 To 999

If i Mod 7 = 0 And Mid(i, 2, 1) = 2 Then Print i t = t + 1 s = s + i ^ 2 End If Next i

Print \满足条件的有\个\Print \End Sub

遇到的主要问题及分析:

2. 编写程序用Print语句输出2000年至2500年间的所有闰年,要求每行输出8个。

【提示】:

1)用任意一种循环语句来完成,在循环体内使用选择结构来判断条件。

33

2)设置一个计数器。每找到一个闰年,则输出年份(控制Print的输出格式,输出后不换行),并使计数器的值加1,当计数器的值正好是8的倍数时,则换行。

代码

Private Sub Command1_Click() t = 0

For i = 2000 To 2500

If i Mod 400 = 0 Or i Mod 4 = 0 And i Mod 100 <> 0 Then Print i; t = t + 1

If t = 8 Then t = 0: Print End If Next i End Sub

遇到的主要问题及分析:

3. 编写程序解决爱因斯坦台阶问题:有人走一台阶,若以每步走两级则最后剩下一级;若每步走三级则剩两级;若每步走四级则剩三级;若每步走五级则剩四级;若每步走六级则剩五级;若每步走七级则刚好不剩。问台阶至少共有多少级?(答案:119)

【提示】用Do…Loop语句来完成。在循环体内使用选择结构来判断条件。

代码

Private Sub Form_Click() f = True x = 1

Do While f

If x Mod 2 = 1 And x Mod 3 = 2 And x Mod 4 = 3 And x Mod 5 = 4 And x Mod 6 = 5 And x Mod 7 = 0 Then Print x f = False Else

x = x + 1 End If Loop End Sub

遇到的主要问题及分析:

4. 我国有13亿人口,如果按人口年增长0.8%计算,多少年后将达到26亿?

(答案:87)

? 代码编写:

34

代码

遇到的主要问题及分析: 课本80页

5. P270实验D二、8一个富翁试图与陌生人做一笔换钱生意,换钱的规则为:陌生人每天给富翁10万元钱,直到满一个月(30天);富翁第一天给陌生人1分钱,第二天2分,第三天4分,。。。。。。,富翁每天给陌生人的钱是前一天的两倍,直到满一个月。分别显示富翁给陌生人的钱和陌生人给富翁的钱为多少? ? 代码编写:

代码

Private Sub Command1_Click()

Print \陌生人给富翁的钱为\万\t = 1 s = 1

For i = 2 To 30 t = t * 2 s = s + t Next i

Print \富翁给陌生人的钱为\万\End Sub

遇到的主要问题及分析:

【提高题】10个同学参加测试,分数为A,B,C,D,E五个等级,如果A计5分,B计4分,以此类推,求这10个同学的平均成绩。

【提示】可以设置一个变量做累加器,用Select Case语句实现。

? 代码编写:

代码

Private Sub Command1_Click() s = 0

For i = 1 To 10

遇到的主要问题及分析:

35

a = InputBox(\输入成绩\Select Case a Case \ b = 5 Case \ b = 4 Case \ b = 3 Case \ b = 2 Case \ b = 1 End Select s = s + b Next i Print s / 10 End Sub

【选作题】编程分别输出1!,2!,3!,...,10!的结果。

【进一步要求】求1~10的阶乘和(即1!+2!+3!+...+10!)。

【提示】这是一个计算连乘及累加的问题。在设计累加和连乘问题时一定要注意存储总和及乘积的变量初值问题。(答案:4037913)

? 代码编写:

代码

Private Sub Form_Click() t = 1 s = 0

For i = 1 To 10 t = t * i Print t s = s + t Next i Print s End Sub

遇到的主要问题及分析:

36

成绩:

教师签名:

37

实验心得体会

实验日期 年 月 日

实验七 循环结构程序设计(续)

实验目的:

1、巩固For语句和Do..Loop循环语句的使用。 2、掌握循环嵌套的使用。

3、掌握一些常用的算法(求素数、穷举法、求和与乘积、递推法)

实验内容

1、编写程序,实现输入一个任意位的整数,要求把该整数的各个数位上的数字提取出来,并将该整数逆向排列。如:输入1234567,则输出各位数字为7,6,5,4,3,2,1;其逆向排列数为7654321。

? 代码编写:

代码

Private Sub Command1_Click() a = InputBox(\输入数字\b = Len(a) For i = 1 To b

Print Mid(a, b - i + 1, 1); Next i End Sub

遇到的主要问题及分析:

2、完善程序,输入一个数,判断该数是否为完数,并把其因子输出,如图所示。(一个数如果恰好等于它的因子之和,这个数就被称为“完数”。一个数的因子是指除了该数本身以外能够被其整除的数。)例如6是一个完数,因为6=1+2+3。

Private Sub Command1_Click() m = Val(Text1.Text)

38

For i = 1 To m - 1

If 【1】 m Mod i = 0 Then k = k + i ' 因子之和 Next i

If 【2】 m = k Then Picture1.Print m & \是完数\ Picture1.Print m; \

For i = 【3】 2 To m - 1 ' 因子输出 If m Mod i = 0 Then Picture1.Print \ Next i 【4】 Picture1.Print

Else

Picture1.Print m & \不是完数\ End If 【5】 End Sub

【1】 【2】 【3】 【4】 【5】 3、编写程序,实现求解把50元钱分成一元、二元和五元的纸币且纸币张数共为20张的分法有多少种?

代码

Private Sub Form_Click() Print \元\元\元\n = 0

For x = 0 To 10 For y = 0 To 25 z = 20 - x - y

If 5 * x + 2 * y + z = 50 And z >= 0 Then Print x, y, z: n = n + 1 Next y Next x

Print \分法有\种\End Sub

遇到的主要问题及分析:

4、参考下图的算法,编写程序,输入两个正整数,求这两个数的最小公倍数。

代码

遇到的主要问题及分析:

39

课本p87页

【提高题1】输出斐波那契级数1、1、2、3、5、8、13……,当某项的数值大于或等于30000时结束。此级数项的规律是:前两项的值各为1,从第3项起,每一项是前2项的和。(要求一行输出6项)。

代码

Private Sub Form_Click() a = 1 b = 1 Print a; b; i = 2

Do While c <= 30000 c = a + b a = b b = c Print c; i = i + 1

If i Mod 6 = 0 Then Print Loop End Sub

遇到的主要问题及分析:

【提高题2】P269实验D二、5编写程序,求Sn=a+aa+aaa+…(n个a)的值,其中n是表示a的个数,a是【1,9】之间的随机正整数。例如:当a=2,n=5时,sn=2+22+222+2222+22222

【提示】为得到不断重复的数t,可在循环体利用通项: t = t * 10 + a

代码

Private Sub Form_Click()

a = Int(Rnd * 9) + 1 ‘[1,9] n = Int(Rnd * 6) + 5 ‘[5,10] s = 0 t = 0

For i = 1 To n

遇到的主要问题及分析:

40

t = t * 10 + a s = s + t Print t; Next i Print s End Sub

【选作题1】完善程序,使之能在窗体上显示有规律的图形。

Private Sub Form_Click() Dim i%

For i = 1 To 【1】 10

Print 【2】 Tab(20 - i); String(2 * i - 1, Trim(Right(Str(i), 1))) Next i End Sub

【提示】使用Tab函数定打印位置,可使用的函数还有:String, Right,CStr

1)循环体内显示用String函数来实现,找出循环控制变量与Sting函数内个数的关系,即String(j, Cstr(i)。 2)为了使最后一行的0显示,若按照上面的通式,则最后一行显示的是1,则要对公式进行修改,即String(j,Right(cstr(i)))。

【选作题2】用两重循环在窗体上显示如右图结果。

【提示】两种方法解该题:

方法一:利用数值实现,就是将各列列号通过运算连接起来。

方法二:利用Mid函数取字符串子串来实现,即从字符串中不断取所需的子字符串而得。

还要注意行号与负号的关系。

代码

Private Sub Form_Click() s = \For i = 1 To 6 For j = 1 To i

If i Mod 2 = 1 Then

Picture1.Print \ \ Else

Picture1.Print \ \ End If Next j

Picture1.Print Next i

遇到的主要问题及分析:

41

End Sub

实验心得体会

成绩: 教师签名: 实验日期 年 月 日

实验八 常用控件

实验目的:

1.掌握单选按钮、复选框的重要属性、事件和方法。 2.掌握框架的使用。

3.掌握列表框、组合框的重要属性、事件和方法。

实验内容

1、窗体上有两个复选框,名称分别为Chk1和Chk2,标题分别

为“能被5整除”和“能被6整除”,一个命令按钮Command1,以及一个文本框Text1。编写适当的事件过程,使得程序运行时对

复选框进行选择,单击命令按钮,可根据下表的规定,计算100~200之间符合要求的整数之和,把结果显示在Text1中。

选择

Chk1

Chk2

Chk1 和Chk2

要求

只能被5整除 只能被6整除

既能被5整除,也能被6整除

42

都不选择 只能被1整除

? 代码编写:

代码

Dim s1, s2 ‘定义全局变量 Private Sub Check1_Click()

s1 = 0 ‘每次选择前先清0 For i = 100 To 200

If i Mod 5 = 0 Then s1 = s1 + i Next i End Sub

Private Sub Check2_Click()

s2 = 0 ‘每次选择前先清0 For i = 100 To 200

If i Mod 6 = 0 Then s2 = s2 + i Next i End Sub

Private Sub Command1_Click()

Text1 = 0 ‘每次赋值前先清0 If Check1.Value = 1 And Check2.Value = 1 Then Text1 = s1 + s2

ElseIf Check1.Value = 1 Then Text1 = s1

ElseIf Check2.Value = 1 Then Text1 = s2 Else

For i = 100 To 200 Text1 = Text1 + i Next i End If End Sub

遇到的主要问题及分析:

2、窗体上包含有两个名称分别为Op1和Op2的单选按钮,

标题分别为“100-200的素数和” 和“200-400的素数和”。还有一个文本框和一个命令按钮,标题为“求和”。程序运行后,选中某个单选按钮,并单击“求和”按钮,则计算指明范围内的素数之和,并显示在文本框中。

? 代码编写:

代码

Private Sub Command1_Click()

遇到的主要问题及分析:

43

If Option1 Then

For m = 100 To 200 Tag = True

For i = 2 To m - 1

If m Mod i = 0 Then Tag = False Next i

If Tag Then s = s + m Next m End If

If Option2 Then

For m = 200 To 400 Tag = True

For i = 2 To m - 1

If m Mod i = 0 Then Tag = False Next i

If Tag Then s = s + m Next m End If Text1 = s End Sub

3、P237,实验E-6,窗体的标题栏显示“选课界面”,窗体上有两个列表框,左边是List1,右边是List2,其中List2中的列表项按字母顺序升序显示。窗体下方有一个文本框,名为Text1。请你:

1) 写出程序中需要的属性设置。

2)程序运行后,在列表框List1中添加“Visual Basic 程序”、“数据结构”、“操作系统”、“硬件技术基础”、“计算机网络”、“多媒体技术”和“C++程序设计”七个选项。(使用Form_Load()事件)。

3)要求单击List1中的某一项时,该项显示在Text1中。

4)双击List1中的某一项时,该项从List1中删除,添加至List2。当List2中的内容已满5门时,不允许再添加并提示“超过5门课程,不能再选了!”。(要注意条件的放置位置问题)

44

? 需要的属性设置

表9.1 实验1属性设置

对象名称 List2 属性 Sorted 属性值 True ? 代码编写: 代码

Private Sub Form_Load()

List1.AddItem \程序\List1.AddItem \数据结构\List1.AddItem \操作系统\List1.AddItem \硬件技术基础\List1.AddItem \计算机网络\List1.AddItem \多媒体技术\List1.AddItem \程序设计\

遇到的主要问题及分析:

End Sub

‘单击列表框List1 Private Sub List1_Click() Text1 = List1.Text End Sub

‘双击列表框List2

Private Sub List1_DblClick() If List2.ListCount = 5 Then

MsgBox \超过5门课程,不能再选\Else

List2.AddItem List1.Text

List1.RemoveItem List1.ListIndex End If End Sub

4、窗体上有一个名为List1的列表框(允许做多项选择),一个名称为Text1的文本框,三个命令按钮,标题分别为“求全部项目和”,“求选定项目之和”,“删除选定项目”。

【要求】

1)程序运行后,将把1~100之间能够被7整除的数添加到列表框中。

45

2)单击“求全部项目和”按钮,则对List1中的数进行累加求和,并在文本框中显示计算结果。

3) 单击“求选定项目之和”按钮,则对List1中的选中的项目进行累加求和,并在文本框中显示计算结果。

4) 单击“删除选定项目”按钮,则删除List1中的选中的项目。

代码

Private Sub Form_Load() ‘显示7的倍数 For i=1 To 100

If i Mod 7 =0 Then

【1】 List1.AddItem i End If Next i End Sub ‘列表框所有项目之和

Private Sub Command1_Click() Sum% = 0

For i = 0 To 【2】 list1.listcount-1 Sum = Sum + 【3】list1.list(i) Next i

【4】 text1=sum End Sub

‘列表框选定项目之和

Private Sub Command2_Click()

Sum% = 0

For i = 0 To 【6】 List1.ListCount - 1

If 【5】List1.Selected(i) Then Sum = Sum + 【7】List1.List(i) End If Next i

Text1.Text = sum End Sub ‘删除选定列表框项目

Private Sub Command3_Click()

List1.RemoveItem List1.ListIndex

End Sub

遇到的主要问题及分析: 如果列表框要多选,multiselect 属性设置为1

46

本文来源:https://www.bwwdw.com/article/t9vp.html

Top