当前位置:首页 > 第五章 循环结构程序设计
编写窗体的Load事件过程,设置控件有关的属性。代码如下: Private Sub Form_Load()
Frame1.Caption = \求下述数列前n项之和:\ Frame2.Caption = \输入项数n\
Label1.Caption = \ Label2.Caption = \
Command1.Caption = \计算\ Text1.Text = \ Show
Text1.SetFocus End Sub
编写“计算”命令按钮Command1的Click事件过程,实现求数列前n项和的算法,并通过标签Label2输出计算的结果。代码如下:
Private Sub Command1_Click()
Dim n as Integer, k As Integer Dim x as Single, s As Single n = Val(Text1.Text) x = 2: s = 0: k = 1 Do While k <= n x = 1 + 1 / x s = s + x k = k + 1 Loop
Label2.Caption = \前\项和等于:\ Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text) Text1.SetFocus End Sub
程序运行情况如图5-23所示。程序中,以数列的第1项2为起点,通过递推公式,计算出了数列中以后的各项。
例5-18 牛顿切线法求根。求方程x?e?2的根。
算法:对方程f(x)?0给定一个初值x0作为方程的近似根,即迭代计算的初值,经过若干次迭代后,可以得到方程较高精度的近似根。牛顿切线法迭代公式为:
xxi?1?xi?f(xi) 'f(xi)其中:f'(xi)是f(xi)的导数,当xi?1?xi??时,xi?1就作为方程的近似解。 由数学理论可知,牛顿切线法的实质是逐步以切线与x轴的交点来作为曲线与x轴交点的近似值。
根据题目可知:f(x)?x?e?2,从而f(x)?1?e。可得流程图,如图5-24所示。 设计步骤如下:
⑴创建一个工程,在窗体上添加一个框架Frame1,一个命令按钮Command1和一个标签Label1(输出计算的近似根)。程序用户界面如图5-25所示。
⑵编写程序代码。
编写窗体的Load事件过程,设置控件的有关属性。代码如下: Private Sub Form_Load()
Frame1.Caption = \求方程:x=Exp(x)-2的根\ Command1.Caption = \求解根近似值\ Label1.Caption = \
x'xEnd Sub
编写“求解根近似值”按钮Command1的Click事件过程,输入0次近似根,输入小数点后的有效位数,完成迭代计算,求出指定精度的近似根。代码如下:
Private Sub Command1_Click()
Dim y As Single, x As Single, Err As Single, n As Integer y = Val(InputBox(\请输入0次近似根\输入近似根\
n = Val(InputBox(\请输入小数点后的有效位数\输入允许误差\ Err = 10 ^ -n Do
x = y
f = x - Exp(x) + 2 d = 1 - Exp(x) y = x - f / d
Loop Until Abs(x - y) < Err
Label1.Caption = \根的近似值=\End Sub
图5-24 牛顿切线法求根流程图 图5-25 牛顿迭代法求方程的根
程序运行情况如图5-25所示。
1例 5-19 数值积分。求定积分sin(x)dx的值。
0?2算法:数值积分是用近似计算方法,解决定积分计算问题。常用的方法有矩形法、梯形法、抛物线法等,按积分划分的区间,又有定长和变长的不同实现方法。若用定长梯形法计
b算定积分
?af(x)dx的思想是:将积分区间[a,b]n等分,小区间的长度为h?b?a ,第in块微梯形的近似面积为:si?S??f(x)dx??ai?1bnf(xi)?f(xi?1)?h,积分的结果为所有微面积的和:
2n?1f(xi)?f(xi?1)?1??h??(f(a)?f(b))??f(xi)??h
2i?1?2?当n越大,求出的面积值越接近于积分值。
设计步骤如下:
⑴创建一个工程,在窗体上添加一个框架Frame1,一个命令按钮Command1和一个标签Label1(输出计算结果)。程序用户界面如图5-26所示。
图5-26 求定积分的值
⑵编写程序代码。
编写窗体的Load事件过程,设置控件的有关属性。代码如下: Private Sub Form_Load()
Frame1.Caption = \求[0,1]区间的定积分:∫sin(x*x)dx\ Command1.Caption = \求定积分近似值\ Label1.Caption = \End Sub
编写命令按钮Command1的Click事件过程,输入区间等分数,计算积分和。代码如下: Private Sub Command1_Click()
Dim sum As Single, h As Single, x As Single, n As Integer
n = Val(InputBox(\请输入区间的等分数\输入区间等分数\ h = (1 - 0) / n
sum = (Sin(1 * 1) + Sin(0 * 0)) / 2 For i = 1 To n - 1 x = 0 + i * h
sum = sum + Sin(x * x) Next
sum = sum * h
Label1.Caption = \根的近似值=\End Sub
程序运行情况如图5-26所示。
例5-20 穷举法解不定方程。在“算经”里有一百鸡问题:鸡翁一值钱五,鸡母一值钱三,鸡雏值钱一,百钱买百鸡。问鸡翁、鸡母、鸡雏各几何?
分析:设公鸡x只,母鸡y只,小鸡z只,依题义可以列出方程组:
?x?y?z?100??5x?3y?z?100 ?3?在这2个方程中,有3个未知数,属于不定方程,无法直接求解。可以用穷举法,对各种可能的变量组合进行测试,将符合条件的组合输出,即为可能的解。
由题目可知,x可以由1变到100,对x的每一个取值,y又可以由1变到100,根据第1个方程,z=100-x-y,这样可以得到x、y、z的所有组合,对其中的每一组取值组合都带到第2个方程中去测试,不满足的就放弃,满足的便是解。这个测试过程容易用双重for循环实现。
设计步骤如下:
⑴创建一个工程,在窗体上添加一个框架Frame1,一个命令按钮Command1,一个标签Label1和一个列表框list1(输出计算结果)。程序用户界面如图5-27所示。
图5-27 百钱买百鸡
⑵编写程序代码。
编写窗体的Load事件过程,设置控件的有关属性。代码如下: Private Sub Form_Load()
Frame1.Caption = \百鸡问题\
Label1.Caption = \公鸡 母鸡 小鸡\ Command1.Caption = \求解百钱买百鸡\End Sub
编写命令按钮Command1的Click事件过程,完成计算,并输出结果。代码如下: Private Sub Command1_Click()
Dim x As Integer, y As Integer, z As Integer List1.Clear
For x = 1 To 100 For y = 1 To 100 z = 100 - x - y
If 5 * x + 3 * y + z / 3 = 100 Then
List1.AddItem x & \ End If Next Next End Sub
程序运行情况如图5-27所示。
习题5
一.单选题
1.下列循环语句所确定的循环次数是 。
共分享92篇相关文档