Visual Basic disc性格测试40题,老师让明天交,急求!!!

当前位置: >>
Visual Basic实验-答案(3)
学院 姓名 任课教师专业 (班级) 学号1 目录实验一 实验二 实验三 实验四 实验五 实验六 实验七 实验八 实验九 实验十 Visual Basic 编程环境和控件 ...................... 1 窗体及基本控件使用 ............................... 6 顺序结构程序设计 ................................ 13 选择结构程序设计 ................................ 19 选择结构程序设计(续) ........................... 24 循环结构程序设计 ................................ 32 循环结构程序设计(续) ........................... 36 常用控件 ....................................... 40 常用控件(续) .................................. 49 数组 .......................................... 54实验十一 数组(续) .................................... 62 实验十二 顺序文件 ...................................... 66 实验十三 过程 ......................................... 72 实验十四 过程(续) .................................... 78 实验十五 菜单及通用对话框 ............................... 83 实验十六 随机文件(选作) ............................... 86 附录:VB 统考编程题(精选) ............................... 89 期末自测题(A 卷) ...................................... 99 期末自测题(B 卷) ..................................... 1042 实验报告的整理与编写上机实验结束后,编写实验报告是软件工程的要求,也是培养科学作风的重要途径, 实验报告的主要内容包括: (1)实验目的 实验作为教学的一个重要环节,其目的在于更深入地理解和掌握课程教学中的有关基 本概念,应用基本技术解决实际问题,从而进一步提高分析问题和解决问题的能力。因此, 当我们着手做一个实验的时候,必须明确实验的目的,以保证达到课程所指定的基本要求。 在写实验报告时,要进一步确认是否达到了预期的目的。 (2)实验内容 实验的目的是要通过解决一些具体问题来达到的。在书中,每一部分都安排了多个实 验题目,根据教学安排、进度、实验条件、可提供的机时、学生的基础等因素,可以选择 其中的几个或全部。因此,在实验报告中,实验内容是指本次实验中实际完成的内容。在 每一个实验题目中,一般都提出一些具体要求,其中有些具体要求是为了达到实验目的而 提出的,不仅有具体的实验题目,还应包括具体要求。 (3)程序设计说明 包括算法设计思路,必要的流程图,界面设计说明、使用模块及变量的说明等。 (4)源程序代码 Visual Basic 的源程序包括界面设计和代码。程序设计的产品是程序,它应与算法或流 程图相一致,要与用户界面设计一致。程序要有具有易读性,符合结构化原则。 (5)程序的运行结果(包括对不同测试数据的运行结果) 程序运行结果一般是输出语句所输出的结果。对于不同的输入,其输出的结果是不同 的。因此,在输出结果之前一般还应注明输入的数据,以便对输出结果进行分析和比较。 在程序的运行中,还必须用各种不同情况的数据进行调试,以检查程序能否正常运行。因 为,有时程序对某些情况是可以正常运行的,而对某些特殊情况的数据可能会出现运行出 错或死机,通过各种数据的调试,尽量做到程序不会出问题。 (6) 实验体会 分析和体会实验中碰到的问题及解决方法,这是实验报告中最重要的一项,也是最容易 忽视的一项。实验过程中大量的工作是程序调试,在调试过程中会遇到各种各样的问题, 每解决一个问题就能积累一点经验,提高自己的编程能力。因此,对实验的总结,最主要 的是程序调试经验的总结。调试分析也包括对结果的分析。体会主要是指通过本次实验是 否达到了实验目的,有哪些基本概念得到了澄清,碰到了那些以前没有见到的问题,最后 采用什么方法得到解决等。3 实验日期年月日实验一一、实验目的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)按“清屏”按钮时,文本框中文字消失; 3)按“结束”按钮后,程序结束。 (提示:代码中输入 End,则可结束应用程序运行)2 保存窗体文件名: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. 编写一程序, 二、 要求在屏幕上显示“欢迎学习 VisualBasci” 并在“请输入你的姓名”标签后的文本框 Text1 中输入姓名; , 单击“你输入的姓名是” 按钮,则在 Label3 标签上显示在文本框 Text1 中输入的姓名。窗体如图 1.4 所示。Label1调整控件的大小使 内容显示为两行Label2 Command1Text1 Label3将 BorderStyle 属性设置为 1图 1.4 提高题 的运行界面编写代码如下: 代码遇到的主要问题及分析:【选作题】窗体上有两个名称分别为 C1, C2 的命令按扭,一个文本框 Text1。命令按钮的标题及文本框上显示的字符自定。编程实现当按下 C1 时,将 C2 的标题与 Text1 中 的内容交换。要求: 1) 界面自己设计 2) 连续多次单击 C1, 都能将 C2 的标题与 Text1 中的内容交换。4 设计的界面如下:编写代码如下: 代码遇到的主要问题及分析:实验心得体会成绩:教师签名:5 实验日期年月日实验二一、实验目的窗体及基本控件使用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) 属性设置6 表 2.1 实验 1 属性设置 对象名称 属性 BackColor ForeColoFont MaxButton MinButton 属性值 vbBlack Vbwhite False False窗体 Form12)代码编写代码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) P &+&; &=&; a + b End Sub ‘减法等同理2、窗体上有一个文本框 Text1,要求当鼠标划过文本框 Text1 时,鼠标显示 Cross“┼”形状;窗体上的一个标题为“复制”的命令按钮 C1。通过属性窗口实现以上的设 置之后,编程实现: 1)程序启动时窗体标题为“修改文本框内容”;7 2)单击命令按钮 C1,则把按钮上的标题复制到文本框,并使按钮不可见; 3)单击窗体空白处,按钮可见但不可用。?必要属性设置 表 2.2 实验 2 属性设置 对象名称 属性 mousepointer caption 属性值 2-crossText1C1复制?代码编写代码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 上。在文本框 Text18 中输入一些字符;要求编程实现:图 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 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遇到的主要问题及分析:9 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. 命令按钮、字号、内容和格式的复制练习!效果如右图。要求:10 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 && && Then11 Command1.Enabled =true Command2.Enabled =true End If End Sub 其他代码见 p36实验心得体会成绩:教师签名:12 实验日期年月日实验三实验目的:顺序结构程序设计1.熟练掌握 VB 的基本数据类型。 2.熟练掌握基本的输入输出函数和语句。 3.掌握顺序结构程序设计的方法。实验内容1、定义两个变量 a 和 b,它们的值分别由键盘输入。编程计算并输出 a 与 b 的和、 差、积、商、a 除以 b 的余数、a 的示意提示) 。 ? 代码编写: 代码Private Sub Form_Click() Dim a as integer,b as integer a = Val(InputBox(&输入 a 的值&)) b = Val(InputBox(&输入 b 的值&)) Print &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 遇到的主要问题及分析:b的值。 (要求自己设计窗体及输入、输出,必须有明确2、定义一个变量 a,由键盘输入其值为任意四位整数,编程实现分别输出个、十、百、 千位四个数字,并各个数字的平方和。 【提示】利用 mod 和\运算符将每一位分离。13 ? 代码编写: 代码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) 运行状态14 图 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 Sub5、创建 VB 工程,界面如右所示,编程实现运行时可将标 签中的文字字号随机放大(1~5 整数倍)和(任意比例)缩小 以及还原(原来字号) 。界面如右图所示。【提示】 图 3.2 实验 3.5 窗体1)将标签的 AotuSize 属性设置为 False 及 True,看看有什么区别? 2)用一个变量在程序开始运行时记住标签中原始字体的大小(想想放在什么事件过程中?) ;这 个变量还会在“还原”按键中使用,其说明语句要放在通用-声明中; 3)每次按放大或缩小按键都会在当前的基础上放大或缩小; 4)字体放大到一定程度会出现“溢出”的错误提示,可以先不管。? 代码编写: 代码Dim t Private Sub Form_Load()15遇到的主要问题及分析: 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 Sub6、 编程实现随机产生一个“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 &鸡有&; &兔子有&; y End Sub 遇到的主要问题及分析:16 【选作题 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 遇到的主要问题及分析:17 实验心得体会成绩:教师签名:18 实验日期年月日实验四实验目的:选择结构程序设计2.掌握逻辑表达式的正确书写形式。 3.掌握单分支与双分支条件语句的使用。实验内容1.编写程序,通过键盘输入变量 x 的值,求函数 y 的值。? x , x ?0 ? y?? 1 , x ?0 ? x ?代码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 Sub19遇到的主要问题及分析: 3、输入一个年份,判断它是否为闰年,并输出是否为闰年的相关信息。【提示】判断闰年的条件是:年份能被 4 整除但不能被 100 整除;或者是能被 400 整除。如:、2010 年 不是闰年; 年是闰年。代码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 给出“是否重新输入”的提示,提示窗口上有两 个命令按钮: “是”和“否” ,显示问号的图标。若回答“是”则将文本框中原来的内容清 空、光标重新定位于文本框,若回答“否”则程序终止。? 代码编写: 代码遇到的主要问题及分析:20 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 Sub5、猜数字游戏:事先设定的一个数字(如 6) ,程序提示用户输入一个 1~10 之间的 整数,如果输入的数字与事先设置的数字相同,则提示“输入正确” 否则显示“错了” , 。 ? 代码编写: 代码Private Sub Command1_Click() x = Val(InputBox(&输入一个 1~10 之间的整数&)) If x = Text1 Then MsgBox &输入正确& Else MsgBox &错了& End If End Sub 遇到的主要问题及分析:【提高题 1】修改上面程序,当输入的值比设置的数字小,显示“错了,你猜得小了。 ; ”21 输入的值比设置的大,则显示“错了,你输入的太大了。 请直接在上题修改) ” ( 【提示】本实验属于多分支结构。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遇到的主要问题及分析:【选作题】课堂示例“字符串替换” 使用多个函数完成时,如果源字符串中没有要查找 , 的子串,程序就会出错。修改程序当没有要查找的子串时,弹出“没有找到的”提示框,并 将源串放到结果文本框中。22 【提示】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 遇到的主要问题及分析:实验心得体会成绩:教师签名:23 实验日期年月日实验五实验目的: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 Sub2、输入一个字符,判断该字符是字母、数字还是其他字符,并作相应的显示。【要求】分别使用两种语句 If ……ElseIf……和 Select Case 来完成。24 代码 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 Else25遇到的主要问题及分析: Text2 = Text2 + &*& End Select End Sub3、输入一个数字(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 时要做适当处理。 ? 代码编写:26 代码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 = &&遇到的主要问题及分析: 参考 p65 例 4.2' 连续两个逗号(&,&)27 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 Sub6、在上周实验【提高题】的基础上完成,输入三角形的三条边,根据边长判断是否能 构成三角形的程序,若能构成,则进一步判断三角形类型(等边、等腰、直角、一般)。 【提示】该题用分支嵌套来完成。 注:请在上周程序代码的适当位置用红笔来添加代码实现。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 Sub28 【选做题】开始运行如左下图所示,单击“出题”按钮后计算机自动出题,窗口如右下 图所示,此时由用户输入加法运算答案,然后单击“判定”按钮。如果用户运算正确则提示 “答对了,你真聪明!”,否则显示“错了,努力啊!”。再次按下“出题”就会再出一道题。【提示】①计算机自动出题,显示的题目应该是随机的,所以这里必须使用随机函数 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 = &出题& 遇到的主要问题及分析:29 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()30 End End Sub Private Sub Form_Load() i = True Command1.Caption = &出题& Randomize '多次执行这个程序,每次出的题目不一样 a=0 b=0 End Sub实验心得体会成绩:教师签名:31 实验日期年月日实验六实验目的:循环结构程序设计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 的倍数时,则换行。32 代码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 P 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 页33 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&34遇到的主要问题及分析: 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 遇到的主要问题及分析:实验心得体会成绩:教师签名:35 实验日期年月日实验七实验目的:循环结构程序设计(续)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 36 If Next i If【1】 m Mod i = 0 【2】 m = k ThenThenk = k + i' 因子之和【1】 【2】' 因子输出Picture1.Print m & &是完数& Picture1.P & = 1&; For i = 【3】 2 To m - 1 【4】 If m Mod i = 0 Then Picture1.Print &+&; Next i Else Picture1.Print m & &不是完数& End If End Sub 【5】 Picture1.Print【3】 【4】 【5】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 页37 【提高题 1】输出斐波那契级数 1、1、2、3、5、8、13……,当某项的数值大于或等 于 30000 时结束。此级数项的规律是:前两项的值各为 1,从第 3 项起,每一项是前 2 项 的和。 (要求一行输出 6 项) 。 代码Private Sub Form_Click() a=1 b=1 P i=2 Do While c &= 30000 c=a+b a=b b=c P 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+【提示】为得到不断重复的数 t,可在循环体利用通项: t = t * 10 + a代码Private Sub Form_Click() a = Int(Rnd * 9) + 1 n = Int(Rnd * 6) + 5 s=0 t=0 For i = 1 To n t = t * 10 + a s=s+t遇到的主要问题及分析:?[1,9] ?[5,10]38 P Next i Print s End Sub【选作题 1】完善程序,使之能在窗体上显示有规律的 图形。Private Sub Form_Click() Dim i% For i = 1 To Print Next i End Sub【提示】使用 Tab 函数定打印位置,可使用的函数还有:String, Right,CStr 1)循环体内显示用 String 函数来实现,找出循环控制变量与 Sting 函数内个数的关系,即 String(j, Cstr(i) 。 2) 为了使最后一行的 0 显示, 若按照上面的通式, 则最后一行显示的是 1, 则要对公式进行修改, String 即 (j, Right (cstr(i)) )。 【1】 10【2】 Tab(20 - i); String(2 * i - 1, Trim(Right(Str(i), 1)))【选作题 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遇到的主要问题及分析:&; &;39 实验心得体会成绩:教师签名: 实验日期 年 月 日实验八实验目的:常用控件1.掌握单选按钮、复选框的重要属性、事件和方法。 2.掌握框架的使用。 3.掌握列表框、组合框的重要属性、事件和方法。实验内容1、窗体上有两个复选框,名称分别为 Chk1 和 Chk2,标题分别为“能被 5 整除”和“能被 6 整除” 一个命令按钮 Command1,以及一 , 个文本框 Text1。编写适当的事件过程,使得程序运行时对复选框 进行选择,单击命令按钮,可根据下表的规定,计算 100~200 之间符合要求的整数之和, 把结果显示在 Text1 中。选择 Chk1 Chk2 Chk1 和 Chk2 都不选择 要求 只能被 5 整除 只能被 6 整除 既能被 5 整除,也能被 6 整除 只能被 1 整除? 代码编写: 代码遇到的主要问题及分析:40 Dim s1, s2 Private Sub Check1_Click() s1 = 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 For i = 100 To 200 If i Mod 6 = 0 Then s2 = s2 + i Next i End Sub?定义全局变量 ‘每次选择前先清 0‘每次选择前先清 0Private 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 Sub2、窗体上包含有两个名称分别为 Op1 和 Op2 的单选按钮,标题分别为“100-200 的素数和” 和“200-400 的素数和” 还有 。 一个文本框和一个命令按钮,标题为“求和” 程序运行后,选中 。 某个单选按钮,并单击“求和”按钮,则计算指明范围内的素数之和,并显示在文本框中。 ? 代码编写: 代码Private Sub Command1_Click() If Option1 Then For m = 100 To 200 Tag = True41遇到的主要问题及分析: 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 Sub3、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 属性设置 对象名称 属性 属性值42 List2SortedTrue? 代码编写: 代码 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‘双击列表框 List2Private Sub List1_DblClick() If List2.ListCount = 5 Then MsgBox &超过 5 门课程,不能再选& Else List2.AddItem List1.Text List1.RemoveItem List1.ListIndex End If End Sub4、窗体上有一个名为 List1 的列表框(允许做多项 选择) ,一个名称为 Text1 的文本框,三个命令按钮,标 题分别为“求全部项目和” “求选定项目之和” “删除选定项 , , 目” 。【要求】1)程序运行后,将把 1~100 之间能够被 7 整除的数添加到列表框中。 2)单击“求全部项目和”按钮,则对 List1 中的数进行累加求和,并在文本框中显示 计算结果。43 3) 单击“求选定项目之和”按钮,则对 List1 中的选中的项目进行累加求和,并在文 本框中显示计算结果。 4) 单击“删除选定项目”按钮,则删除 List1 中的选中的项目。 代码Private Sub Form_Load() ‘显示 7 的倍数 For i=1 To 100 If i Mod 7 =0 Then 【1】 End If Next i End Sub List1.AddItem i 遇到的主要问题及分析: 如果列表框要多选, multiselect 属性设置为 1?列表框所有项目之和 Private Sub Command1_Click() Sum% = 0 For i = 0 To Sum = Sum + 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 【2】 list1.listcount-1 【3】list1.list(i)【提高题】设计一个运行界面如下图所示的 程序,要求单击单选按钮、复选框、列表框44 或组合框时,立即在文本框中显示相应的文字格式。【提示】列表框中的字体可通过 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 可多行显示,有内 ;45 容; 一个命令按钮, 标题分别为“确定” 程序运行时, Text1 中输入要查找的内容, 。 在 Text2 中输入要替换的内容。由单选按钮确定替换第一个还是全部替换。Private Sub Command1_Click() Dim n% k = 1 m = Len(Text1.Text) Do a = InStr '从开始查找(k, Text3.Text, Text1.Text)'a 为要查找的内容出现的位置,为 0 时表示没找到 'a&0 表示找到了,则选中要查找的内容,再替换If a &0 ThenText3.SelStart = a - 1 Text3.SelLength = Len(Text1.Text)Text3.seltext= Text2.Text Then '不需要多次替换则退出Ifoption1=trueExit Do End If k = a + m End If Loop End Subuntil a=0'为继续查找确定起始点'找不到退出【选作题】设计一个运行界面如下图所示的程序。在“主菜”组合框中选择一种食品(不可 输入) ,单击“添加主菜”按钮即可将该项内容添加到右边的列表框;在“饮料”组合框中选择 或输入一种饮料,单击“添加饮料”按钮即可将该项内容添加到右边的列表框。在右边的列 表框中选择某项并单击“不要这个&”按钮即可从列表框中删去该项;单击“我不吃了&&”可清 除列表框中全部内容。46 【要求】右边所点的菜单中不允许出现重复的菜。【提示】添加的时候要先判断是否菜单中是否已经有了。? 代码编写: 代码Private Sub Command1_Click() f = True For i = 0 To List1.ListCount C 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 组合框, 不是列表框47 实验心得体会成绩:教师签名:48 实验日期年月日实验九实验目的:常用控件(续)1、掌握图片框、图像框、计时器的属性和方法和事件及使用。 2、掌握滚动条的重要属性、事件和方法。 3、了解图片框和图像框的区别。掌握形状控件的重要属性以及使用。实验内容1、 窗体上有一组合框 Combo1,一文本框 Text1,三个 命令按钮,要求: 1)程序一开始运行时,Combo1 中有若干选项,命令 按钮&确定&不可用 2) 选中 Combo 中某个项目, 单击&修改&, 则将该项目复制到 Text1 中 (可在 Text1 中修改) ,同时&确定&按钮可用 3) 单击&确定&将修改过的 Text1 替换组合框中原有的内容, 同时&确定&按钮不可用. 4)单击&添加&,将 Text1 中的内容添加到组合框中【提示】修改组合框中选中的内容要通过代码来重新设置 Combo1.List(Combo1.ListIndex)值 的,而不能直接设置 Text 属性值。? 代码编写: 代码遇到的主要问题及分析:49 2、在窗体的 Label 中每隔 2 秒显示“你好中国” 即每隔 2 秒显示一次标签) ( 。【提示】 1)设置时钟控件的 Interval 值使程序每隔 2 秒,调用一次计时器的 Timer 事件。 2)将标签的状态设置成:显示……隐藏……显示……隐藏……? 代码编写: 代码遇到的主要问题及分析:3、窗体上有一图片框,名为 P1。单击图片框,则在图片框上显示“单击图片框” 单击 。 窗体,则在窗体上显示“单击窗体” 要求不能用变量,每个事件只允许写一句代码。 。 ? 代码编写: 单击图片框 单击图片框4、如右图所示,将滚动条的范围设置为 0~1000,在文 本框中输入一个数后按下“移动”按钮。 如果文本框中是正数则 滚动条向右移动相应刻度,但若超过最大刻度则 MsgBox 提 示“输入值太大” 如果文本框中是负数则滚动条向左移, ; 超过最小刻度则不再动, MsgBox 并 提示。 【提示】假定滚动条当前位置的 Value 值为 200,在文本框输入 300,单击“移动”按 钮,则滚动条的值应变为 500;再输入-800,再单击“移动”按钮,则滚动条的值应变为 0,并用 MsgBox 提示“已移动到最左边”.50 ? 代码编写: 代码遇到的主要问题及分析:5 、 窗 体 上 添 加 一 Shape 形 状 控 件 , 名 为 “ Shape1 ”, 两 个 名 称 分 别 为 Command1,Command2 的命令按钮, 标题分别为“圆”和“红色边框” 编写代码, 。 程序运行时, 单击“圆”按钮则 Shape 控件显示一个圆。单击“红色边框”按钮,则将 Shape 控件的边框颜 色设为红色。 【提示】分别设置 Shape 控件的 Shape 属性和 BorderColor 属性 ? 代码编写: 单击“圆”按钮 单击“红色边框”按钮6、如右图所示,编写程序,使窗体中的两个汽车图形 能够相向运动直至相撞。此时屏幕弹出一个消息窗口显示 “某年某月某日发生交通意外” 显示日期为当前系统日期。 。 【提示】根据两车的位置来判断是否相撞。 ? 代码编写: 代码遇到的主要问题及分析:51 【选作题 1】窗体有一个矩形和一个圆,还有一水 平滚动条和一垂直滚动条。程序运行时,移动某个 滚动条的滑块,可使圆作相应方向的移动。滚动条 刻度值的范围是圆可以在矩形中移动的范围。 (如 右图所示) 。 【提示】水平滚动条和垂直滚动条的 Min 和 Max 属性值与矩形的位置及大小有关,最好 通过代码在 Form_Load 事件中设置。 ? 代码编写: 代码遇到的主要问题及分析:【选作题 1】模拟 Windows 屏幕保护程序(如下图所示)。 可按下面提示分步实现(也可以以你的聪明才 智,一步到位) : ? ? ? 文字从右往左运动,完全移出屏幕时同从屏幕最右边重新出现并继续左移。 文字能像弹球一样,碰到窗体边缘时能反弹。 每次碰到窗体边缘反弹时字体的颜色和大小随机变化。【提示】移动控件的位置有两种方法(其中 w 和 h 分别表示水平方向或垂直方向移动的距 离):Label1.Left=Label1.Left + h Label1.Top=Label1.Top + v Label1.Move Label1.Left + h Label1.Move Label1.Left, Label1.Top + v52 重要提示:如果水平方向移动的距离为 h,则当控件碰到窗体的边缘时,控件应该向 相反的方向移动,即 h=-h,垂直方向也一样。 ? 代码编写: 代码遇到的主要问题及分析:实验心得体会成绩:教师签名:53 实验日期年月日实验十实验目的:数组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 个数字对换并输出, 即: 第一个数字与第六个数字互换, 第二个数字与第七个数字互换,…… ,第五个数字与第十个数字互换。 遇到的主要问题及分析:54 代码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遇到的主要问题及分析: 在上面一道题的基础上更改 红色的字即可 t & a(k)55 Next k a(i) = t Print a(i); If i Mod 5 = 0 Then Print Next i End Sub 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.1456 【进一步思考】 输入 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遇到的主要问题及分析: 整型数会溢出57 Next i End Sub 【进一步思考】输出斐波那契级数 1、1、2、3、5、8、13……,当某项的数值大于或等于 30000 时结束。代码Private Sub Command1_Click() a=1 b=1 P t=2 Do Until c &= 30000 c=a+b P 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“杨辉三角”,如下图所示(两种显示方法)。58 【提示】分析上面的形式,可以找出其规律:对角线和每行的第一列均为 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)遇到的主要问题及分析:59 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 &第&; &位同学的平均成绩是&; 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 &第&; &门课的平均成绩是&; 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 j60遇到的主要问题及分析: Print Next i End Sub实验心得体会成绩:教师签名:61 实验日期年月日实验十一实验目的:数组(续)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 页62 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) 单击“排序”按钮,进行排序并显示在图形框中。? 代码编写: 代码创建数组 遇到的主要问题及分析:63 排序【选做题】做一个类似图 11.2 的界面的拨号器。图 11.2 实验 4 窗体界面图 11.3 实验 5 窗体界面? 代码编写: 代码遇到的主要问题及分析:64 【提高题】做一个类似图 11.3 界面的简单计算器,并实现对应的功能。? 代码编写: 代码遇到的主要问题及分析:实验心得体会成绩:教师签名:65 实验日期年月日实验十二实验目的:顺序文件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 窗体各个运行状态界面66 ? 代码编写: 代码建立文件遇到的主要问题及分析:复制文件合并文件显示文件内容2、完善程序,实现:1) 按下“读入并计数”按钮,将磁盘中的文件 in.txt 的内容读入显示在文本框中, 并分别统计其中字母、数字和其他符号的数量,将结果显示在 Picture1 中。67 图 12.2 实验 2 窗体各个运行状态界面及 out 文件内容格式2) 按下“写入文件”按钮,则将统计结果写入文件 out.txt 中,并给出提示“已写 入文件” 。Dim sz%, ss%, sq% Private Sub Command1_Click() Dim c$ Open c = 【1】 '准备读入 '每次读入一个字符 '将读入的字符显示在 Text1 中 '字母 '数字 '读出的是回车或换行符则不计数 '其他符号 【2】 '打开 in.txt 文件 '读入并计数Do While Not EOF(1)Text1.Text = Text1.Text & c Select Case c Case Case 【3】 【4】 sz = sz + 1 ss = ss + 1 Case Chr(10), Chr(13) Case Else sq = sq + 1 End Select Loop 【5】 【6】 Picture1.Print &其他&; &个& Close #1 End Sub Private Sub Command2_Click()'将结果显示在 Picture1 中'结果写入文件 '将结果写入 out.txt 中Open App.Path + &\out.txt& For Output As #1 【7】 【8】 Print #1,&其他&; &个& MsgBox &已写入文件& 【9】 End Sub3、建立如下图所示包括五个命令按钮、图片框、列表框及标签的程序界面。编程实现 下列功能:68 List 列表框Label 标签Picture 图片框1)单击“新建”按钮,弹出 Inputbox 用于输入数组的元素个数 N;随机产生任意 N 个[10,100]的随机整数存入数组 A;并把数组 A 的各元素值显示在图片框中(每行 5 个元素) ;同时写入磁盘文件 MyList.dat(与工程文件和窗体文件位于同一文件夹) 。 2)单击“读取” 按钮,将文件 MyList.dat 的数据读出,存入数组 B,同时添加 到列表框中。 3) 单击“计算” 按钮,计算并在标签上输出数组 B 的最大值、最小值和平均值。 4)单击“添加” 按钮,将最大值、最小值和平均值。追加到“MyList.dat”的 末尾并弹出“已写入文件! ”的提示。 5)单击“退出”按钮,则退出应用程序。 ? 代码编写: 代码新建遇到的主要问题及分析:读取文件69 计算添加退出【选做题】建立一个多用户的密码登录程序,如下图所示。要求:1)输入用户名及密码,单击“登录”按钮,则判断该用户名是否存在,如果存在,则进一 步判断密码是否正确。分别给出相应提示信息。 2)输入用户名及密码,单击“注册”按钮,则先判断该用户名是否已有人注册了,如无, 则把用户名和密码添加到文件中;如有人注册,则提示&该用户名已存在,请重新输入!& 3)单击“退出”按钮,则退出应用程序原始窗体用户名及密码均正确时提示用户名正确,密码错误用户名错误70 ? 代码编写: 代码 登录遇到的主要问题及分析:注册实验心得体会成绩:教师签名:71 实验日期年月日实验十三实验目的: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 = True For i = 2 To n - 1 If (n Mod i) = 0 Then prime = False Next i End Function ‘函数过程 Prime(n)遇到的主要问题及分析:1)利用判断素数的函数,编写程序找出 1~100 之间的所有孪生素数(若两个素数之 差为 2,则这两个素数就是一对孪生素数) 。例如:3 和 5、5 和 7、11 和 13 等都是孪生72 素数。【提示】如果 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 Function2) 窗体上包含有两个名称分别为 Op1 和 Op2 的单选按 钮,标题分别为“100-200 的素数和” 和“200-400 的素数 和” 。还有一个文本框和两个命令按钮,标题分别为“求和”和 “写入” 。程序运行后,选中某个单选按钮,并单击“求和”按 钮,则计算指明范围内的素数之和,并显示在文本框中。单击“写入” ,则把结果存入 Out.txt 中。 (要求素数判断必须函数来实现) 。 代码Dim s As Integer 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 ‘全局变量 ‘主过程,求素数和 Private Sub Command1_Click()遇到的主要问题及分析:73 End Sub ‘主过程,结果写入文件Private Sub Command2_Click() Write #1, s Close #1 End SubOpen &d:\Out.txt& For Append As #1Function prime(n%) As Boolean prime = True For i = 2 To n - 1 If (n Mod i) = 0 Then prime = False Next i End Function'函数过程 Prime(n)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 If n = 1 Then fac = 1 Else fac = n * fac(n - 1) End If End Function ‘函数过程 Fac(n)遇到的主要问题及分析: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) ‘主过程,计算求和遇到的主要问题及分析:74 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 Function2) 利用 Fac(n)函数,编写程序分别输入两个正整数 m 和 n(n≥m) ,求组合数m Cn ?n! m! (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$)函数遇到的主要问题及分析:75 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遇到的主要问题及分析:76 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实验心得体会成绩:教师签名:77 实验日期年月日实验十四实验目的:过程(续)1、掌握自定义子过程以及函数过程的定义和调用方法; 2、掌握形参和实参对应关系;值传递和地址传递的传递方式以及区别。 3、掌握多窗体调用。实验内容1、编写一函数过程 FunMax( a( ) ),求一维数组 a 中的最大值。主调程序随机产 生 10 个-100 到 100 之间的整数,调用 FunMax 函数过程,显示数组的最大值。 代码Function ‘FunMax( a( ) )遇到的主要问题及分析:End Function Private Sub Command1_Click() ‘主程序,显示数组的最大值End Sub78 2、编写一子过程 ProcMin,求一维数组 a 中的最小值,子过程的形参自己确定。主 调程序随机产生 10 个 100 到 200 之间的整数,调用 ProcMin 子过程,显示数组的最小 值。 代码Sub ‘子过程 ProcMin遇到的主要问题及分析:End Sub Private Sub Command1_Click() ‘主程序,显示数组的最小值End Sub3、运行下面程序段,体会过程调用过程中传值和传址的区别。Private Sub test(ByVal p%, ByVal m%, n()) p = p + 1: m = m + 1 n(1) = 999 Print &Sub:&; 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:&; c(1) End Sub 运行的结果:运行的结果:分析原因:? 运行程序,分析结果。? 将 Private Sub test(ByVal p%, ByVal m%, n())分析原因: 79 改为 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:输入一个数,显示它是否幸运数;幸运数:指前两位数字之和等于后两位数字之和的数。80 窗体 3:输入两个数,显示它们之间的所有幸运数; 窗体 4:输入一个数,显示比它小的最大幸运数;【提示】 ? 编写判断一个四位数是否幸运数的函数过程 Luck(返回值是逻辑型),放在主窗体中。注意,函数过程是 必须是全局级的 (即在函数定义时加 Public 或者缺省, 但一定不能加 Private) 否则其他窗体不能调用, , 调用时要在函数名前加窗体名,如:Form1.Luck(Text1.text) ? 先添加几个窗体并分别设置相应的控件及属性,并正确设置启动窗体。程序代码中利用多窗体的语句和方法 将需要的窗体载入内存,不需要的窗体可隐藏或从内存中删去。代码Function ‘判断幸运数函数 Luck遇到的主要问题及分析:End Function 窗体 1 Private Sub Command1_Click() End Sub 窗体 2 Private Sub Command1_Click() ‘判断输入的数是否为幸运数 ‘显示 Form2EndSub81 窗体 3 Private Sub Command1_Click() ‘两数之间的幸运数EndSub ‘比某数小的最大幸运数窗体 4 Private Sub Command1_Click()EndSub实验心得体会成绩:教师签名:82 实验日期年月日实验十五实验目的:菜单及通用对话框1、掌握下拉菜单的规划、设计和使用方法。 2、掌握弹出式菜单的设计和使用方法。 3、掌握各种对话框的使用方法。实验内容1、设计菜单(如右图所示),在窗体上放置一个文本框,设置其 Multiline 属性为 True。设计包含有 3 个主菜单项的菜单系统,分别为“文件”“格式”和“查找” 、 。其中 “文件”包括 “打开”“保存” 、 、 “清除”和“退出”四个子菜单。 “清除”与“退出” 之间有一条分隔线。 “格式”包括“字体”和“颜色”两个子菜单。 “查找”包括“查找下 一个”和“替换”两个子菜单。为菜单编写如下 有关代码: 1)新建:新建一个空的文本文档 2)打开:弹出打开对话框,打开文件显示在 文本框中 3)保存:弹出保存对话框,将文件保存到指 定路径中。 4)退出:关闭应用程序 5)字体:弹出字体对话框,设置文本框的字体属性 6)颜色:弹出颜色对话框,设置文本框的字体颜色 7) 查找: 显示如图输入对话框, 输入要查找的内容后, 可在文本框内查找指定的内容。要求:1) “格式”菜单的显示与否与文本框中有无内容相关联,当文本框中的内容 为空时,隐藏“格式”菜单;当文本框输入内容的时候,显示“格式”菜单。 3) 可通过鼠标右键弹出“格式”菜单。83 代码Sub ‘新建空的文档遇到的主要问题及分析:End SubSub ‘打开End Sub Sub ‘保存End Sub Sub ‘清除End SubSub ‘退出End SubSub ‘字体End Sub Sub ‘颜色EndSub84 Sub‘查找下一个End SubSub ‘替换End SubSub ‘显示隐藏格式菜单End SubSub ‘右键弹出格式菜单EndSub实验心得体会成绩:教师签名:85 实验日期年月日实验十六实验目的:随机文件(选作)1、掌握自定义类型的定义及其变量的声明以及变量元素的引用。 2、掌握随机文件的打开、关闭和读写操作。 3、学会随机文件在应用程序的使用。实验内容1、窗体上 Form1 上有三个命令按钮,两个图片框,和一个标签(如图 16.1) 。Picture1Picture2图 16.1 实验 1 运行界面要求:1)自定义一个 StudType 类型,包括姓名、性别、电话号码和学校四个成员,结构如下: 姓名 (Name) :字符串(长度为 10) 性别(Sex) :字符串(长度为 2) 电话号码(Tel) :字符串(长度为 11) 学校(School) :字符串(长度为 20) 遇到的主要问题及分析: 代码Type ‘自定义 StudType 类型End Type86 2)程序运行后,单击“文件写入” ,则以随机存取方式打开当前目录下的文件”Stud.txt”,把 记录个数显示在标签 Label1 中;并根据提示向文件添加记录,每写入一个记录后,都要询问是否再 输入新记录,回答”N”或”n”时,则停止输入;重新更新标签中的记录个数。 遇到的主要问题及分析: 代码Sub ‘向文件添加记录End Sub3)单击“文件读取” ,则以随机存取方式打开当前目录下的文件”Stud.txt”,读取文件中的全 部记录,并在图片框 Picture1 显示出来,并把记录个数显示在标签 Label1 中。 遇到的主要问题及分析: 代码Sub ‘读取文件中的全部记录End Sub4)单击“指定记录读取” ,则弹出一个输入框,提示输入所要显示的记录号,以随机存取方式打 开当前目录下的文件”Stud.txt”, 读取指定记录号的记录, 并在并在图片框 Picture2 显示出来。 程序运行结果如下图所示。87 代码Sub ‘读取文件中的某条指定记录遇到的主要问题及分析:End Sub实验心得体会成绩:教师签名:88 附录: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 号黑体显示“程序设计”89 6、 窗体上有两个名称分别为 cmd1 和 cmd2 的按钮, 运行程序时只能看到 cmd1, 单击 cmd1, cmd2 则 出现,cmd1 隐藏,单击 cmd2,则 cmd1 出现,cmd2 隐藏。 7、 建立如下菜单: 第一级 文件 打开 新建 关闭 编辑 第二级 名称 File Open New Close Edit 有效性 有效 有效 有效 无效 有效8、窗体上有一个文本框和标题为“复制”的命令按钮 C1,编程实现:运行时窗体标题为“修改文本框 内容”(可在 Form_Activate ()事件中修改

我要回帖

更多关于 十个有趣的心理小测试 的文章

 

随机推荐