职场文秘网

首页 > 领导讲话 > 纪检讲话 / 正文

Visual,Basic实验答案

2020-03-12 19:00:24

  

  学院

 专业 (班级)

 姓名

 学号

 任课教师

  目录 实验一

  Visual Basic编程环境和控件 1 实验二

  窗体及基本控件使用 6 实验三

  顺序结构程序设计 13 实验四

  选择结构程序设计 19 实验五

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

  循环结构程序设计 30 实验七

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

  常用控件 38 实验九

  常用控件(续) 45 实验十

  数组 50 实验十一

 数组(续) 56 实验十二

 顺序文件 60 实验十三

 过程 67 实验十四

 过程(续) 72 实验十五

 菜单及通用对话框 77 实验十六

 随机文件(选作) 80 附录:VB统考编程题(精选) 83 期末自测题(A卷) 92 期末自测题(B卷) 97

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

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

 (2)实验内容

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

 (3)程序设计说明

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

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

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

 程序运行结果一般是输出语句所输出的结果。对于不同的输入,其输出的结果是不同的。因此,在输出结果之前一般还应注明输入的数据,以便对输出结果进行分析和比较。在程序的运行中,还必须用各种不同情况的数据进行调试,以检查程序能否正常运行。因为,有时程序对某些情况是可以正常运行的,而对某些特殊情况的数据可能会出现运行出错或死机,通过各种数据的调试,尽量做到程序不会出问题。 (6) 实验体会 分析和体会实验中碰到的问题及解决方法,这是实验报告中最重要的一项,也是最容易忽视的一项。实验过程中大量的工作是程序调试,在调试过程中会遇到各种各样的问题,每解决一个问题就能积累一点经验,提高自己的编程能力。因此,对实验的总结,最主要的是程序调试经验的总结。调试分析也包括对结果的分析。体会主要是指通过本次实验是否达到了实验目的,有哪些基本概念得到了澄清,碰到了那些以前没有见到的问题,最后采用什么方法得到解决等。

  实验日期

  年

  月

  日 实验一

  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属性设置 对象名称 属性 属性值 窗体 Caption 我的第一个程序 文本框 Text (空) 命令按钮 Caption 命令按钮 ④ 双击命令按钮,进入代码窗口中命令按钮的默认事件,编写代码如下: Private Sub Command1_Click() Text1.Text = "单击命令按钮" End Sub ⑤ 双击窗体的空白处,进入代码窗口中窗体的默认事件(Form_Load()),在右边的过程列表框中选择Click,,编写代码如下: Private Sub Form_Click() Text1.Text = "单击窗体" End Sub ⑥ 单击工具栏上的按钮,运行程序,分别单击命令按钮以及窗体空白处,观察文本框上显示的内容有何变化。如果程序代码有错误,则进入代码窗口中调试程序。 ⑦ 单击工具栏上的按钮,结束程序运行。 ⑧ 单击工具栏上的 按钮,将窗体、工程分别以SY1_1.frm、SY1_1.vbp保存在磁盘上。 2. 建立一个应用程序, 界面如图1.2所示,窗体包含有一个文本框和三个按钮,要求文本框中的字体为14号黑体加粗,颜色为红色,且文本内容居中显示。编写代码实现:

  图1.2

 实验2 的运行界面 1)按“显示内容”按钮时,文本框显示“Hello,Visual Basic!”; 2)按“清屏”按钮时,文本框中文字消失; 3)按“结束”按钮后,程序结束。(提示:代码中输入End,则可结束应用程序运行) 保存窗体文件名:SY1_2.frm,保存工程名:SY1_2.vbp。 表1.2

 实验2属性设置 对象名称 属性 属性值 窗体Form1 Caption

 文本框Text1 Text Alignment Font ForeColor

  命令按钮Command1 Caption 显示内容 命令按钮Command2 Caption 清屏 命令按钮Command3 Caption 结束

 编写代码如下: 代码 遇到的主要问题及分析:

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

  图1.3

 实验3

 设计界面

  运行界面

  编写代码如下: 代码 遇到的主要问题及分析:

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

 图1.4

 提高题 的运行界面

 编写代码如下: 代码 遇到的主要问题及分析:

 【选作题】窗体上有两个名称分别为C1, C2的命令按扭,一个文本框Text1。命令按钮的标题及文本框上显示的字符自定。编程实现当按下C1时,将C2的标题与Text1中的内容交换。要求: 1)界面自己设计

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

 编写代码如下:

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

  实验心得体会

 成绩: 教师签名:

  实验日期

  年

  月

  日 实验二

  窗体及基本控件使用 一、实验目的 1、复习启动与退出Visual Basic的方法。 2、掌握窗体基本的事件、方法和属性,并学会在不同的事件的过程中,编写代码。 3、掌握文本框和标签两种控件的使用,掌握文本框和标签控件的常用属性、事件和方法。以及它们之间的区别。 4、掌握命令按钮控件的常用属性、事件和方法。 二、实验内容 1、设计一个程序(如图2.1所示),用窗体模拟黑板,窗体上没有最大化、最小化按钮;鼠标单击窗体时窗体上输出提问,双击时显示回答。 分析:把窗体装扮成黑板模样,要设置窗体的BackColor属性为黑色,ForeColor属性为白色(模拟粉笔字的颜色)。窗体上没有最大化、最小化按钮,则需要设置窗体的MaxButton、MinButton属性。而单击、双击时的输出显示,可以在Click、DblClick事件里用Print和Cls方法来实现。

  (a)设计状态 (b)运行状态 (c)窗体单击 (d)窗体双击 图2.1 实验2.1模拟黑板 1) 属性设置

  表2.1

 实验1属性设置 对象名称 属性 属性值 窗体Form1 BackColor ForeColoFont MaxButton MinButton vbBlack Vbwhite False False

 2)代码编写 代码 遇到的主要问题及分析: Private Sub Form_Load() Form1.Caption = "模拟黑板" End Sub

 Private Sub Form_Click() Cls Print "1+1=?" End Sub

 Private Sub Form_DblClick() Cls Print "1+1=2" End Sub

 【思考】 如果进一步要求随机出题(简单的数学四则运算题)在窗体上输出并显示答案,该怎么做 Private Sub Form_Click() Dim a As Integer, b As Integer a = Int(Rnd * 10) b = Int(Rnd * 10) Print a; "+"; b; "="; a + b

  ‘减法等同理 End Sub

 2、窗体上有一个文本框Text1,要求当鼠标划过文本框Text1时,鼠标显示Cross“┼”形状;窗体上的一个标题为“复制”的命令按钮C1。通过属性窗口实现以上的设置之后,编程实现: 1)程序启动时窗体标题为“修改文本框内容”; 2)单击命令按钮C1,则把按钮上的标题复制到文本框,并使按钮不可见; 3)单击窗体空白处,按钮可见但不可用。

 Ø 必要属性设置 表2.2

 实验2属性设置 对象名称 属性 属性值 Text1 mousepointer 2-cross C1 caption 复制

  Ø 代码编写 代码 遇到的主要问题及分析: 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中被选中文本的第一个字符的顺序号,被选中文本的字符个数,被选中的文本内容分别显示在文本框Text2,Text3,Text4中。 3)分别在文本框Text2,Text3中输入你所希望文本框Tex1中选中文本信息的顺序号以及长度,单击“选中文本”命令按钮,则根据文本框Text2,Text3输入的内容,在Text1中选中对应的内容,同时在Text4中显示出来。 【提示】部分相关属性和事件:SelStart、SelLength、SelText、KeyPress Ø 必要的属性设置 表2.3 实验3属性设置 对象名称 属性 属性值 Text1 text “” Text2 text “” Text3 text “” Text4 text “” Command1 caption 显示选中信息 Command2 caption 选中文本 Text1 tabindex 0 Text3 tabindex 1 或者Text2 tabstop 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

 【提高题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() 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 <> "" Then

 Command1.Enabled =true Command2.Enabled =true End If End Sub 其他代码见p36

 实验心得体会

 成绩: 教师签名:

  实验日期

  年

  月

  日 实验三

  顺序结构程序设计 实验目的: 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 "a="; a; "b="; b Print "a+b="; a + b Print "a-b="; a - b Print "a*b="; a * b Print "a mod b="; a Mod b End Sub

  2、定义一个变量a,由键盘输入其值为任意四位整数,编程实现分别输出个、十、百、千位四个数字,并各个数字的平方和。 【提示】利用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 "个位:"; b Print "十位:"; e Print "百位:"; d Print "千位:"; c Print "平方和:"; b ^ 2 + e ^ 2 + d ^ 2 + c ^ 2 End Sub

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

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

 Private Sub Command2_Click() Text1 = Format(9 / 5 * Val(Text2) + 32, "0") End Sub

  4、设计窗体并实现: 1)单击“连接”,将Text1和Text2的内容连接起来显示在Text3; 2)单击“求和”,求出Text1和Text2之和显示在Text3 ; 3)要求:在单击“连接”之前Text3不可见,点“连接”之后“连接”按钮不可用;

 (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 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值="; a Print LCase(Chr(a)); "的ASCII值="; Asc(LCase(Chr(a))) 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 "鸡有"; x; "兔子有"; y End Sub

 【选作题2】编程实现电话号码自动升位。要求将原来任意一个带区号的7位电话号码升到8位,在电话号码最前面加8。程序运行结果如图所示。(要求必须适用于3位或4位区号的电话号码) 【提示】无论区号或电话号码是多少位,只要找到“-”的位置,就可以将“-”之前(包括“-”)的左子串、“8”、以及“-”后面剩下的字符串 “串”起来。 Ø 代码编写: 代码 遇到的主要问题及分析: Private Sub Form_Click() a = InStr(Text1, "-") Text2 = Left(Text1, a) + "8" + Mid(Text1, a + 1) 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, "0.00") End Sub

 Private Sub Command2_Click() r = Val(Text1) Text3 = Format(2 * PI * r, "0.00") End Sub

 Private Sub Text1_LostFocus() If Not IsNumeric(Text1) Then MsgBox "输入有非数字字符,请重新输入"

  Text1 = ""

  Text1.SetFocus End If End Sub

 实验心得体会

  教师签名:

  成绩:

 实验日期

  年

  月

  日 实验四

  选择结构程序设计 实验目的: 2.掌握逻辑表达式的正确书写形式。 3.掌握单分支与双分支条件语句的使用。 实验内容 1.编写程序,通过键盘输入变量x的值,求函数y的值。

 代码 遇到的主要问题及分析: 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) = "c" Then MsgBox ("yes") Else: MsgBox ("no") 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 & "+" & y & "=" & x + y Else

 Label1 = x & "-" & y & "=" & x - y End If End Sub

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

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

 Private Sub Text1_LostFocus() If Not IsNumeric(Text1) Then i = MsgBox("是否重新输入", 4 + vbQuestion, "警告") 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("是否重新输入", 4 + vbQuestion, "警告") 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

 【提高题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

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

 【提示】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

 实验心得体会

 教师签名:

  成绩:

 实验日期

  年

  月

  日 实验五

  选择结构程序设计(续) 实验目的: 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 "x1="; x1, "x2="; x2 End Sub

 2、输入一个字符,判断该字符是字母、数字还是其他字符,并作相应的显示。 【要求】分别使用两种语句If ……ElseIf……和Select Case 来完成。 代码 遇到的主要问题及分析: If ……ElseIf语句实现 Private Sub Command2_Click() a = InputBox("输入一个字符") If a >= "a" And a <= "z" Or a >= "A" And a <= "Z" Then

 MsgBox a + "是字母" ElseIf a >= "0" And a <= "9" Then

 MsgBox a + "是数字" Else

 MsgBox a + "是其他字符" End If End SubSelect Case语句实现 Private Sub Command1_Click() a = InputBox("输入一个字符") Select Case a

 Case "a" To "z", "A" To "Z"

 MsgBox a + "是字母"

 Case "0" To "9"

 MsgBox a + "是数字"

 Case Else

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

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

 代码 遇到的主要问题及分析: Private Sub Text1_Change() a = Right(Text1, 1) Select Case a

 Case "a" To "z"

 Text2 = Text2 + UCase(a)

 Case "A" To "Z"

 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 "Monday"

 Case 2

  MsgBox "Tuesday"

 Case 3

 MsgBox "Wednesday"

 Case 4

 MsgBox "Thursday"

 Case 5

 MsgBox "Friday"

 Case 6

 MsgBox "Saturday"

 Case 7

 MsgBox "Sunday"

 Case Else

 MsgBox "输入错误" End Select End Sub

 4、编程实现简单计算器功能。要求程序运行后,分别输入两个操作数以及运算符(+、-、*、/)后,单击“计算”按钮,则自动计算出表达式的结果,并显示在运算结果对应的文本框中。 【提示】除数为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 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 = "Basic1234" Then

 MsgBox ("祝贺你,成功登录!")

 Else

 MsgBox ("对不起,密码错误,无法登录!")

 I = I + 1

 If I >= 3 Then End

 End If

 End Sub

 参考p65例4.2 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 "直角三角形"

  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

  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 "错了,努力啊!"

 End If

  a = a + 1

  i = True

  Command1.Caption = "出题" End If End If If a = 10 Then MsgBox "答对了" & b 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

 实验心得体会

 教师签名:

  成绩:

 实验日期

  年

  月

  日 实验六

  循环结构程序设计 实验目的: 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 "满足条件的有" & t & "个" Print "s=" & s End Sub

 2. 编写程序用Print语句输出2000年至2500年间的所有闰年,要求每行输出8个。 【提示】: 1)用任意一种循环语句来完成,在循环体内使用选择结构来判断条件。 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) Ø 代码编写:

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

  课本80页

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

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

 Private Sub Command1_Click() Print "陌生人给富翁的钱为" & 10 * 30 & "万" t = 1 s = 1 For i = 2 To 30

 t = t * 2

 s = s + t Next i Print "富翁给陌生人的钱为" & s / 1000000 & "万" 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 a = InputBox("输入成绩") Select Case a

 Case "A"

 b = 5

 Case "B"

 b = 4

 Case "C"

 b = 3

 Case "D"

 b = 2

 Case "E"

 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

  实验心得体会

  教师签名:

  成绩:

  实验日期

  年

  月

  日 实验七

  循环结构程序设计(续) 实验目的: 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) For i = 1 To m - 1

 If

  【1】 m Mod i = 0

  Then

 k = k + i

 ' 因子之和 Next i 【1】

 【2】

  【3】

  【4】

 【5】

  If

  【2】 m = k

 Then

 Picture1.Print m & "是完数"

 Picture1.Print m; " = 1";

 For i =

 【3】 2 To m - 1

  ' 因子输出

  If m Mod i = 0 Then Picture1.Print "+"; i;

  Next i

 【4】

 Picture1.Print Else

 Picture1.Print m & "不是完数"

 End If

  【5】

  End Sub 3、编写程序,实现求解把50元钱分成一元、二元和五元的纸币且纸币张数共为20张的分法有多少种? 代码 遇到的主要问题及分析:

 Private Sub Form_Click() Print "5元", "2元", "1元" 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 "分法有" & n & "种" End Sub

 4、参考下图的算法,编写程序,输入两个正整数,求这两个数的最小公倍数。 代码 遇到的主要问题及分析:

 课本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

 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 = "123456" For i = 1 To 6

  For j = 1 To i

  If i Mod 2 = 1 Then

 Picture1.Print " " & Left(s, j) & "

  ";

  Else

 Picture1.Print "-" & Left(s, j) & "

  ";

  End If

  Next j

  Picture1.Print Next i End Sub

 实验心得体会

  教师签名:

  成绩:

 实验日期

  年

  月

  日

 实验八

  常用控件 实验目的: 1.掌握单选按钮、复选框的重要属性、事件和方法。 2.掌握框架的使用。 3.掌握列表框、组合框的重要属性、事件和方法。 实验内容 1、窗体上有两个复选框,名称分别为Chk1和Chk2,标题分别为“能被5整除”和“能被6整除”,一个命令按钮Command1,以及一个文本框Text1。编写适当的事件过程,使得程序运行时对复选框进行选择,单击命令按钮,可根据下表的规定,计算100~200之间符合要求的整数之和,把结果显示在Text1中。 选择 要求 Chk1 只能被5整除 Chk2 只能被6整除 Chk1 和Chk2 既能被5整除,也能被6整除 都不选择 只能被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() 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门课程,不能再选了!”。(要注意条件的放置位置问题) Ø 需要的属性设置 表9.1

 实验1属性设置 对象名称 属性 属性值 List2

  Sorted True Ø 代码编写:

 代码 遇到的主要问题及分析: Private Sub Form_Load() List1.AddItem "Visual Basic 程序" List1.AddItem "数据结构" List1.AddItem "操作系统" List1.AddItem "硬件技术基础" List1.AddItem "计算机网络" List1.AddItem "多媒体技术" List1.AddItem "C++程序设计" 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整除的数添加到列表框中。 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

 【提高题】设计一个运行界面如下图所示的程序,要求单击单选按钮、复选框、列表框或组合框时,立即在文本框中显示相应的文字格式。 【提示】列表框中的字体可通过Screen对象的Fonts字符数组获得,组合框中的字号通过程序自动形成6~40磅值的偶数(详见书P113) Ø 代码编写:

 代码 遇到的主要问题及分析: Private Sub Check1_Click() Text1.FontBold = Not Text1.FontBold End Sub Private Sub Check2_Click() Text1.FontItalic = Not Text1.FontItalic End Sub Private Sub Check3_Click() Text1.FontUnderline = Not Text1.FontUnderline End Sub Private Sub Option1_Click() Text1.ForeColor = vbBlack End Sub

 Private Sub Option2_Click() Text1.ForeColor = vbRed End Sub

 Private Sub Option3_Click() Text1.ForeColor = vbBlue End Sub

 列表框和组合框详见书P113

 【提高题】窗体上有两个标签,标题分别为“查找”和“替换为”;两个名称分别为Op1和Op2的单选按钮,标题分别为“第一个” 和“全部”;三个文本框,其中Text3可多行显示,有内容;一个命令按钮,标题分别为“确定”。程序运行时,在Text1中输入要查找的内容,Text2中输入要替换的内容。由单选按钮确定替换第一个还是全部替换。

 Private Sub Command1_Click() Dim n% k = 1

  '从开始查找 m = Len(Text1.Text) Do

  a =

 InStr

 (k, Text3.Text, Text1.Text)

 'a为要查找的内容出现的位置,为0时表示没找到

  If a >0 Then

 'a>0表示找到了,则选中要查找的内容,再替换

  Text3.SelStart = a - 1

  Text3.SelLength = Len(Text1.Text)

  Text3.seltext

  = Text2.Text

  If

  option1=true

  Then

  '不需要多次替换则退出

  Exit Do

  End If

 k = a + m

 '为继续查找确定起始点

 End If Loop

  until

 a = 0

  '找不到退出 End Sub 【选作题】设计一个运行界面如下图所示的程序。在“主菜”组合框中选择一种食品(不可输入),单击“添加主菜”按钮即可将该项内容添加到右边的列表框;在“饮料”组合框中选择或输入一种饮料,单击“添加饮料”按钮即可将该项内容添加到右边的列表框。在右边的列表框中选择某项并单击“不要这个<”按钮即可从列表框中删去该项;单击“我不吃了<<”可清除列表框中全部内容。 【要求】右边所点的菜单中不允许出现重复的菜。 【提示】添加的时候要先判断是否菜单中是否已经有了。

 Ø 代码编写:

 代码 遇到的主要问题及分析: Private Sub Command1_Click() f = True For i = 0 To List1.ListCount – 1

 ‘菜单中不允许出现重复的菜

  If List1.List(i) = Combo1.Text Then f = False Next i If f = True Then List1.AddItem Combo1.Text Text1 = "你点了" & List1.ListCount & "种食物" End Sub

 Private Sub Command2_Click() List1.AddItem Combo2.Text

 ‘饮料可以重复 Text1 = "你点了" & List1.ListCount & "种食物" End Sub

 Private Sub Command3_Click()

 List1.RemoveItem List1.ListIndex

 Text1 = "你点了" & List1.ListCount & "种食物" End Sub

 Private Sub Command4_Click() List1.Clear Text1 = "你点了" & List1.ListCount & "种食物" End Sub

 Private Sub Form_Load() Combo1.AddItem "。。。。" Combo2.AddItem "。。。。" End Sub Style=2 组合框,不是列表框 实验心得体会

 教师签名:

  成绩:

  实验日期

  年

  月

  日

 实验九

  常用控件(续) 实验目的: 1、掌握图片框、图像框、计时器的属性和方法和事件及使用。 2、掌握滚动条的重要属性、事件和方法。 3、了解图片框和图像框的区别。掌握形状控件的重要属性以及使用。 实验内容 1、窗体上有一组合框Combo1,一文本框Text1,三个命令按钮,要求: 1)程序一开始运行时,Combo1中有若干选项,命令按钮"确定"不可用 2)选中Combo中某个项目,单击"修改",则将该项目复制到Text1中(可在Text1中修改),同时"确定"按钮可用 3)单击"确定"将修改过的Text1替换组合框中原有的内容,同时"确定"按钮不可用. 4)单击"添加",将Text1中的内容添加到组合框中 【提示】修改组合框中选中的内容要通过代码来重新设置Combo1.List(Combo1.ListIndex)值的,而不能直接设置Text属性值。 Ø 代码编写:

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

 2、在窗体的Label中每隔2秒显示“你好中国”(即每隔2秒显示一次标签)。 【提示】 1)设置时钟控件的Interval值使程序每隔2秒,调用一次计时器的Timer事件。 2)将标签的状态设置成:显示……隐藏……显示……隐藏…… Ø 代码编写:

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

 3、窗体上有一图片框,名为P1。单击图片框,则在图片框上显示“单击图片框”。单击窗体,则在窗体上显示“单击窗体”。要求不能用变量,每个事件只允许写一句代码。 Ø 代码编写:

 单击图片框 单击图片框

  4、如右图所示,将滚动条的范围设置为0~1000,在文本框中输入一个数后按下“移动”按钮。如果文本框中是正数则滚动条向右移动相应刻度,但若超过最大刻度则MsgBox提示“输入值太大”; 如果文本框中是负数则滚动条向左移,超过最小刻度则不再动,并MsgBox提示。

 【提示】假定滚动条当前位置的Value值为200,在文本框输入300,单击“移动”按钮,则滚动条的值应变为500;再输入-800,再单击“移动”按钮,则滚动条的值应变为0,并用MsgBox提示“已移动到最左边”. Ø 代码编写:

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

  5、窗体上添加一Shape形状控件,名为“Shape1”,两个名称分别为Command1,Command2的命令按钮,标题分别为“圆”和“红色边框”。编写代码,程序运行时,单击“圆”按钮则Shape控件显示一个圆。单击“红色边框”按钮,则将Shape控件的边框颜色设为红色。 【提示】分别设置Shape控件的 Shape属性和BorderColor属性 Ø 代码编写:

 单击“圆”按钮 单击“红色边框”按钮

  6、如右图所示,编写程序,使窗体中的两个汽车图形能够相向运动直至相撞。此时屏幕弹出一个消息窗口显示“某年某月某日发生交通意外”。显示日期为当前系统日期。 【提示】根据两车的位置来判断是否相撞。 Ø 代码编写:

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

  【选作题1】窗体有一个矩形和一个圆,还有一水平滚动条和一垂直滚动条。程序运行时,移动某个滚动条的滑块,可使圆作相应方向的移动。滚动条刻度值的范围是圆可以在矩形中移动的范围。(如右图所示)。 【提示】水平滚动条和垂直滚动条的Min和Max属性值与矩形的位置及大小有关,最好通过代码在Form_Load事件中设置。

 Ø 代码编写:

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

 【选作题1】模拟Windows屏幕保护程序(如下图所示)。 可按下面提示分步实现(也可以以你的聪明才智,一步到位): l 文字从右往左运动,完全移出屏幕时同从屏幕最右边重新出现并继续左移。 l 文字能像弹球一样,碰到窗体边缘时能反弹。 l 每次碰到窗体边缘反弹时字体的颜色和大小随机变化。 【提示】移动控件的位置有两种方法(其中w和h分别表示水平方向或垂直方向移动的距离): Label1.Left=Label1.Left + h Label1.Top=Label1.Top + v Label1.Move Label1.Left + h Label1.Move Label1.Left, Label1.Top + v 重要提示:如果水平方向移动的距离为h,则当控件碰到窗体的边缘时,控件应该向相反的方向移动,即h=-h,垂直方向也一样。 Ø 代码编写:

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

 实验心得体会

 教师签名:

  成绩:

  实验日期

  年

  月

  日 实验十

  数组 实验目的: 1、掌握数组的声明、数组元素的引用。 2、掌握静态数组和动态数组的使用差别。 3、掌握数组的基本操作。应用数组解决与数组有关的常用算法。 实验内容: 1、随机产生10个200到300的整数,求最大值及其下标、最小值及其下标、平均值,并显示数组的所有元素值(按每行输出5个元素)以及最大值及其下标、最小值及其其下标和平均值。 Ø 代码编写:

 代码 遇到的主要问题及分析: Private Sub Form_Click() Dim a(1 To 10) As Integer t = 0 For i = 1 To 10 a(i) = Int(Rnd * 101 + 200) Print a(i); If i Mod 5 = 0 Then Print t = t + a(i) Next i Print "平均值为:"; t / 10 Max = a(1): imax = 1 Min = a(1): imin = 1 For i = 2 To 10

 If a(i) > Max Then Max = a(i): imax = i

 If a(i) < Min Then Min = a(i): imin = i Next i Print "数组最大值为"; Max, "最大值下标为"; imax Print "数组最小值为"; Min, "最小值下标为"; imin End Sub

 【进一步思考】 1)将这个10个数字,其前5个数字与后5个数字对换并输出,即:第一个数字与第六个数字互换,第二个数字与第七个数字互换,…… ,第五个数字与第十个数字互换。 代码 遇到的主要问题及分析: For i = 1 To 5

  x = a(i)

  a(i) = a(i + 5)

  a(i + 5) = x Next i For i = 1 To 10

 Print a(i);

 If i Mod 5 = 0 Then Print Next i

 2)如果要求这10个数字不重复呢?。(提示:要产生不重复的整数,则需要每产生一个整数,就在数组中查找新产生的数据是否已经存在数组中了,若有,则重新产生;若没有,则将产生的整数放入数组中,下标加1) 代码 遇到的主要问题及分析: Private Sub Form_Click() Dim a(1 To 10) As Integer a(1) = Int(Rnd * 101 + 200) Print a(1); For i = 2 To 10 t = Int(Rnd * 101 + 200)

  For k = 1 To i - 1

  If t = a(k) Then

  t = Int(Rnd * 101 + 200)

  k = 0 '有重复的数,则重新产生,新数和a(1)-a(i-1)比较有无重复

  End If

  Next k a(i) = t Print a(i); If i Mod 5 = 0 Then Print Next i End Sub

 3)如果要求随机产生10个递增的数字呢? 代码 遇到的主要问题及分析: Private Sub Form_Click() Dim a(1 To 10) As Integer a(1) = Int(Rnd * 101 + 200) Print a(1); For i = 2 To 10 t = Int(Rnd * 101 + 200)

  For k = 1 To i - 1

  If t < a(k) Then

  t = Int(Rnd * 101 + 200)

  k = 0 '有重复的数,则重新产生,新数和a(1)-a(i-1)比较有无重复

  End If

  Next k a(i) = t Print a(i); If i Mod 5 = 0 Then Print Next i End Sub 在上面一道题的基础上更改红色的字即可t < a(k)

 4)随机输出10个不重复的的A~Z(包括A和Z)的大写字母呢? 代码 遇到的主要问题及分析: Private Sub Form_Click() Dim a(1 To 10) As Integer a(1) = Int(Rnd * (90 - 65 + 1) + 65) Print Chr(a(1)),

 For i = 2 To 10 t = Int(Rnd * (90 - 65 + 1) + 65)

  For k = 1 To i - 1

  If t = a(k) Then

  t = Int(Rnd * (90 - 65 + 1) + 65)

  k = 0

  End If

  Next k a(i) = t Print Chr(a(i)), If i Mod 5 = 0 Then Print Next i End Sub 不重复的方法同2),随机数范围[65,90] 2、分类统计输入一串字符,统计各字母出现的次数,不区分字母大小写。 【提示】 (1)统计26个字母出现的个数,必须声明一个具有26个元素的数组,每个元素的下标表示相应的字母,元素的值表示对应字母出现的次数。 (2)从输入的字符串中逐一取出字符,转换成大写字符(使得大小写不区分),进行判断。 Ø 代码编写:

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

  课本121页例5.14 【进一步思考】输入20个百分制成绩,统计并输出各分数段人数,即0~59、60~69、70~79、80~89、90~100。 代码 遇到的主要问题及分析: Private Sub Command1_Click() Dim cj(1 To 20) As Integer, a(5 To 9) As Integer For i = 1 To 20 cj(i) = Val(InputBox("请输入成绩")) Select Case cj(i) \ 10

 Case 0, 1, 2, 3, 4, 5

 a(5) = a(5) + 1

 Case 6

 a(6) = a(6) + 1

 Case 7

 a(7) = a(7) + 1

 Case 8

 a(8) = a(8) + 1

 Case 9, 10

 a(9) = a(9) + 1 End Select Next i

 For i = 5 To 9 Print a(i), Next i End Sub

 3、编写程序,输出斐波那契级数1、1、2、3、5、8……的前30项,要求每行输出5个。(用数组来实现) 【提示】 斐波那契数列的特点是:第一、第二都是1,从第三项开始,前面相邻两项之和,构成了后一项。即 : a(n)=a(n-1)+a(n-2)。 代码 遇到的主要问题及分析: Private Sub Command1_Click() Dim a(30) As Long a(1) = 1 a(2) = 1 For i = 3 To 30 a(i) = a(i - 2) + a(i - 1) Next i For i = 1 To 30 Print a(i); If i Mod 5 = 0 Then Print Next i End Sub 整型数会溢出 【进一步思考】输出斐波那契级数1、1、2、3、5、8、13……,当某项的数值大于或等于30000时结束。 代码 遇到的主要问题及分析:

 Private Sub Command1_Click() a = 1 b = 1 Print a; b; t = 2 Do Until c >= 30000

 c = a + b

 Print c;

 t = t + 1

 If t Mod 5 = 0 Then Print

 a = b

 b = c Loop End Sub

 【选做题1】将二维数组 A 中的 100 个元素分别赋给一维数组 B 的每个元素并打印出来,要求把 A(1,1)到 A(1,10)依次赋给 B( 1)到 B(10),把 A( 2,1)到 A( 2,10)依次赋给 B( 11)到 B( 20),……,把 A(10,1)到 A( 10, 10)依次赋给B(91)到 B(100)。 Ø 代码编写:

 代码 遇到的主要问题及分析: Private Sub Command1_Click() Dim a(1 To 10, 1 To 10) As Integer Dim b(1 To 100) As Integer For i = 1 To 10

 For j = 1 To 10

 b((i - 1) * 10 + j) = a(i, j)

 Print a(i, j);

 '10个一行

 Next j

 Print

 '换行 Next i End Sub 这里要求数组100个元素都要有初值,比较麻烦,故省去,可以用双重for循环和inputbox输入初值 【选做题2】编写程序,输出输出n=7“杨辉三角”,如下图所示(两种显示方法)。

 【提示】分析上面的形式,可以找出其规律:对角线和每行的第一列均为1,其余各项是它的上一行中前一个元素和上一行的同一列元素之和。例如第四行第三列的值为3,它是第三行第二列与第三列元素值之和,可以一般地表示为:

  a(i,j)=a(i-1,j-1)+a(i-1,j) 代码 遇到的主要问题及分析: Private Sub Command1_Click() Dim a(6, 6) As Integer For i = 0 To 6

  For j = 0 To i

  If j = 0 Or i = j Then

  a(i, j) = 1

  Else

  a(i, j) = a(i - 1, j - 1) + a(i - 1, j)

  End If

  Next j Next i For i = 0 To 6

  For j = 0 To i

 Picture1.Print Tab(j * 5); a(i, j);

  Next j

 Picture1.Print Next i End Sub

 【提高题1】编写一学生成绩统计程序,用户先输入学生的人数及科目数,再输入各位学生的各科课程的考试成绩,要求该程序可以计算各个学生的平均成绩及每门课程的平均成绩。程序保存时,程序运行结果如图所示。 【提示】本题使用动态的二维数组能够较好完成任务,数组的行号表示学生,列号表示科目,分别对数组的行或列进行求和即可进行学生科目成绩的统计 代码 遇到的主要问题及分析: Private Sub Command1_Click() Dim a() As Integer x = Val(Text1.Text)

 '人数 y = Val(Text2.Text)

 '科目数 ReDim a(x, y) For i = 1 To x

  For j = 1 To y

 a(i, j) = InputBox("第" & i & "位同学的第" & j & "门成绩") Next j Next i For i = 1 To x

  s = 0

  For j = 1 To y

  s = s + a(i, j)

  Next j Picture1.Print "第"; i; "位同学的平均成绩是"; s / y Next i For i = 1 To y

  s = 0

  For j = 1 To x

  s = s + a(j, i)

  Next j Picture1.Print "第"; i; "门课的平均成绩是"; s / x Next i End Sub

  【提高题2】矩阵转置。编写程序将2*3的矩阵转置,即转换成3*2的矩阵。 【提示】使用两个二维数组来完成。 Ø 代码编写:

 代码 遇到的主要问题及分析: Private Sub Command1_Click() Dim a(2, 3) As Integer, b(3, 2) As Integer For i = 1 To 2

  For j = 1 To 3

  a(i, j) = InputBox("")

  Print a(i, j);

  Next j

  Print Next i For i = 1 To 2

  For j = 1 To 3

 b(j, i) = a(i, j)

  Next j Next i For i = 1 To 3

 For j = 1 To 2

 Print b(i, j);

 Next j

 Print Next i End Sub

 实验心得体会

  教师签名:

  成绩:

 实验日期

  年

  月

  日

 实验十一

 数组(续) 实验目的: 1、掌握静态数组和动态数组的使用差别。 2、应用数组解决与数组有关的常用算法。 3、掌握控件数组的使用。 实验内容 1、 分别用选择排序法和冒泡排序法实现有N个元素数组的排序。N由键盘输入,数组元素的值在1~200之间,随机产生。 Ø 代码编写:

 代码 遇到的主要问题及分析: Dim x( ) as Integer n=val(inputbox(””)) Redim x(n-1) For i=0 to n-1 x(i)=int(rnd*200+1) Next i 选择排序法

 参看书106页

 冒泡排序法

  参看书107页

  2、利用Array函数给数组a赋值(数组元素的个数及每个元素的值自己设定),从键盘上输入一个数据,在数组中进行查找,如果数组中有,则删除数组中的这个元素,如果没有则提示“没有这个数”。

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

 【思考】如果将数组元素读入列表框再做插入或删除其中一个元素,应该怎样编程?

  3、输入一系列字符串,按递减次序排列。程序的运行界面如图11.1所示。 图形框

 图11.1 实验3 窗体界面

  【提示】(1)要声明窗体级变量n(表示放若干个字符串的计数器)及一个字符串数组。

 (2)每输入一个字符串,按Enter键后将Text的内容放到数组中,可用事件: Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then

 … End If

 End Sub

 (3) 单击“排序”按钮,进行排序并显示在图形框中。 Ø 代码编写:

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

  创建数组

  排序

 【选做题】做一个类似图11.2的界面的拨号器。

  图11.2 实验4 窗体界面

  图11.3 实验5 窗体界面

 Ø 代码编写:

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

 【提高题】做一个类似图11.3界面的简单计算器,并实现对应的功能。 Ø 代码编写:

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

 实验心得体会

  教师签名:

  成绩:

 实验日期

  年

  月

  日

 实验十二

 顺序文件 实验目的: 1、 掌握顺序文件、随机文件和二进制文件的特点和使用。 2、 掌握顺序文件的打开、关闭和读写操作。 3、 学会顺序文件在应用程序的使用 实验内容: 1、初始窗体上有四个命令按钮两个文本框(如图11.1所示)。要求: 1)建立文件名为“t1.txt”的顺序文件,内容来自文本框Text1。要求:每按一次回车键则将文本框Text1的内容写入文件,并清除文本框Text1的内容,直到文本框Text1内输入“END”字符串(不区分大小写),关闭文件。 2)单击“复制文件”按钮,则把“t1.txt”的顺序文件的内容全部复制到新文件“t2.txt”中,并给出相应提示。(只能使用一个变量,不能使用控件。)(如图12.1) 3)单击“合并文件”按钮,则将“t2.txt”内容合并“t1.txt”末尾,给出相应提示。 4)单击“显示”按钮,则把“t1.txt”的内容读出来显示在Text2中。

  图12.1 实验1 窗体各个运行状态界面

 Ø 代码编写:

 代码 遇到的主要问题及分析: 建立文件

 复制文件

 合并文件

  显示文件内容

  2、完善程序,实现: 1) 按下“读入并计数”按钮,将磁盘中的文件in.txt的内容读入显示在文本框中,并分别统计其中字母、数字和其他符号的数量,将结果显示在Picture1中。

  图12.2 实验2 窗体各个运行状态界面及out文件内容格式 2) 按下“写入文件”按钮,则将统计结果写入文件out.txt中,并给出提示“已写入文件”。 Dim sz%, ss%, sq% Private Sub Command1_Click()

  '读入并计数

  Dim c$

  Open

 【1】

  '打开in.txt文件

  Do While Not EOF(1)

 '准备读入

  c =

  【2】

 '每次读入一个字符

  Text1.Text = Text1.Text & c

  '将读入的字符显示在Text1中

  Select Case c

 Case

  【3】

 '字母

 sz = sz + 1

 Case

  【4】

  '数字

 ss = ss + 1

 Case Chr(10), Chr(13)

 '读出的是回车或换行符则不计数

 Case Else

 '其他符号

 sq = sq + 1

  End Select

  Loop

  【5】

 '将结果显示在Picture1中

  【6】

  Picture1.Print "其他";sq; "个"

  Close #1 End Sub Private Sub Command2_Click()

 '结果写入文件

  Open App.Path + "\out.txt" For Output As #1

  【7】

 '将结果写入out.txt中

 【8】

 Print #1,"其他";sq; "个"

  MsgBox "已写入文件"

  【9】

 End Sub 3、建立如下图所示包括五个命令按钮、图片框、列表框及标签的程序界面。编程实现下列功能: List列表框 Label标签 Picture图片框

 1)单击“新建”按钮,弹出Inputbox用于输入数组的元素个数N;随机产生任意N个[10,100]的随机整数存入数组A;并把数组A的各元素值显示在图片框中(每行5个元素);同时写入磁盘文件MyList.dat(与工程文件和窗体文件位于同一文件夹)。 2)单击“读取” 按钮,将文件MyList.dat的数据读出,存入数组B,同时添加到列表框中。 3) 单击“计算” 按钮,计算并在标签上输出数组B的最大值、最小值和平均值。 4)单击“添加” 按钮,将最大值、最小值和平均值。追加到“MyList.dat”的末尾并弹出“已写入文件!”的提示。 5)单击“退出”按钮,则退出应用程序。 Ø 代码编写:

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

  读取文件

 计算

  添加

  退出

 【选做题】建立一个多用户的密码登录程序,如下图所示。要求: 1)输入用户名及密码,单击“登录”按钮,则判断该用户名是否存在,如果存在,则进一步判断密码是否正确。分别给出相应提示信息。 2)输入用户名及密码,单击“注册”按钮,则先判断该用户名是否已有人注册了,如无,则把用户名和密码添加到文件中;如有人注册,则提示"该用户名已存在,请重新输入!" 3)单击“退出”按钮,则退出应用程序

 原始窗体

 用户名及密码均正确时提示

 用户名正确,密码错误

  用户名错误

  Ø 代码编写:

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

  注册

 实验心得体会

 教师签名:

  成绩:

 实验日期

  年

  月

  日 实验十三

 过程 实验目的: 1、 理解自定义函数过程的定义和调用方法; 2、 掌握自定义子过程的定义和调用方法; 3、 掌握子过程与函数过程的使用差别; 实验内容 1、编写一函数过程Prime(n),对于已知正整数n,判断该数是否为素数,函数的返回值类型为布尔型。 代码 遇到的主要问题及分析: Private Sub Command1_Click() Dim n% Dim z As Boolean n = Val(Text1.Text) z = prime(n) If z Then

 Print "是素数" Else

 Print "不是素数" End If End Sub Function prime(n%) As Boolean

  ‘函数过程Prime(n) prime = True For i = 2 To n - 1

  If (n Mod i) = 0 Then prime = False Next i End Function

  1)利用判断素数的函数,编写程序找出1~100之间的所有孪生素数(若两个素数之差为2,则这两个素数就是一对孪生素数)。例如:3和5、5和7、11和13等都是孪生素数。【提示】如果n和n+2都是素数,那就是孪生素数。 代码 遇到的主要问题及分析: Private Sub Command1_Click()

  ‘主过程,输出孪生素数 Dim i% Dim z As Boolean, y As Boolean For i = 2 To 98 z = prime(i) y = prime(i + 2) If z And y Then Print i & "和" & i + 2 & "是孪生素数" Next i End Sub Function prime(n%) As Boolean

 ‘函数过程Prime(n) prime = True For i = 2 To n - 1

  If (n Mod i) = 0 Then prime = False Next i End Function

  2) 窗体上包含有两个名称分别为Op1和Op2的单选按钮,标题分别为“100-200的素数和” 和“200-400的素数和”。还有一个文本框和两个命令按钮,标题分别为“求和”和“写入”。程序运行后,选中某个单选按钮,并单击“求和”按钮,则计算指明范围内的素数之和,并显示在文本框中。单击“写入”,则把结果存入Out.txt中。(要求素数判断必须函数来实现)。 代码 遇到的主要问题及分析: Dim s As Integer

 ‘全局变量 Private Sub Command1_Click()

  ‘主过程,求素数和 Dim m% s = 0 If Option1 Then

 For m = 100 To 200

 Tag = prime(m)

 If Tag Then s = s + m

 Next m End If If Option2 Then

 For m = 200 To 400

 Tag = prime(m)

 If Tag Then s = s + m

 Next m End If

 Text1 = s

 End Sub

 Private Sub Command2_Click()

  ‘主过程,结果写入文件 Open "d:\Out.txt" For Append As #1 Write #1, s Close #1 End Sub

  Function prime(n%) As Boolean

 '函数过程Prime(n) prime = True For i = 2 To n - 1

  If (n Mod i) = 0 Then prime = False Next i End Function

 2、编写一函数过程Fac(n),对于已知正整数n,求其阶乘值。 代码 遇到的主要问题及分析: Private Sub Command1_Click() Dim n% n = Val(Text1.Text) z = fac(n) Print z End Sub Function fac(n%) As Integer

  ‘函数过程Fac(n) If n = 1 Then

  fac = 1 Else

  fac = n * fac(n - 1) End If End Function

 1)利用Fac(n)函数,编写程序分别输入两个正整数X和Y, 计算并输出x!+(x+1)! +(x+2)! + …… +(x+y)!之和。 代码 遇到的主要问题及分析: Private Sub Command1_Click()

 ‘主过程,计算求和 Dim x%, y%, i% x = Val(Text1.Text) y = Val(Text2.Text) For i = x To y z = fac(i) s = s + z Next i Print s End Sub Function fac(n%) As Integer If n = 1 Then

  fac = 1 Else

  fac = n * fac(n - 1) End If End Function

 2) 利用Fac(n)函数,编写程序分别输入两个正整数m和n(n≥m),求组合数的值。 代码 遇到的主要问题及分析: Private Sub Command2_Click()

  ‘主过程,求组合数 Dim m%, n% Dim z As Single m = Val(Text1.Text) n = Val(Text2.Text) z = fac(n) / (fac(m) * fac(n - m)) Print z End Sub Function fac(n%) As Integer If n = 1 Then

  fac = 1 Else

  fac = n * fac(n - 1) End If End Function

  3、在上周实验【选作题】的基础上完成,编写一查找Search(fn$,s$)函数,用于判断指定文件中,用户名是否已注册。并利用查找Search(fn$,s$)函数实现用户的注册及登录功能。 代码 遇到的主要问题及分析: Function

 ‘Search(fn$,s$)函数

 End Function

 Private Sub Command1_Click()

  ‘用户注册

  End Sub

 Private Sub Command2_Click()

  ‘用户登录

  End Sub

  【选作题】编写一子过程Delestr(s1,s2),将字符串s1中出现s2子字符串删去,结果仍旧存放于s1中。 【提示】

 (1)在S1字符串中找S2的子字符串,可利用Instr( )函数,要考虑到S1中可能存在多少或不存在S2字符串,用Do while Instr(s1,s2)>0循环结构来实现。

 (2)若在S1中找到S2字符串,首先确定S1 字符串,首先要确定S1字符串的长度,因S1字符串在进行多次删除时,长度在变化。然后通过Left()、Mid()函数或Right()函数的调用达到删除S1中存在的S2字符串。 Ø 代码编写: 代码 遇到的主要问题及分析: Private Sub Command1_Click() s1 = Text1 s2 = Text2 Call Delestr(s1, s2) Text1 = s1 End Sub Sub Delestr(s1, s2) i = InStr(s1, s2) Do While i > 0 k = i + Len(s2) ls = Left(s1, i - 1) s1 = ls + Mid(s1, k) i = InStr(s1, s2) Loop

  实验心得体会

  教师签名:

 成绩:

 实验日期

  年

  月

  日 实验十四

 过程(续) 实验目的: 1、掌握自定义子过程以及函数过程的定义和调用方法; 2、掌握形参和实参对应关系;值传递和地址传递的传递方式以及区别。 3、掌握多窗体调用。 实验内容 1、编写一函数过程FunMax( a( ) ),求一维数组a中的最大值。主调程序随机产生10个-100到100之间的整数,调用FunMax函数过程,显示数组的最大值。 代码 遇到的主要问题及分析: Function

 ‘FunMax( a( ) )

 End Function

 Private Sub Command1_Click()

  ‘主程序,显示数组的最大值

 End Sub

  2、编写一子过程ProcMin,求一维数组a中的最小值,子过程的形参自己确定。主调程序随机产生10个100到200之间的整数,调用ProcMin子过程,显示数组的最小值。  代码 遇到的主要问题及分析: Sub

  ‘子过程ProcMin

 End Sub

 Private Sub Command1_Click()

  ‘主程序,显示数组的最小值

 End Sub

  3、运行下面程序段,体会过程调用过程中传值和传址的区别。 Private Sub test(ByVal p%, ByVal m%, n()) 运行的结果:

 分析原因:

  p = p + 1: m = m + 1 n(1) = 999 Print "Sub:"; p; m; n(1) End Sub

 Private Sub Command1_Click() Dim c() a% = 1: b% = 2 c = Array(1, 2, 3) Call test(a, b + 3, c) 运行的结果:

  分析原因:

  Print "Main:"; a; b; c(1) End Sub Ø 运行程序,分析结果。 Ø 将Private Sub test(ByVal p%, ByVal m%, n()) 改为Private Sub test(p%, m%, n())再运行并分析 根据运行结果回答下面问题: 1) 为什么两种调用方式,a的输出的结果会发生变化,而b却不变?

 2) 可以将Private Sub test(ByVal p%, ByVal m%, n())改为Private Sub test(ByVal p%, ByVal m%, ByVal n())吗?为什么?

 【选作题】从键盘上输入一个整数,则在窗体上显示此整数所有不同的因子及因子个数。(求因子及因子个数要求用过程完成) 代码 遇到的主要问题及分析: Sub

  ‘子过程

 End Sub

 Private Sub Command1_Click()

  ‘主程序

 End Sub

 【提高题】编写一个包含多个窗体及多个模块的工程: 窗体1:主窗体,放置按扭,准备调用其他窗体; 窗体2:输入一个数,显示它是否幸运数; 幸运数:指前两位数字之和等于后两位数字之和的数。 窗体3:输入两个数,显示它们之间的所有幸运数; 窗体4:输入一个数,显示比它小的最大幸运数;

 【提示】 l 编写判断一个四位数是否幸运数的函数过程Luck(返回值是逻辑型),放在主窗体中。注意,函数过程是必须是全局级的(即在函数定义时加Public或者缺省,但一定不能加Private),否则其他窗体不能调用,调用时要在函数名前加窗体名,如:Form1.Luck(Text1.text) l 先添加几个窗体并分别设置相应的控件及属性,并正确设置启动窗体。程序代码中利用多窗体的语句和方法将需要的窗体载入内存,不需要的窗体可隐藏或从内存中删去。 代码 遇到的主要问题及分析: Function

  ‘判断幸运数函数Luck

  End Function

 窗体1 Private Sub Command1_Click()

  ‘显示Form2

 End

 Sub

 窗体2 Private Sub Command1_Click()

  ‘判断输入的数是否为幸运数

 End

 Sub 窗体3 Private Sub Command1_Click()

  ‘两数之间的幸运数

 End

 Sub 窗体4 Private Sub Command1_Click()

  ‘比某数小的最大幸运数

 End

 Sub

  实验心得体会

  教师签名:

  成绩:

 实验日期

  年

  月

  日 实验十五

 菜单及通用对话框 实验目的: 1、掌握下拉菜单的规划、设计和使用方法。 2、掌握弹出式菜单的设计和使用方法。 3、掌握各种对话框的使用方法。 实验内容 1、设计菜单(如右图所示),在窗体上放置一个文本框,设置其Multiline属性为True。设计包含有3个主菜单项的菜单系统,分别为“文件”、“格式”和“查找”。其中“文件”包括 “打开”、“保存” 、“清除”和“退出”四个子菜单。“清除”与“退出”之间有一条分隔线。“格式”包括“字体”和“颜色”两个子菜单。“查找”包括“查找下一个”和“替换”两个子菜单。为菜单编写如下有关代码: 1)新建:新建一个空的文本文档 2)打开:弹出打开对话框,打开文件显示在文本框中 3)保存:弹出保存对话框,将文件保存到指定路径中。 4)退出:关闭应用程序 5)字体:弹出字体对话框,设置文本框的字体属性 6)颜色:弹出颜色对话框,设置文本框的字体颜色 7)查找:显示如图输入对话框,输入要查找的内容后,可在文本框内查找指定的内容。 要求:1)“格式”菜单的显示与否与文本框中有无内容相关联,当文本框中的内容为空时,隐藏“格式”菜单;当文本框输入内容的时候,显示“格式”菜单。 3) 可通过鼠标右键弹出“格式”菜单。

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

 ‘新建空的文档

  End

 Sub

  Sub

 ‘打开

 End Sub

 Sub

 ‘保存

 End Sub

 Sub

 ‘清除

  End

 Sub

  Sub

 ‘退出

  End

 Sub

  Sub

 ‘字体

  End Sub

 Sub

 ‘颜色

 End

 Sub Sub

 ‘查找下一个

  End

 Sub Sub

 ‘替换

 End

 Sub Sub

 ‘显示隐藏格式菜单

  End

 Sub Sub

 ‘右键弹出格式菜单

 End

 Sub

 实验心得体会

 教师签名:

  成绩:

  实验日期

  年

  月

  日 实验十六

 随机文件(选作) 实验目的: 1、掌握自定义类型的定义及其变量的声明以及变量元素的引用。 2、掌握随机文件的打开、关闭和读写操作。 3、学会随机文件在应用程序的使用。 实验内容 1、窗体上Form1上有三个命令按钮,两个图片框,和一个标签(如图16.1)。 Picture1 Picture2

 图16.1 实验1 运行界面 要求: 1)自定义一个StudType类型,包括姓名、性别、电话号码和学校四个成员,结构如下: 姓名(Name):字符串(长度为10) 性别(Sex):字符串(长度为2) 电话号码(Tel):字符串(长度为11) 学校(School):字符串(长度为20) 代码 遇到的主要问题及分析: Type

  ‘自定义StudType类型

 End Type

  2)程序运行后,单击“文件写入”,则以随机存取方式打开当前目录下的文件”Stud.txt”,把记录个数显示在标签Label1中;并根据提示向文件添加记录,每写入一个记录后,都要询问是否再输入新记录,回答”N”或”n”时,则停止输入;重新更新标签中的记录个数。 代码 遇到的主要问题及分析: Sub

  ‘向文件添加记录

 End Sub

  3)单击“文件读取”,则以随机存取方式打开当前目录下的文件”Stud.txt”,读取文件中的全部记录,并在图片框Picture1显示出来,并把记录个数显示在标签Label1中。 代码 遇到的主要问题及分析: Sub

  ‘读取文件中的全部记录

  End Sub

  4)单击“指定记录读取”,则弹出一个输入框,提示输入所要显示的记录号,以随机存取方式打开当前目录下的文件”Stud.txt”,读取指定记录号的记录,并在并在图片框Picture2显示出来。 程序运行结果如下图所示。

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

  ‘读取文件中的某条指定记录

  End Sub

  实验心得体会

 教师签名:

  成绩:

 附录:VB统考编程题(精选) 【特别提醒】统考中的编程题目通常在某个指定的文件夹下面已经有现成的但不完整的窗体或部分程序,考生在已有的基础上补充完成,不需要自己重新做窗体和编程。正确的作法是打开指定文件夹中的工程文件(.vbp),之后按题目要求完成并保存。 一、简单操作题(15分/题) 1、 在名称为Form1的窗体中建立一个名为HS1的水平滚动条,其最大值为200,最小值为0,使用属性窗口设置控件属性。程序运行后,每次修改滚动条的位置时都执行语句Print HS1.value。 图附1

 简单操作1运行界面 2、请在窗体上添加三个文本框,名称分别为Text1、Text2和Text3,要求程序运行的时候,焦点光标在Text1上,按下键盘上的Tab键后,焦点跳到Text3上。(本题不需要编写代码,只需设置对应的属性即可)。 3、窗体上有一个框架名称为Frm1,标题为“框架”,高度为2000,宽度为3000.再在框架中画一个文本框,名称为T1 , 距离框架左边的距离为500,上边的距离为300。文本框的初始内容设置“文本框”,同时将窗体的标题设置为“框架及文本框”。 4、 1)设置图像框的初始大小Height为1500,width为2000; 2)窗体的最大化,最小化按钮不可见;(提示设置窗体的MaxButton和MinButton属性) 3)单击缩小按钮,图像框的大小缩小300,即Height和width分别减少300; 4)单击放大按钮,图像框的大小增加500,即Height和width分别增加500; 5)按回车键相当于按“放大”按钮;(提示设置按钮的Default属性) 6)按“Esc”键相当于按“缩小”按钮;(提示设置按钮的Cancel属性) 注意:控件的初始属性必须通过属性窗口来设置,否则不给分。 (本题将几个简单操作题合并) 图附2

 简单操作4运行界面 5、Form1上画一文本框Text1,通过属性窗口设置属性实现以下功能: 1)窗体标题为“设置文本框属性” 2)文本框可显示多行,显示垂直滚动条,用3号黑体显示“程序设计” 6、 窗体上有两个名称分别为cmd1和cmd2的按钮,运行程序时只能看到cmd1,单击cmd1,则cmd2出现,cmd1隐藏,单击cmd2,则cmd1出现,cmd2隐藏。 7、 建立如下菜单: 第一级 第二级 名称 有效性 文件

 File 有效

 打开 Open 有效

 新建 New 有效

 关闭 Close 无效 编辑

 Edit 有效 8、窗体上有一个文本框和标题为“复制”的命令按钮C1,编程实现:运行时窗体标题为“修改文本框内容”(可在Form_Activate ()事件中修改);单击按钮,按钮上的标题复制到文本框,并使按钮不可用;单击窗体空白处,按钮可用。(20分) 图附3

 简单操作8运行界面 9、单击命令按钮Cmd1,用代码设置滚动条Vsb1的属性: max为窗体高度,min为0,LargeChange为50,SmallChange为10。当拖动滚动条的滑块时,窗体上显示滚动框的位置值。

 10、窗体上有一个文本框和一个水平方向的滚动条,编程设置:将滚动条的min、max 、Largechang、SmallChang的初始值分别设置为0,2200,25,5;当移动滚动条时,可扩大或缩小文本框的高度,并保持高与宽的比例为1:3。

 11、窗体上有一个文本框和一个垂直方向的滚动条,在窗体上设置:Text1.Text为“家”,FontName为黑体,滚动条的min、max 、Largechang、SmallChang的初始值分别设置为10,100,5,2;当移动滚动条时,Text的字体随之改变。

 12、窗体中有一个标签和一个计时器,设置计时器的间隔为3秒。每3秒标签显示→隐藏→显示。

 13、窗体上有垂直和水平滚动条,设置其最大值100,最小值0,增量为10,鼠标单击滚动条时将两个滚动条的值分别显示在两个标签中,显示的格式类似X=36,Y=80。

 基本应用题(20分/题) 1、在名称为Form1的窗体中将窗体标题设置为“售货机”,在窗体中已有一个名称为Pic1的图片框,请画两个标签Label1和Label2、两个框Text1和Text2、一个名称为Command1的命令按钮(如图所示),使用属性窗口设置控件属性。程序运行后,输入货物的数量及单价,单击“总价=”按钮求出总价(总价=数量*单价)并输出在Pic1中(不必进行数据的有效性验证)。 图附4

 基本运用1运行界面

  图附5

 基本运用2运行界面

 2、窗体中有两个标题分别为“体育”和“音乐”的复选框和两个标题为“选修”和“不选修”的单选按钮,一个名称为Label1的标签。编写适当的事件过程,使得程序运行时对复选框和单选按钮进行选择,单击窗体,可根据下表的规定在标签中显示相应信息。 选择 在标签中显示的信息 Check1和Option1 只选修体育 Check1和Option2 不选修体育 Check2和Option1 只选修音乐 Check2和Option2 不选修音乐 Check1、Check2和Option1 选修音乐和体育 Check1、Check2和Option2 不选修音乐和体育

 3、窗体上有一个文本框Text1、一个标签Label1和两个名称分别C1和C2命令按钮,标题分别为“显示”和“恢复”,编写程序,程序运行时,在文本框中输入“学习VB知识”,再单击“显示”按钮,则标签和文本框消失,并在窗体上显示文本框的内容。单击“恢复”按钮则标签和文本框恢复如初。

 4、 窗体上有两个标题分别为“添加”和“清除”的命令按钮,以及两个列表框。编写程序,在右边的列表框中选择一个列表项,单击“添加”按钮,则把该选项移动左边的列表框中。在左边的列表框中选择一个列表项,则把该项移回列表框中。

 5、 窗体上一个名称为C1,标题为:“输入”的命令按钮和一个文本框。程序运行后,单击命令按钮则弹出一个对话窗口提示“是否输入”,提示窗口上只有两个命令按钮:“是”和“否”,文本框中显示选择的命令按钮返回值。

 6、窗体上有一个名称为C1,标题为“确定”的命令按钮,一个名称为P1的图片框以及一个文本框。程序运行时图片框不可见,要求在文本框中输入内容,单击命令按钮,则文本框消失,图片框显示,并且在图片中显示文本框的内容。

 7、 窗体上有四个名称分别为Text1、Text2、Text3和Text4的文本框 和一个名称为C1,标题为“计算”的命令按钮。要求程序运行时,分别在Text1和Text2输入两个整数,单击“计算”按钮,则求这两个整数之间的素数和,并显示在Text3中;求这两个整数之间的偶数和,并显示在Text4中。

 8、 窗体上画一个名称为Timer1的计时器控件,利用属性窗口设置适当的属性,在程序运行时,每隔2秒,调用一次计时器的Timer事件,保证程序过程中,每隔2秒,在窗体上显示“欢迎参加计算机等级考试”。单击窗体时,将窗体标题的改为“设置计时器属性”。

  9、 窗体上有两个文本框名称分别为Text1、Text2、和两个名称为Op1,标题分别为“Cos”“Sin”的单选按钮数组。要求1)利用属性窗口设置的属性,使文本框的内容向右对齐。2)在Text1中输入40,单击命令按钮则计算对应的单选按钮所求的正弦或余弦值将结果显示在Text3中(保留小数点3位,圆周率取3.14159)

 10、 窗体有一个名称为Label1的标签,标签的标题为空,一个名称为L1 的列表框。利用属性窗口设置列表框的选项分别为“123”,“248”,“456”,“abcd”,“xyz”。程序运行时,单击列表框,则把该项目在列表中的编号显示在标签中。

 11、随机显示3*3的数组(0~10之间),求所有元素之和及对角线6个元素之和。

 12、程序界面中,设置Text3可多行显示,有内容。程序运行时,在Text1中输入要查找的内容,Text2中输入要替换的内容。由单选按钮确定替换第一个还是全部替换。

  图附6

 基本运用12运行界面

  图附7

 基本运用13运行界面

 13、创建菜单如下图的菜单:操作--清除--复制 (名称分别为:M1、Clear、Copy)。要求:单击“复制”按钮,将Text1的内容全部复制到Text2中;单击“清除”按钮,则清空Text2。

 14、加密程序:根据单选按钮的数字,将明文中每个字母改为其后第n个字母。

 图附8

 基本运用14运行界面

  图附9

 基本运用15运行界面

 15、Text1或Text2无内容时,“剪切”和“复制”按钮不可用,否则将内容复制或剪切到Text3。Text3无内容时,“粘贴”按钮不可用,否则将Text3粘贴到光标所在的文本框中(Text1或Text2)。

 16、窗体上有两个列表框List1和List2,List2中有若干项目。要求:选中List2一个项目,单击“添加”,则把该项目添加到List1中,同时在List2中删除;选中List1一个项目,单击“清除”,则把该项目移回List2中。

 17、创建二级菜单,文件-新建/保存/打开(名称分别为:VbFile、VbNew、VbOpen、VbSave),以及帮助(名称为VbHelp)。选中“文件”菜单下的某个二级菜单,用Msgbox显示菜单的标题。

  图附10

 基本运用17运行界面

 图附11

 基本运用18运行界面

 18、1)程序运行时,Combo中有若干选项,命令按钮“确定”不可用; 2)选中Combo中某个项目,单击“修改”按钮,则将该项目复制到Text1中,“确定”按钮变为可用; 3)修改Text1中内容,单击“确定”按钮将修改过的Text1替换组合框中原有的内容,“确定”按钮不可用; 4)单击“添加”按钮,将Text1中的内容添加到组合框中。

 19、程序运行时将1~100之间能被7整除的数添加到列表框中,按“计算”按钮,对列表框中的数求和。

 图附12

 基本运用19运行界面

 图附13

 基本运用20运行界面

 20、窗体有一个矩形和一个圆,还有一水平滚动条和一垂直滚动条。程序运行时,移动某个滚动条的滑块,可使圆作相应方向的移动。滚动条刻度值的范围是圆可以在矩形中移动的范围。

 21、单击窗体上命令按钮Cmd1,产生50个0~500之间的随机数,存放在数组中,并求出最小值。

 22、制作如图所示包括“文件”和“编辑”的水平菜单,其中文件菜单中包括“打开”和“退出”,编辑菜单包括“全选”和“删除”。编程实现各菜单项功能:单击“打开”则弹出“文件已打开”的消息框,单击“退出”结束程序,单击“全选”则选中文本框中的所有内容,单击“删除”则清除文本框的内容。

 图附14

 基本运用22运行界面

  图附15

 基本运用23运行界面

 23、创建名为Form1,标题为“同步显示”窗体,并画图片框P1,图片框下一个文本框Text1,无初始内容。编程要求:运行时,文本框输入一个字符,就要图片框中输出一行文本框中的完整内容。

 24、在窗体上添加计时器、标签和一个标题为“Stop”的命令按钮。程序运行时自动启动计时,每隔1秒在标签中显示当前的系统时间。如果单击命令按钮,计时暂停,按钮上显示“Start”,再次单击,计时器又开始工作,按钮显示“Stop”。

 25、Text2初始值为3,在Text1中输入口令(要求Text1中显示“*”),当输入为“123456”时Text1显示“口令正确”,否则用MsgBox提示出错,次数-1,最多输入3次,超过则禁止输入。

 图附16

 基本运用25运行界面

 图附17

 基本运用26运行界面

 26、在文本框中输入一个数,按移动按钮,文本框中是正数则滚动条向右移动相应刻度超过最大刻度则MsgBox提示“输入值太大”;负数则向左移,超过最小刻度则不再动,并MsgBox提示。

 27、窗体上有四个命令按钮,名称分别为C1、C2、C3和C4,标题分别为“显示打开对话框”、 “显示另存为对话框”、 “显示颜色对话框”和“显示字体对话框”。请往窗体上添加合适的控件,并编写对应代码,实现程序功能。

 28、、请往窗体上添加三个控件,分别为驱动器列表框、目录列表框以及文件列表框。编写程序实现三个控件之间的联动。

 29、窗体上有一组6个的复选框控件数组,以及一个命令按钮Command1,标题为“选中项目个数”,要求程序运行时,选中若干个选项,单击命令按钮,则能报选中的项目个数通过消息框显示出来。运行界面及结果如图所示。

 图附18 基本运用29运行界面

 综合应用题(25分/题) 1、 如图,窗体上建立三个名为vbRead、vbCalc、vbSave的菜单,标题分别为读数、计算和存盘。一个名称为Text1的文本框(MultiLine设置为True,ScrollBars设置为2)。程序运行后如果执行“计数命令”,则读入in1.txt文件中100个整数并放入一个下界为1的数组中;如果执行“计算”命令,则把数组中下标为奇数的元素和它们的和在文本框中显示出来;如果执行“存盘”命令,则将求得的和存入out1.txt文件中。ReadData过程可以把in1.txt文件中的100个整数读入Arr数组中;而WriteData过程可以把指定的整数写到指定文件中(整数值通过计算求得,文件名为out1.txt),必须使用已有过程编写程序。

 图附19

 综合运用1运行界面 2、 窗体上有3个标题分别为“姓名”“电话号码”和“邮政编码”的标签以及三个名称分别为Text1、Text2、Text3的文本框和两个名称分别为C1、C2,标题分别“显示第三个记录”和“保存”的命令按纽。要求:程序运行时,单击“显示第三个记录”,则把当前文件夹下的”in2.txt”下的第三条记录读出来,并显示在对应的文本框中。单击“保存“按钮,则把该记录下的三个字段写入”out2.txt”中。

 3、 窗体上有一个名称为Text1的文本框(其中Multiline属性为True,Scrollbars属性为2。以及三个名称为c1、c2和c3的命令按钮,标题分别为“显示”、“统计”和“保存”。程序运行时,单击“显示”按钮,则读入“in3.txt”中的文本,并在文本框中显示出来。单击“统计”按钮,则统计文本框中字符ASCII值大于等于70,且小于等于100的字符个数,并将结果显示在文本框中。单击“保存”按钮,则把结果写入到Out3.txt文件中。

 4、 计算圆周率,求圆周率的公式为π/4=1-1/3+1/5-1/7+1/9..., 当第i项值小于0.0001结束。

 5、 窗体上有一个名称为Text1的文本框(其中Multiline属性为True,Scrollbars属性为2。

 6、 以及三个名称为c1、c2和c3的命令按钮,标题分别为“显示”、“统计”和“保存”。程序运行时,单击“显示”按钮,则读入“in5.txt”中的文本,并在文本框中显示出来。单击“统计”按钮,则统计文本框中字符ASCII值大于等于70,且小于等于100的字符个数,并将结果显示在文本框中。单击“保存”按钮,则把结果写入到Out5.txt文件中。

 7、 在窗体上建立三个菜单项名称分别为:Read、Cacl、Save,标题分别为“读入数据”,“数据计算输出”和“保存到文件”。然后画一个文本框text1(MultiLIne属性为True)。程序运行时,执行“读入数据”命令,则读入in6.txt文件中的30个整数,放入到一个数组中,数组的下界从1开始。如果单击“数据计算输出”菜单,则把该数组中的所有原数显示在文本框中,并求出该数组中的最大值和最小值的乘积。单击“保存到文件”,则把所计算得到的最大值和最小值的乘积写入Out6.txt中。

 8、 窗体上有两个命令按钮C1和C2,标题分别为“计算”和“保存”以及一个文本框Text1(MultiLIne属性为True)。程序运行时,单击“计算”按钮,则计算30以内,所有满足a^2+b^2=c^2关系的整数组合,并以3个整数为一组,列出所有的满足条件的整数,显示在文本框Text1中。单击保存,则把结果写入到Out7.txt中。

 9、 窗体上有一个命令按钮C1,标题为“求最小值”。程序运行时,单击“求最小值”按钮,则弹出四个输入框,分别输入四个整数,存放于数组中,通过自定义函数求出这四个数的最小值,并将这四个数以及结果一行内显示在窗体上。

  10、单击“读入”按钮,将当前目录下的in9.txt中的内容读入到Text1中;单击“转换”按钮,把Text1中的大写字母转换为小写字母,小写字母转换为大写字母,并显示在Text2中;单击“写入”按钮,把Text2中的内容写入“out9.txt”文件中。

 图附20

 综合运用10运行界面

 11、窗体有一个文本框Text1,一个图形框P1和三个命令按钮。单击“读入”按钮,则将当前目录下的in10.txt中的内容读入到Text1中,Text1要求能多行显示;单击“统计”按钮,则统计Text1中字母i,j,k,l,m,n(不区分大小写)出现的次数,并将结果显示在图形框P1中;单击“存盘”按钮,则把结果写入“out10.txt”文件中。

 12、窗体上有两个文本框和两个按钮。在Text1中输入40,单击“计算”按钮,计算数列1,1,2,3,5,8,13,......第40项的值,并显示在Text2中;单击“存盘”按钮则把结果写入out11.txt中。

 13、如下图界面。单击“取数”按钮,将文件in12.txt读到数组a。并显示到窗体中的List框中。在Text1中输入一个名字或姓氏,将找到的显示在Text2中,否则显示找不到。

 图附21

 综合运用13运行界面

  图附22

 综合运用14运行界面

 14、窗体上两个文本框的名称分别是Txt1和Txt2,三个命令按钮的名称分别是Cmd1,Cmd2和Cmd3。按下“读数”按钮,将数据文件dr13.dat中50个数读到数组中并显示在Txt1中;按下“排序”按钮,将数组按“升序”排序后显示在Txt2中;按下“保存”按钮,将排好序的数组存入dwr13.dat中。

 15、菜单包括三个项目,分别是“读数”、“计算”和“保存”,名称分别为MenuRead、MenuCalc和MenuSave。文本框属性:MutLine为True,ScrollBar为2。 “读数”菜单的功能是将数据文件dr14.dat中50个整数读到下界为1的数组;“计算”按钮的功能是将其中能被3整除的数显示在Text1中并求和;“保存”菜单的功能是将求和的结果存入dwr14.Txt中。

 图附23

 综合运用15运行界面

  16、单击“计算”按钮,找到小于3000的最大素数并显示在Text1中;按“存盘”则将结果写入文本文件d15.txt中。要求:编写isprime函数,如果一个数是素数,返回值为True。 图附24

 综合运用16运行界面

 17、窗体上两个文本框的名称分别是Txt1和Txt2,三个命令按钮的名称分别是Cmd1(读取),Cmd2(计算)和Cmd3(保存)。按下“读取”按钮,则把dr16.txt文件中的整数读入到text1中。按下“计算”按钮,则找出大于Txt1中的整数的第一个素数,显示在Txt2中。按下“保存”按钮则把Txt2里面的内容写入dw16.txt中。(要求判断素数、写文件、读文件都要用函数来完成)

 18、窗体上包含有两个名称分别为Op1和Op2的单选按钮,标题分别为“100-200的素数和” 和“200-400的素数和”。还有一个文本框和两个命令按钮,标题分别为“求和”和“写入”。程序运行后,选中某个单选按钮,并单击“求和”按钮,则计算指明范围内的素数之和,并显示在文本框中。单击“写入”,则把结果存入Out17.txt中。(写入以及判断素数分别用过程和函数来实现) 图附25

 综合运用18运行界面

 19、窗体上有两个复选框,名称分别为Chk1和Chk2,标题分别为“能被5整除”和“能被6整除”,一个命令按钮Command1,以及一个文本框Text1。编写适当的事件过程,使得程序运行时对复选框进行选择,单击命令按钮,可根据下表的规定,计算100~200之间符合要求的整数之和,把结果显示在Text1中。(25分) 选择 要求 Chk1 只能被5整除 Chk2 只能被6整除 Chk1 和Chk2 既能被5整除,也能被6整除 都不选择 只能被1整除

 图附26

 综合运用19运行界面

 20、窗体上有一个名称为Text1的文本框(其中Multiline属性为True,Scrollbars属性为2);以及三个名称为command1、command2和command3的命令按钮,标题分别为“显示”、“查找”和“保存”。程序运行时,单击“显示”按钮,则读入“in.txt”中的文本,并在文本框中显示出来。单击“查找”按钮,弹出输入框用于输入要查找的内容,统计在文本框中所出现该内容的个数,并通过提示框输出结果。单击“保存”按钮,则把结果写入到Out.txt文件中。(25分)

 图附27

 综合运用20运行界面

 21、窗体上两个文本框的名称分别是Text1和Text2;两个文本框的Multiline属性为True,Scrollbars属性为2);两个名称为command1和command2的命令按钮,标题分别为“读数”、“显示上三角”。按下“读数”按钮,将数据文件in.txt 中数读到二维数组a(5,5)中,并显示在Text1中;按下“显示上三角”按钮,将二维数组的上三角显示在Text2。(25分)

 图附28

 综合运用21运行界面

 期末自测题(A卷)

 一、单选题(每题1分,共25分) 1、211.66.160.1 是Internet上的(

  )。 (A) IP地址

 (B)域名

  (C)密码

 (D)软件编号 2、在以下四个www网址中,(

  )网址不符合www网址书写规则。

 (A) www.163.com    

  (B) www.gdpu.cn.edu   

 (C) www.863.net.cn 

  (D) www.tj.net 3、下列字符中,其ASCII码值最小的一个是(

  )。

 (A) A

  (B) a

 (C) Z

  (D) X 4、下列软件中属于浏览器的是(

 )。 (A) Excel

  (B) Internet Explorer

  (C) QQ

 (D) Visual Basic

 5、电子邮件(E-mail)地址的正确形式是(

  )。 (A)用户名@域名    (B)用户名#域名

  (C)用户名/域名    (D)用户名.域名 6、下面变量名不合法的是(

  )。

 (A) a2

  (B) abcd

 (C) a$x

 (D) Cd_E 7、下列表达式中,正确的Visual   Basic表达式是(

  )。 (A) 2sin45°

 (B) ∏*R2

  (C) x÷y×5

 (D) (x+1)/(x^2+1)/2

 8、下面逻辑表达式的值为真的是(

  )。 (A) "A"> "a"

  (B) "abc"> "bc"

 (C) "That"> "Thank"

  (D) 12> 12.1

 9、下列过程定义语句说明不合法的是(

  )。 (A) Sub f1(ByRef n() As Integer)

 (B) Sub f1(ByRef n As Integer)

 (C) Sub f1(ByVal n() As Integer)

 (D) Sub f1(ByVal n As Integer)  10、执行下面的4个打印语句,将出错的是(     )。

 (A) Print a = 3 + 5

 (B) Print "a="; 3 + 5

 (C) Print "a=3+5"

  (D) Print a=; 3 + 5 11、语句 For

 i = -3 To 20

 Step 4 的循环次数为(

  )。 (A) 5

  (B) 6

 (C) 7

  (D) 8 12、下列叙述中错误的是(

  )。 (A) 列表框与组合框都有List属性

  (B) 列表框与组合框都有Selected属性

 (C) 列表框和组合框都有Text属性

  (D) 列表框与组合框都有Enabled属性 13、窗体Form1里有两个对象,分别是图片框P1和标签L1。那么下面关于Print方法的使用中,错误的语句为(

  )。 (A) P1.Print   147

 (B) Print   147

 (C) Form1.Print   147

  (D) L1.Print 147 14、通过设置图像框Image的(

 )属性,可以自动调整图形的大小,以适应图像框Image的尺寸。 (A) Autosize

  (B) Stretch

 (C) AutoRedraw

 (D) Appearance 15、执行语句

 Print Left( "VisualBasic" , 3 ),在窗体上显示的内容是(

  )。 (A)VVV

 (B)Vis

  (C)s

 (D) sualBasic

 16、以下叙述中正确的是(

  )。 (A) 窗体的Name属性指定窗体的名称,用来标识一个窗体 (B) 窗体的Name属性的值是显示在窗体标题栏中的文本 (C) 可以在运行期间改变对象的Name属性的值 (D) 对象的Name属性值可以为空 17、设x是整型变量,与函数IIf( x > 0 , -x , x )有相同结果的代数式是(

  )。 (A)|x|

  (B)-|x|

 (C) x

 (D )-x

 18、将组合框Combo1当前选中的项目内容赋值给变量S,正确的语句是(

  )。 (A) S= Combo1.Text

  (B) S = Combo1.Value

  (C) S= Combo1.List

  (D) S = Combo1.List(0) 19、建立一个图书资料管理输入界面,要求选择图书的借阅情况(借出/未借)、语种(中文/英文/日文/其他)及分类(8类,存在重复分类,一本图书既属于1类,也同时属于2类)。应如何在窗体中利用单选钮和复选框实现(

  )。 (A) 用一组14个复选框来实现 (B) 将8种分类用一组8个复选框、借阅情况和语种用一组6个单选钮实现 (C) 将8种分类用一组8个单选钮、借阅情况和语种用6个复选框实现 (D) 将8种分类用一组8个复选框、借阅情况用一组2个单选钮、语种用一组4个单选钮实现 20、已知A、B、C中C最小,则判断A、B、C可否构成三角形三条边长的逻辑表达式是(

  )。 (A) A>=B And B>=C

 And

 C>0

 (B) A+C>B

 And B+C >A

 And C>0 (C)(A+B)>=C

 And A-B <=C) And C>0

 (D) A+B>C

 And A-B>C And C>0 21、执行(

  )后,会弹出如下图所示的窗口。 (A) x = InputBox("输入框", "请输入VB数据")

 (B) InputBox("输入框", "请输入VB数据")

 (C) x = InputBox("请输入VB数据","输入框")

  (D) InputBox("请输入VB数据","输入框") 22、窗体有Text1文本框和Command1命令按钮,并有以下代码: Private Sub Command1_Click() Dim n If Text1.Text <> "123456" Then

  n = n + 1

  Print "口令输入错误" & n & "次!" End If End Sub

 希望程序运行时若输入口令不正确,显示出错的次数(如下面图),但实际运行时没有出现预期效果(如上面图)。修改方案中正确的是(

  )。 (A)在Dim n后添加一句:n=0

 (B)将 Dim n改为Dim n%

 (C)将Dim n放到“通用”-“声明”处 (D)将Print "口令输入错误" & n & "次!"改为Print "口令输入错误" + n + "次!" 23、刚建立一个新的标准EXE工程后,不在工具箱中出现的控件是(

  )。 (A)单选按钮

  (B) 图片框

 (C) 通用对话框

 (D) 文本框 24、设有语句Open "c:\Test.Dat" For Output As #1,则以下错误的叙述是(

  )。 (A) 该语句打开C盘根目录下一个已存在的文件Test.Dat

  (B) 该语句在C盘根目录下建立一个名为Test.Dat的文件 (C) 该语句建立的文件的文件号为1 (D) 执行该语句后,就可以通过Print #语句向文件Test.Dat中写入信息 25、滚动条产生Change事件是因为(

  )值改变了。 (A) Max

  (B) Min

  (C) Value

  (D) Caption 二、程序阅读题(每题3分,共15分) 1、执行下面的程序段后,列表框List1中余下的两项为

 【1】

  。

  For i = 1 To 4

  List1.AddItem i

  Next i

  For i = 1 To 2

  List1.RemoveItem i Next i 2、执行下面的程序段后,输出结果为

 【2】

  。 x = 5 For I = 1 To 20 Step 2

  x = x + I \ 5 Next I Print x, I 3、执行下面的程序段后,则在Text1中显示的值为

 【3】

  。 Dim A%(10, 10), i%, j% For i = 1 To 10

  For j = 1 To 10

  A(i, j) = i + j

  Next Next Text1.Text = A(5, A(2, 3)) + A(7, A(3, 4)) 4、执行下面的程序段后,在输入对话框中分别输入321和456,则窗体上的输出结果为

 【4】

 。 a = InputBox("请输入一个整数") b = InputBox("请输入一个整数") Print a + b 5、程序运行后,单击命令按钮,则两个标签中显示的内容分别为

 【5】

 。 Private Sub Command1_Click() Dim x%, y%

  x = 5: y = 3

  Call proc(x, y)

  Label1.Caption = x

  Label2.Caption = y End Sub Private Sub proc(ByVal a As Integer, b As Integer)

 a = a * b

 b = a + b End Sub 三、填空题(每空2分,共40 分) 1、请完善程序,功能是:随机生成一个8位数的整数,统计0~9这10个数字在生成的8位整数中出现的次数,并显示统计结果。 Dim i%, s&, j%, a(0 To 9) As Integer s = ___

 【1】 _____

 Print "这个八位数是";s Print "其中" For j = 1 To 8

  c = Val(Mid(s, j, 1))

  a(c) = ___

 【2】 _____ Next j For i = 0 To 9

 If a(i) <> 0 Then

  Print i; "出现的次数";___

 【3】 _____

 ___

 【4】 _____ Next i 2、窗体上有一个名为List1的列表框,一个名称为Text1的文本框,一个命令按钮,标题分别为“计算”。 编写代码实现: 1)程序启动时,将所有的3位素数添加到列表框中。函数Prime用于判断一个数是否为素数。请完善程序。 2)单击“计算”按钮,则对List1中的数进行累加求和,并在文本框中显示计算结果。请完善程序。 Function Prime( n% ) As Boolean

  '判断素数函数   Dim i%   Prime =

  【5】

    For i = 2 To

 Sqr(n)   

    If

  【6】

 Then  Prime = False     

   Next End Function  Private Sub Form_

 【7】

  ()

 Dim i%, j%, t As Boolean For i = 100 To 999

 If

  【8】

  Then List1.AddItem i Next i End Sub Private Sub Command1_Click()

  ‘计算 Dim i%,sum%

 For i = 0 To

  【9】

 Sum = sum +

  【10】

  Next

 Text1.Text = Sum End Sub

 3、将“ABC” 添加到列表框List1中第三项的语句为:

  【11】

 。 4、求分段函数

 的值,可用y = IIf(

  【12】

 )。 5、设置文本框Text1中的文本字体颜色为红色的语句为:

  【13】

 。 6、命令按钮Command1左移200,实现语句是

  【14】

  。 7、将D:根目录下的顺序文件t1.txt内容读入变量S,并显示在文本框Text1中;继而将其中的字母(包括大小写)、数字及其它字符的分别串成不同的字符串,最后将结果显示在图形框P1中。请完善程序段。

 Dim s$, i%, c$, n1$, n2$, n3$ Open

 "D:\t1.txt" For

  【15】

 As #1 Do While

  【16】

 s =

  【17】

  '文件的内容逐个读入变量s Text1.Text = Text1.Text

 & s

  Loop Close #1 For i = 1 To Len(s)

 c =

 Mid(

 【18】

 )

  Select Case c

  Case

 【19】

 n1 = n1 & c Case

  "0" To "9"

  n2 = n2 & c

 【20】

 n3 = n3 & c End Select Next P1.Print

  "字母串为:"; n1

  P1.Print

  "数字串为:"; n2

  P1.Print

  "其它字符串为:"; n3

  四、程序设计题(每题10分,共20分) 1、编程计算圆周率 Pi的近似值。计算公式如下,一直到 1/i 小于0.0000001为止。

 2、编写程序,形成数列1,1,1,3,5,9,17,……的前N项(该数列的规律是从第四项开始,每一项是前三项之和),直到某项的值超过50000。 期末自测题(B卷) 一、单选题(每题1分,共25分) 1、211.66.160.1 是Internet上的(

  )。 (A) IP地址

 (B)域名

  (C)密码

 (D)软件编号 2、www.gdpu.edu.cn是Internet上的(

  )。 (A) IP地址

 (B)域名

  (C)密码

 (D)软件编号 3、计算机病毒是(

  )。 (A) 一种令人生畏的传染病

  (B) 一种使硬盘无法工作的细菌 

  (C) 一种可治的病毒性疾病  

  (D) 一种使计算机无法正常工作的破坏性程序 4、下列表示存储容量的数据中,(

 )是最大的。 (A) 1.44MB

 (B) 20480KB

  (C) 1 GB

 (D)48657 Byte

 5、下列设备中,不能作为计算机输出设备的是(

  )。 (A)显示器

 (B)绘图仪

 (C)扫描仪

 (D)打印机 6、下列字符序列中,可以作为变量名的是(

 )。 (A) a24

  (B) ab*d

 (C) a$x

 (D) Cd E 7、表达式 5 Mod 3+3\5*2的值是(

  )。  (A) 0

  (B) 2

  (C) 4

  (D) 6

 8、改变控件在窗体中的上下位置,应修改控件的(

 )属性。

 (A) Top

  (B) Left

 (C) Width 

 (D) Right

 9、下列语句错误的是(

  )。 (A) Exit For

 (B) Exit If

 (C) Exit Do

  (D) Exit Sub 10、在默认情况下,InputBox函数返回值的类型为(

  )。 (A) 数值

  (B)字符串

 (C) 变体

 (D) 数值或字符串(视输入的数据而定) 11、窗体上有一水平滚动条,其Max为1,Min为100。以下叙述中正确的是(

  )。 (A) 程序运行时,若使滚动块向左移动,滚动条的Value属性值会增大 (B) 程序运行时,若使滚动块向左移动,滚动条的Value属性值会减小 (C) 由于滚动条的Max值小于Min值,程序出错 (D) 由于滚动条的Max值小于Min值,程序运行时滚动条的长度会缩为一点,滑块无法移动 12、在窗体上有两个名分别为Op1、Op2的单选按钮,一个名称为Ck1的复选框。程序运行后,要求Op1和Ck1被选中,以下能实现上述操作的程序段是(

  )。 (A) Op1.Value = True Ck1.Value = True

 (B) Op1.Value = True Ck1.Value = 1 (C) Op1.Value = False Ck1.Value = 0 (D) Op1.Value = True Ck1.Value = 2 13、设x=30,执行语句y = IIf(x > 10, x + 10, IIf(x < 0, x ^ 2, x ^ 3))后,y值是(

  )。

 (A) 30

 (B) 40

 (C) 900

 (D) 2700   14、以下定义数组或给数组元素赋值的语句中,正确的是(

  )。 (A)Dim a As Variant a=Array(1,2,3,4,5) (B)Dim a(10) As Integer a=Array(1,2,3,4,5) (C)Dim a%(10) a(1)="ABCDE" (D)Dim a(3),b(3) As Integer a(0)=0:a(1)=1:a(2)=2:b=a 15、下列语句中错误的是(

  )。

 (A) Text1.Text = List1.Text

  (B) Label1.Caption = List1.Text

 (C) List1.Name =List1.Text

 (D) Command1.Caption = List1.Text 16、下列叙述中错误的是(

  )。 (A) 列表框与组合框都有List属性

 (B) 列表框有Selected属性,而组合框没有

 (C) 列表框和组合框都有Style属性

  (D) 组合框有Text属性,而列表框没有  17、如果要在菜单中添加一个分隔线,则应将其Caption属性设置为(

  )。 (A) =

 (B) *

  (C) &

  (D) -

  18、将组合框Combo1当前选中的项目下标赋值给变量S,正确的语句是(

  )。 (A) S= Combo1.Text

 (B) S = Combo1.ListIndex

  (C) S= Combo1.List

 (D) S = Combo1.List(0) 19、要向文件t1.txt添加数据,正确的文件打开命令是(

  )。 (A) Open "t1.txt" For Write As #1

  (B) Open "t1.txt" For Append As #1

 (C) Open "t1.txt" For Input As #1

  (D) Open "t1.txt" For Output As #1 20、表达式Abs(-5) + Len("ABCDE")的值是(

  )。 (A) -5ABCDE

  (B) 5ABCDE

  (C) 0

  (D) 10 21、执行语句

 Print Mid( "VisualBasic" , 3 ),在窗体上显示的内容是(

  )。 (A)s

  (B)Vis

 (C)sua

 (D) sualBasic 22、VB中窗体、图片框或图像框装入图形可使用(     )函数。 (A) LoadPicture

 (B) PictureLoad

 (C) LoadImage

 (D) Imageload 23、有如下声明语句:Dim

 str1

 As

 String*5,则执行语句Str1= "Visual Basic "后,str1的值是(

  )。

 (A) Visual

  (B) Visua

  (C) Visual Basic

 (D) V

 24、窗体上有两个列表框List1和List2,List1中有若干项目(如下图所示),并有下面程序: Private Sub Command1_Click() For k = 0 To List1.ListCount - 1

  If List1.Selected(k) Then

  List2.AddItem List1.List(k)

  List1.RemoveItem k

  End If Next k End Sub 程序运行时若按图示在List1中选中2个项目并单击命令按钮,则产生的结果是(

  )。 (A)在List2中添加了“物理”、“计算机”两项

 (B)在List1中删除了“物理”、“计算机”两项 (C)同时产生(A) 和(B) 的结果 (D)出现错误提示 25、能表示身高H超于1.7米且体重W小于62.5千克的逻辑表达式是(

  )。

 (A) H > 1.7 And W <= 62.5

 (B) H <= 1.7 Or W >= 62.5

  (C) H > 1.7 And W < 62.5

  (D) H > 1.7 Or W < 62.5

  二、程序阅读题(每题3分,共15分) 1、程序运行后,单击命令按钮,输出结果为

 【1】

 。 Private Sub Command1_Click()

  Dim num As Integer

  num = 1

  Do Until num > 6

  Print num;

  num = num + 2.4

  Loop End Sub 2、以下程序片段运行后输出a的值是

 【2】

 。

  a = 0

  For i = 1 To 3

  For j = 1 To 3

  If j < i Then a = a + 1

  Next j

  Next i

  Print a 3、 程序运行后,单击命令按钮,则两个标签中显示的内容分别为

 【3】

 。 Private Sub Command1_Click() Dim x%, y%

  x = 5: y = 3

  Call proc(x, y)

  Label1.Caption = x

  Label2.Caption = y End Sub Private Sub proc(a As Integer, ByVal b As Integer)

  a = a* a

  b = b + b

 End Sub 4、程序运行后,单击命令按钮,则变量 a 的值是

  【4】

  。 Private Sub Command1_Click() temp = Int (-0.8) Select Case temp

  Case Is < 0

  a = "负"

  Case 0

  a = "零"

  Case Is > 0

  a = "正"

  End Select End Sub 5、执行下面的程序段后,输出结果为

  【5】

 。 Dim A%(10, 10), i%, j% For i = 1 To 10

  For j = 1 To 10

  A(i, j) = i * j

  Next Next Print

 A(5, A(2, 3)) + A(7, A(3, 3)) 三、填空题(共40 分,每空2 分) 1、要使用下列For循环执行20次,请在下划线处填入正确的值。 For k=

  【1】

  To –2

 Step -5 2、命令按钮Command1右移200,实现语句是

  【2】

 。 3、设a、b、c都是整型变量,判断“a和b中有一个小于c”的表达式是

 【3】

 。 4、请完善程序,功能是:在文本框Text1中输入一串字符,在窗体上输出其中出现频率最高的字母(不区分大小写)及其出现次数。例如:输入“This is a beautiful world.”则输出“使用频率最高的是i,共出现3次。” Private Sub Command1_Click()

  Dim s$, a%(65 To 90), i%, max%, n%

  s = Text1.Text

  For i = 1 To Len(s)

 n = Asc(

 【4】

  )

 If n >= 65 And n <= 90 Then

 【5】

  End If

  Next

  max = 65

 For i =

  【6】

  If a(i) > a(max) Then

  【7】

  Next Print "使用频率最高的是:" &

 【8】

 & ",共出现" & a(max) & "次。" End Sub 5、窗体上有一个名为List1的列表框,一个名称为Text1的文本框,一个命令按钮,标题分别为“计算”。

 1)程序启动时,将1000以内完数添加到列表框中。函数PerfNum用于判断一个数是否为完数(一个数如果恰好等于它的因子之和,这个数就被称为“完数”。一个数的因子是指除了该数本身以外能够被其整除的数)。请完善程序。 2)单击“计算”按钮,则对List1中的数进行累加求和,并在文本框中显示计算结果。请完善程序。 Function PerfNum ( n% ) As Boolean

  '判断完数函数  

 Dim i% , s% For i = 1 To n - 1

  If

  【9】

  Then s = s + i Next i

 If

 【10】

  Then

 PerfNum = True Else PerfNum = False

 End Function  Private Sub Form_

 【11】

  ()

 Dim i%, j%, t As Boolean For i = 1 To 1000

 If

 【12】

  Then

 List1.AddItem i Next i End Sub Private Sub Command1_Click()

  '计算 Dim i%,sum%

 For i = 0 To

  【13】

 Sum = sum +

  【14】

  Next

 Text1.Text = Sum End Sub

 6、设有一个文本文件c:\aa.txt,其中有若干内容,如图,窗体界面如图所示。

 1)将文本文件c:\aa.txt的数据读出来存放到数组中,并在列表框中显示。请完善程序。 2)在Text1中输入一个名字或姓氏,将找到的显示在Text2中,否则显示找不到。请完善程序。 Dim a$(), n% Private Sub Command1_Click()

  '取数

  Open "c:\aa.txt" For

  【15】

 As #1

  Do While Not EOF(1)

 n = n + 1

  【16】

 Preserve a(n)

 【17】

 #1 , a(n)

 List1.AddItem a(n)

 Loop

  Close #1 End Sub Private Sub Command2_Click()

  '查找 flag = False For i = 1 To

 【18】

  If a(i) = Text1 Or Left(a(i), Len(Text1)) = Text1 Then

 Text2 = Text2 & a(i) & vbCrLf

  【19】

 End If Next If

  【20】

 Then MsgBox "找不到!" End Sub 四、程序设计题(每题10分,共20分) 1、今年我国的国民生产总值为300670亿元,若今后每年以9%的增长率增长, 编写程序计算多少年后能实现国民生产总值翻一番?

 2、编写程序,计算并输出数列1,2,3,5,16,231……的前N项(该数列的规律是从第三项开始,每一项是前两项的平方差),N值通过InputBox输入。

 

Tags: 答案   实验   Visual  

搜索
网站分类
标签列表