VB上机实验八_第1页
VB上机实验八_第2页
VB上机实验八_第3页
VB上机实验八_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Visual Basic语言上机实验八实验名称:循环结构程序设计(2学时)一、实验目的1. 掌握WhileWend和For语句的使用。2. 掌握Do While/UntilLoop与Doloop While/Until两种循环语句的使用。3. 加深理解循环的概念,掌握循环的规则及其执行过程。4. 学会如何控制循环条件,防止死循环或不循环。二、背景知识如果在指定的条件下多次重复执行一组相同的语句可以通过循环来实现,VB提供了下面几种形式的循环语句:1For循环语句For 循环变量 = 初值 To 终值 Step步长 语句块 Exit For 语句块Next 循环变量说明:在使用这种循环语句时,要求循环执行的次数预先可以确定。循环次数由初值、终值和步长值3个因素确定,计算公式为:循环次数 = Int(终值初值)/步长 + 1)2DoLoop循环语句格式1:Do WhileUntil 语句块Exit Do语句块Loop格式2:Do 语句块Exit Do语句块Loop WhileUntil 说明:(1)在循环次数不能确定的情况下,就需要用到DoLoop循环语句。(2)格式1是先判断循环条件是否成立,然后决定是否执行循环体;格式2是先执行循环体,再判断循环条件是否成立,也就是说,不管循环条件是否成立,格式2都至少执行一次循环体。(3)在格式1和格式2中使用关键字While实现的循环称为“当型循环”,即当循环条件成立时,反复执行循环体,直到循环条件不成立时为止;使用关键字Until实现的循环称为“直到型循环”,即当循环条件不成立时,反复执行循环体,直到循环条件成立时为止。3. WhileWend语句While 语句块Wend说明:此语句是为了保持与低版本Visual Basic兼容而保留的。在实际应用中,它与Do WhileLoop结构非常相似。三、实验举例注:实验举例的内容不需要再上交作业。实例1 求自然对数的底e的近似值,要求其误差小于10-6,求e近似值的公式为:e = 分析:本实例涉及到程序设计中的两个重要的运算:累加和连乘。累加是在原有和的基础上逐次地加上一个数;连乘则是在原有积的基础上逐次地乘以一个数。在本题中可以定义三个变量,s用来表示累加和,初值为0;i用来计数,表示第几项,初值为0(表示第1项,即加数“1”);t用来表示加数,初值为1,加数中用到连乘运算,容易找到后项与前项的关系为,编程时可先根据上一个加数计算出下一个加数,然后进行累加,循环次数事先不能确定,可以采用DoLoop循环语句来实现,将题目规定的误差范围作为循环条件。据此编写程序代码如下:Private Sub Form_Click() Dim s As Single, i As Integer, t As Double图8.1 程序运行结果 s = 0: i = 0: t = 1 Do While t 0.000001 s = s + t 累加和 i = i + 1 为下一项作准备 t = t / i 计算出下一项的值 Loop MsgBox 共计算了 & i & 项的和是 & sEnd Sub程序运行时,单击窗体,运行结果如图8.1所示。当然,本题也可以使用For循环语句来编程。但由于循环次数事先不能确定,因此需预设一个较大的循环次数(可以根据题目合理选择),然后在循环体内判断是否达到规定的误差,如果达到了可采用Exit For语句立即终止循环。据此编写程序如下:Private Sub Form_Click() Dim s As Single, i As Integer, t As Double s = 0: t = 1 For i = 1 To 100 If t 0.000001 Then Exit For 达到规定的误差就退出循环 End If s = s + t t = t / i Next MsgBox 共计算了 & i - 1 & 项的和是 & sEnd Sub思考:比较用DoLoop语句和For语句解决上面的问题在程序实现上有什么不同?实例2 找出1000以下的能被13和7整除的最大的10个数并将它们输出。分析:从1000开始,循环的找满足条件的整数,直到找到10个为止,因此应专门设一个变量found来记录当前找到的数的个数,只要found的值小于10,说明还没有找够所有的数,循环就要继续进行。据此编写程序如下:Private Sub Form_Click() Dim a As Integer, found As Integer a = 1000: found = 0 While found 10 a = a - 1 If a Mod 13 = 0 And a Mod 7 = 0 Then found = found + 1 Print a End If WendEnd Sub实例3 输入任意一个整数,将其反向输出。例如输入1234,则输出4321。分析:实现任意一个整数的反向输出,首先应该将这个数的每个数字位给拆出,然后再把它们按照反序重新组合。假设整数a由文本框Text1获得,编写程序如下:Private Sub Form_Click() Dim a As Long, b As Integer, d As Long a = Val(Text1.Text) d = 0 Do While a 0 b = a Mod 10 获得当前数的最低位 d = d * 10 + b 将得到的数位组合到变量d中 a = a 10 Loop Print dEnd Sub说明:在上面的程序中,循环的对任意一个数a进行了“Mod 10”和“整除10”的运算,目的是依次地得到整数的各个数位,得到一个数位后使用累加将其组合到新的变量中。四、实验内容1.从键盘输入10个数值,统计其中正数、负数和零的个数。要求:窗体文件保存为Vbsy81.frm,工程文件保存为Vbsy81.vbp。2.编写程序,找出1100之间的全部同构数。所谓同构数是指一个自然数平方的最后几位正好是该自然数本身,例如52=25,252=625等。提示:本题可利用字符串函数Right和Len。根据自然数的长度取出其平方数的最后若干位进行比较。要求:窗体文件保存为Vbsy82.frm,工程文件保存为Vbsy82.vbp。3.利用公式求圆周率,直到最后一项的绝对值小于10-4为止。要求:窗体文件保存为Vbsy83.frm,工程文件保存为Vbsy83.vbp。4.编写一个测试打字准确率的程序。首先由程序随机产生一段30个大写字母的范文,然后用户对照产生的范文进行输入,完成后显示输入准确率。在窗体上画3个名称分别为Label1Label3的标签,再画3个名称分别为Text1Text3的文本框和2个名称分别为Command1、Command2的命令按钮。程序运行界面如图8.2所示。图8.2 打字练习程序运行界面程序运行后,单击“产生范文”(Command1)命令按钮,则在文本框Text1中生成30个大写字母的范文;在文本框Text2中输完30个字符后,单击“测试结果”(Command2)命令按钮,则在文本框Text3中显示出打字的准确率。据此填空,将下面的程序补充完整。Private Sub Command1_Click() 产生30个字母的范文 Dim i As Integer, str As String * 1 Randomize Text1.Text = Text2.Text = Text2.SetFocus Text3.Text = For i = 1 To 30 str = 随机产生一个大写字母 Text1.Text = Text1.Text + str 将产生的字母连入范文框 Next iEnd SubPrivate Sub Text2_Change() If Then 键入满30个字符 Command2.Enabled = True “测试结果”命令按钮激活 Else Command2.Enabled = False End If Text3.Text = Text2文本框内容改变时,应重新计算准确率End SubPrivate Sub Command2_Click() 完成打字准确率的计算 Dim y As Integer, i As Integer, r As Single y = 0 For i = 1 To 30 将两个文本框中的字符逐个比较 If Then End If Next i r = y / 30 * 100 Text3.Text = 0.1 * Int(10 * (r + 0.05) & % 显示正确率,保留一位小数End Sub要求:窗体文件保存为Vbsy84.frm,工程文件保存

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论