
例题41:通过本实例达到以下目的: 《1)利用给定的分代马,根暴要求改写程序。 (2)练习自定义函数,体会自定义函数的几个关键要素。 (3)练习调用函数,体会在程序引入函数的好处。 运行参考界面如图44所示, 改写并调用函数举到 日▣☒ 定义函意实现黑加 K: 5 1之和 15 定义函意斯一个整租是否是袁数并加以机用 后 判新 23是卡数. 111917192329 0-3+17 223t19 折分并显示 24-5t19 26=3t21 28-5+23 利用函数求两个空数的量大公约数 最大公约黄:3 15 计草 量小公倍数:90 图4.4改写并调用函数运行参考界面 要求如下: (1)将配套素材文件夹per4下的窗体文件ExpLvb,并将其设为项目的启动窗体 并运行程序。 (2)参考源代码,按下列要求改写程序: 1)定义一个名为mN函数:己知n,返回1-n之和, 2)定义一个名为irie的函数:判断一个数P是香为素数,若是则返国Te,否则返 回Flx。 3)定义一个名为maxDiviso:返回两个数m和n的最大会约数. (3)通过调用已定义函数的方法,编写代码实现以下功能: 1)单山1之和按组时,计算1~k之间的所有整数之和,k的值由其左边文本框中输 入,结果显示在其右边的标签控件中, 2)当单击 州断按细时。判断其左边文本框编入的整数,是否是素数,站果显示 在其右边的标签控件中。 3》单击按铝是示时,其右边的标整控件中显示1心-0之间的所有素数。 4)单击按组 拆分并里示 时,将2030之间的所有偶数。拆分成两个素数之和(对
例题 4.1:通过本实例达到以下目的: (1)利用给定的部分代码,根据要求改写程序。 (2)练习自定义函数,体会自定义函数的几个关键要素。 (3)练习调用函数,体会在程序引入函数的好处。 运行参考界面如图 4.4 所示。 图 4.4 改写并调用函数运行参考界面 要求如下: (1)将配套素材文件夹 Chapter4 下的窗体文件 Exp1.vb,并将其设为项目的启动窗体 并运行程序。 (2)参考源代码,按下列要求改写程序: 1)定义一个名为 sumN 函数:已知 n,返回 1~n 之和。 2)定义一个名为 isPrime 的函数:判断一个数 p 是否为素数,若是则返回 True,否则返 回 False。 3)定义一个名为 maxDivisor:返回两个数 m 和 n 的最大公约数。 (3)通过调用已定义函数的方法,编写代码实现以下功能: 1)单击 按钮时,计算 1~k 之间的所有整数之和,k 的值由其左边文本框中输 入,结果显示在其右边的标签控件中。 2)当单击 按钮时,判断其左边文本框输入的整数,是否是素数,结果显示 在其右边的标签控件中。 3)单击按钮 时,其右边的标签控件中显示 10~30 之间的所有素数。 4)单击按钮 时,将 20~30 之间的所有偶数,拆分成两个素数之和(对

于每一个俱数只要有一对即可,如20=3+17),结果显示在其右边的文本控件中。 5)单击按钮计草时,求两个整数m和n的最大公的数和最小公倍数。m和n的值 由相应的文本概输入,结果显示在对应的标签控件中。 解题步露: (1)加载指定素材。将其设为启动窗体并运行程序。 (2)参考潭代码,按要求定义函数。参考素材中的潭代码在第2章已经练习,所以结合 这些源代玛政写函数时,应注意定义一个函数时要考感的几个方面,即: 明确函数名。 函数后的形参列表,即各个参数名及数据类型。 实现函数功能的函数体。 函数运回值的数据类里。 1)定义一个名为umN函数:己知n,返回1-n之和。该函数带一个(整型》形参, 以从主调程序中得到需要计算的,通过函数名返回的结果也是一个整型,其参考代码藏 图如图45所示。 功能:定义一个名为函数:已知k,返回1之和。 Private Function sunN(ByVal n As Integer)As Integer Dim i,s As Integer 8=0 For i 1 To n 8=8+1 Next '利用函数名返回一个Integer型结果 T三8 End Function 图4.5定义函数sumN的参考代码截图 【注意】定文函数的语句是独立的以“Function”开始,以“End Function”结束的语句块, 不能在其他任何一个过程联套定义。 2)定义一个名为1sPme的函数:判断一个数p是否为素数,若是则返目T,否则返 回F。这类判断问题。其返回值一般设为B0on重,该函数带一个形参,以从主调 程序中得到需要判断的p值,通过函数名返回的结果是Boe四型,其参考代码授图如图 4.6所示。 功能,定义一个名i+的函我,判断一个现是否为素我,若是圆回T题,否迈回F1阳 Private Functian isPrine(yal p As Integer)As Boolean Din k.1 As Integer ”判新是否是黑数 k Comvert.Tolnt32 (ath.Sart (p)) Fcgi■2Tok If p Hod1±0hhe0 Exit For ‘提前结束循环 End If 用孟数名返已一个Booleen型结果 【F1>kTen“判所循环是否正常结束?若是,则i=k+1 isPrine True 以lse isPrine False End If End Function 图4.6定又函数isPrime的参考代码檬图
于每一个偶数只要有一对即可,如 20=3+17),结果显示在其右边的文本控件中。 5)单击按钮 时,求两个整数 m 和 n 的最大公约数和最小公倍数,m 和 n 的值 由相应的文本框输入,结果显示在对应的标签控件中。 解题步骤: (1)加载指定素材,将其设为启动窗体并运行程序。 (2)参考源代码,按要求定义函数。参考素材中的源代码在第 2 章已经练习,所以结合 这些源代码改写函数时,应注意定义一个函数时要考虑的几个方面,即: ✓ 明确函数名。 ✓ 函数后的形参列表,即各个参数名及数据类型。 ✓ 实现函数功能的函数体。 ✓ 函数返回值的数据类型。 1)定义一个名为 sumN 函数:已知 n,返回 1~n 之和。该函数带一个(整型)形参, 以从主调程序中得到需要计算的 n,通过函数名返回的结果也是一个整型,其参考代码截 图如图 4.5 所示。 图 4.5 定义函数 sumN 的参考代码截图 【注意】定义函数的语句是独立的以“Function”开始,以“End Function”结束的语句块, 不能在其他任何一个过程嵌套定义。 2) 定义一个名为 isPrime 的函数:判断一个数 p 是否为素数,若是则返回 True,否则返 回 False。这类判断问题,其返回值一般设为 Boolean 型,该函数带一个形参,以从主调 程序中得到需要判断的 p 值,通过函数名返回的结果是 Boolean 型,其参考代码截图如图 4.6 所示。 图 4.6 定义函数 isPrime 的参考代码截图

