vb手机号码抽奖程序_vb抽奖小程序_vb60抽奖程序(9)

电脑杂谈  发布时间:2017-02-24 04:05:29  来源:网络整理

公鸡3元每只,母鸡5元每只,小鸡1元3只,一百元钱买一百只鸡。请求出公鸡,母鸡和小鸡的数目。

编程简析

我们做最极端的假设,公鸡可能是0-100,母鸡也可能是0-100,小鸡还可能是0-100,将这三种情况用循环套起来,那就是1000000种情况。这就是列举法。为了将题目再简化一下,我们还可以对上述题目进行一下优化处理:

假设公鸡数为x,母鸡数为y,则小鸡数是100-x-y,也就有了下面的方程式:

3*x+5*y+(100-x-y)/3=100

从这个方程式中,我们不难看出大体的情况:公鸡最多有33只,最少是没有,即x的范围是0-33;母鸡最多20只,最少0只,即母鸡的范围是0-20;有了公鸡母鸡,小鸡数自然就是100-x-y只。可能的方案一共有34*21种,在这么多的方案中,可能有一种或几种正好符合相等的条件。

电脑怎样工作呢?计算机事实上就是将上述34*21种方案全部过滤一遍,找出符合百钱买百鸡条件的(也即上式),只要符合,这就是我们要的输出结果。

程序实现

我们怎样将这34*21种方案罗列出呢?这么多的方案,最好的办法是还是用循环。可用循环和循环的嵌套,一个关于公鸡数和一个关于母鸡数的循环套起来,就能将所有的方案都遍历。后面的问题成了怎样判断哪一个方案是我们寻找的符合条件和方案呢?只能根据百钱买百鸡了,即3*x+5*y+(100-x-y)/3=100作为条件,在条件成立的一方输出x,y,和100-x-y的值就行了,这是分支要解决的问题,程序的整体结构有了,两个嵌套循环中套分支。

界面源程序

界面非常简单,建立一标准EXE工程,其caption设为“百钱买百鸡”,一切OK。我们将代码加给Form_Click(),即窗体的单击事件,将来运行时,我们只要用鼠标单击一下窗体,程序就执行了。

源程序如下:

Option Explicit

Private Sub Form_Click()

Dim x, y As Integer '声明变量

For x = 0 To 33

For y = 0 To 20

If 3 * x + 5 * y + (100 - x - y) / 3 = 100 Then

Print '公鸡,母鸡和小鸡数分别为:'; x, y, 100 - x - y

End If

Next y

Next x

End Sub

(上程序在VB60 Win2000下调试通过)

题目的结果有多组,正和我们刚开始的所想相符。

小结

这就是列举法,将可能的情况一网打尽;不过在应用过程中,我们最好还是做些优化,不然,要浪费好多没必要浪费的时间。

镜里照镜——递归法破解难题 问:“前几种办法的确名如其法,比较笨。有没有比较潇洒一点的算法?递归属不属于些类算法呀?”

答:“递归一种非常奇妙和美妙的算法形式,奇妙美妙的背后是比较难理解。但用起来却异常简洁。”

什么是递归

说白了递归就象我们讲的那个故事:山上有座庙,庙里有个老和尚,老和尚在讲故事,它讲的故事是:山上有座庙,庙里有个老和尚,老和尚在讲故事,它讲的故事是:……也就是直接或间接地调用了其自身。

就象上面的故事那样,故事中包含了故事本身。vb60抽奖程序因为对自身进行调用,所以需对程序段进行包装,也就出现了函数。

函数的利用是对数学上函数定义的推广,函数的正确运用有利于简化程序,也能使某些问题得到迅速实现。对于代码能性较强的、重复执行的或经常要用到的部分,将其功能加以集成,通过一个名称和相应的参数来完成,这就是函数或子程序,使用时只需对其名字进行简单调用就能来完成特定功能。

函数又可分为自定义的和系统附带的,但不管是自定义的还是系统的,他们都对相应的功能进行了封装,以利于我们经常性地使用。例如我们的对一个小数取整数INT()函数,不论什么样的小数,往()中一放,将来得到的值就自动将小数去除了。函数执行完将返回一个值,当然这个值可以是各种类型的,子程序仅仅执行一个过程,不返回数值。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-34162-9.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...