3)定义一个名为mxDv0:返同两个数m和n的最大公约数,该函数带两个(整型) 形参,以从主调程序中获得两个整数植,通过函数名返国的结果也是一个整型。其参考代 码截图如图4.6所示。 功能,定义一个客为iisr的函克,回两不和阿天公约数a Private Fumction maxDivisor(ByVal n As Integer,ByVal n As Integer)As Integer Dim r As Integer "如果和《时,将两个变量的值进行互糗 If n<n Then r=n n日n n=r End If 「变量r保留对的余数 r n Hod n Do1e?◇0”当余数不为0时,继块执行循环体 p n n =r r n Hod n Loop 用圣数名返回一个Integer型结果 axDivi50r=口 End Function 图47定义函数mDv的参考代码截图 (3治按钮1之和 编写代码并运行调试,实现计算并显示1k之间的所有整数之和”。 有了自定文函数umN,使得按钮Ck事件的编写,思路更加清渐,结构更加荷洁,即 获取基继数据一调用函数处理数据一输出结果,其中处理数据的过程在函数内部实现,参 考代码截图如图4.8所示。 '功能:计算并输出1之和 Private Sub btnSum_Click(ByVal sender As System.Object,ByVal e Dim k,s.As Integer ‘肤取基础数据 k Convert.ToInt32(txtK.Text) ·调用函数得到1之和 lblSum Text Convert.ToString(s) End Sub 图4器实现计算并是示1k之和的参考代码截图 (4给按钮判断编写代码并运行调试:实现“判断一个数是否是素数:”,调用 已定义好的用于“判断一个数是否为素数的函数isPrime”,参考代码截图如图4.9所示
3)定义一个名为 maxDivisor:返回两个数 m 和 n 的最大公约数。该函数带两个(整型) 形参,以从主调程序中获得两个整数值,通过函数名返回的结果也是一个整型,其参考代 码截图如图 4.6 所示。 图 4.7 定义函数 maxDivisor 的参考代码截图 (3)给按钮 编写代码并运行调试:实现“计算并显示 1~k 之间的所有整数之和”。 有了自定义函数 sumN,使得按钮 Click 事件的编写,思路更加清晰,结构更加简洁,即 获取基础数据—调用函数处理数据—输出结果,其中处理数据的过程在函数内部实现,参 考代码截图如图 4.8 所示。 图 4.8 实现计算并显示 1~k 之和的参考代码截图 (4)给按钮 编写代码并运行调试:实现“判断一个数是否是素数?”。调用 已定义好的用于“判断一个数是否为素数的函数 isPrime”,参考代码截图如图 4.9 所示

”功能:判断并显示一个软是否是素数 Private Sub btnPrime_Click(ByVal sender As Systen.Object,ByVal e Dim n As Integer Dim flag As Boolean 获取基出数据 n=Canvert.ToInt32(txtll.Text) ”调用数判断是否是素数 flag isPrine(m) '根据判断,显示达论 If flag Then lblPrime.Text=n&是素数。" Else lPrime.Tert=n&“不是素数。“ End If End Sub 图4.9实现判断并显示一个数是否为素数的参考代码截图 (5)给按组 编写代码并运行调试:实现“显示1030之间的所有素数”,参 考代码餐图如图4.10所示 功能:业示1030以内的所有素数 Private Sub btnShow_Click(ByVal sender As System.Object,ByWal e Dim i As Integer 1blShow.Text For i 10 To 30 If isPrine(i)Then lblShow.Text 1blShow.Text ""i End If Next End Sub 图4.10 实现显示10-30以内所有素数的参考代马载图 (6)给核把 拆分并显系编与代码并运行调试:实现“将20-0之间的所有侧数· 拆分成两个素数之和”。考虑以下三个方面: 1)20-30偶数的表达方式. 2)对于20-30的某一个数1,拆分成两个数之和,这两个数表示为」和:要求均为 素数,则调用函数Prime并采用逻辋表达式isPrime(j)and isPrime(i可j): 3)对于某一个i只要得到一组符合条件的素数即可,用Exit For终止循环。 参考代码截图如图411所示
图 4.9 实现判断并显示一个数是否为素数的参考代码截图 (5)给按钮 编写代码并运行调试:实现“显示 10~30 之间的所有素数”,参 考代码截图如图 4.10 所示。 图 4.10 实现显示 10~30 以内所有素数的参考代码截图 (6)给按钮 编写代码并运行调试:实现“将 20~30 之间的所有偶数, 拆分成两个素数之和”。考虑以下三个方面: 1)20~30 偶数的表达方式。 2)对于 20~30 的某一个数 i,拆分成两个数之和,这两个数表示为 j 和 i-j,要求均为 素数,则调用函数 isPrime 并采用逻辑表达式 isPrime(j) and isPrime(i-j)。 3)对于某一个 i 只要得到一组符合条件的素数即可,用 Exit For 终止循环。 参考代码截图如图 4.11 所示

功能,将030以内的所有偶数拆分成两个索数之和,并正示其中一组 Private Sub btnSplit_Click(ByVal sender As System.Object,ByWal e As System Din i,j As Integer txtSplit.Text Fcri■20To30Step2 Frj=3Toi/2”最小的素数从3开始 If1 Prlme)nd isPrime (1-)Them'满足两个均为素数的条件 txtSplit,Text=txtSplit.Text&i4“=“&j盘“+”金- i-5a0hr(13)ar(10) Exit For ·对于一个输出一组即可 End If Next Nex txtSplit.Readonly True ”的定文本框 End Sub 图4.11 实现拆分偶数并显示的参考代码截图 (7)给按细计算编写代码并运行调试:实现“求两个整数m和口的最大公约数和最 小公倍数”。利用已定义好的“已知两数,求其最大公约数的函数maxDiviso”,其餐考代 码威图如图4.12所示。 ”需,计算并五示两个数的大公的现和个公暗菜 Private Sub btnCal_Click(Byal sender As Systen.Cbject,ByVal e As Systen EventArgs n=Coewert.ToInt32(tatl.Text) D=Commrert.ToInt32(t Text) ”调用函数得到和最大公数 盟买探 1blA.Tert Coewert.ToString(an 显西最小公倍数 1blB.Tert#Corwvert.ToString (n+n nn) End Sub 图412 实现计算并显示两个数的最大公约数的参考代码截图
图 4.11 实现拆分偶数并显示的参考代码截图 (7)给按钮 编写代码并运行调试:实现“求两个整数 m 和 n 的最大公约数和最 小公倍数”。利用已定义好的“已知两数,求其最大公约数的函数 maxDivisor”,其参考代 码截图如图 4.12 所示。 图 4.12 实现计算并显示两个数的最大公约数的参考代码截图