Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5897|回复: 14

[习题] 【已开帖】【VBA初级201201班】练习5(趣味数学题)

  [复制链接]
发表于 2012-4-26 00:20 | 显示全部楼层 |阅读模式
本帖最后由 FF7 于 2012-5-3 10:12 编辑

请大家在完成下面的题目的同时,尽量精炼自己的代码,开贴后我们将根据大家的代码,评选出最优秀的代码作品,给以另外的加分。
优秀作品:第一,代码格式规范,整洁;第二,代码简练;第三,答案正确。

第一题:唐僧师徒摘桃子(基础)        2分,优秀另加。
  1. Rem 第一题:唐僧师徒摘桃子(基础)
  2. '解题思路:因为猪八戒的桃子除以3多一个,沙僧除以4多一个,孙悟空除以5多一个,所以他们手中的桃子数目肯定是3,4,5的公倍数+1.
  3. '而3,4,5的最小公倍数是3*4*5。那么3,4,5的公倍数就应该是3*4*5* n (n表示自然数)

  4. '解法一:口算
  5. '桃子数目是120到140之间。所以60*2 +1=121即为最后结果
  6. Function TaoZi001() As Integer
  7.     TaoZi001 = 3 * 4 * 5 * 2 + 1
  8. End Function

  9. '解法二:Do Loop循环,n表示3,4,5的第n个公倍数
  10. Function TaoZi() As Long
  11.     Dim n As Long
  12.     Do Until TaoZi > 120 And TaoZi < 140
  13.         n = n + 1
  14.         TaoZi = 3 * 4 * 5 * n + 1
  15.     Loop
  16. End Function

  17. '解法三:For循环1,n表示3,4,5的第n个公倍数
  18. Function TaoZi002() As Long
  19.     Dim n As Long
  20.     For n = 1 To 1000
  21.         TaoZi002 = 3 * 4 * 5 * n + 1
  22.         If TaoZi002 > 120 And TaoZi002 < 140 Then Exit For
  23.     Next
  24. End Function

  25. '解法四:For循环2,以公倍数为循环条件
  26. Function TaoZi003() As Long
  27.     Dim n As Long
  28.     For n = 3 * 4 * 5 To 140 Step 3 * 4 * 5
  29.         TaoZi003 = n + 1
  30.         If TaoZi003 > 120 And TaoZi003 < 140 Then Exit For
  31.     Next
  32. End Function
复制代码

第二题:剪指甲(学习和思考)           4分,优秀另加。
  1. Rem 第二题:剪指甲(思考)
  2. '解题思路:1分钟剪5个指甲,那么m分钟就可以剪m*5个,但是老张连脚趾头一起算都只有20个指甲,所以当m>4的时候他仍然只能剪20个指甲。

  3. '思路一,先判断时间是否小于5分钟,小于5分钟则是m*5,否则就是20个
  4. Function SuperCuter(ByVal m As Integer) As Integer
  5.     If m < 5 Then SuperCuter = m * 5 Else SuperCuter = 20
  6. End Function
复制代码

第三题:头疼的卡片(进阶)               8分,优秀另加。
  1. Rem 第三题:头疼的卡片(进阶)
  2. Rem 第一问:所有可能的组合数
  3. '解题思路:因为是一个两位数,所以第一位不能为0,那么卡片的正反面一共是6个数字,0,1,2,3,4,5
  4. '所以,十位数不能为0,六位数字一共有5种可能1,2,3,4,5
  5. '任意确定1,2,3,4,5中一位数字为十位数,比如3,那么在剩下的数字中,跟3在同一张卡片上的2不可能出现,剩下的0,1,4,5都可以出现,所以有4种可能。
  6. '所以两位数的总共可能为:5*4 = 20种。
  7. Function TotalZuHe()
  8.     TotalZuHe = 5 * 4
  9. End Function


  10. Rem 第二问:列出所有可能出现的两位数
  11. '解题关键:实际0,1;2,3;4,5首先存在一个分组,分组中的数字不能同时出现
  12. Sub theAllnumber()
  13.     Dim arr, m As Integer, n As Integer
  14.     arr = Array("a", "a", "b", "b", "c", "c")    '首先利用数组对0,1;2,3;4,5分别分组为a,b,c。所以此时a(0)="a",a(1)="a";a(2)=a(3) = "b",a(4)=a(5)="c"
  15.     For m = 1 To 5        '十位数不能为0
  16.         For n = 0 To 5    '个位数可以为0到5的任何数
  17.             '这里的判断条件arr(m)<>arr(n)就是为了防止个位数和十位数不能是同一张卡片上的
  18.             If arr(m) <> arr(n) Then Cells(15 + m, n + 3) = m & n    '列出所有组合
  19.     Next n, m
  20. End Sub
复制代码


提示:附件已经于2012年4月26日下午17:17分进行修订,适当降低了第三题的难度。  原帖中指定了列举所有可能数字的区域,修改后的题目取消对区域的限制。只要把结果列举出来即可。一个单元格一个数字即可!

19:32分:第三题第二问取消对区域的限制,意思是你排成一行也可以,排成一列也可以,排成一个方阵也可以,乱七八糟无规律的排也可以,只要把所有组合列举在15行以下任意的单元格内即可。




【VBA初级201201班】练习5(趣味数学题,26日下午修订版).rar

5.6 KB, 下载次数: 100

分基础,思考和进阶三个题目

【VBA初级201201班】练习5(趣味数学题参考答案).zip

15.8 KB, 下载次数: 44

参考答案

发表于 2012-4-26 09:03 | 显示全部楼层
多谢老师出题,我们也可以出趟差了,去趟天竺,呵呵。
回复

使用道具 举报

发表于 2012-4-26 15:36 | 显示全部楼层
本帖最后由 suntree 于 2012-4-26 21:29 编辑

B02:suntree
练习题请老师指导
【VBA初级201201班】练习5(趣味数学题).zip (11.57 KB, 下载次数: 17)

点评

FF7
第一个附件已经全对,第二个附件对修订后的第三题进行了优化。因为是第一个全对,所以除了满分之外,给与额外6分奖励。  发表于 2012-4-26 21:42

评分

参与人数 1 +20 金币 +20 收起 理由
FF7 + 20 + 20 很给力!

查看全部评分

回复

使用道具 举报

发表于 2012-4-26 17:53 | 显示全部楼层
本帖最后由 gnwbj 于 2012-4-27 12:17 编辑

B13 gnwbj 上交练习题

更新:已经修改 多谢老师指正

【VBA初级201201班】练习5(趣味数学题,26日下午修订版)-B13-gnwbj.zip

10.65 KB, 下载次数: 11

点评

FF7
修改后的结果全部正确,14分。代码格式赏心悦目+1分;总计15分。  发表于 2012-5-1 12:53
FF7
4月26日 19:42 — 第一问错误哦,第二题和第三题目前均可以化简。目前可得分第二题4分,第三题第一问结果正确1分,代码简练不得分。第三题第二问可得6分。总计11分。暂不评分,看是否修改,最后再评分!  发表于 2012-4-26 19:44

评分

参与人数 1 +15 金币 +15 收起 理由
FF7 + 15 + 15 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2012-4-26 23:58 | 显示全部楼层
本帖最后由 ysjxxxlsx 于 2012-5-1 13:35 编辑

上交练习五作业,在FF7老师的帮助下,成果如下:
     1、终于知道工作表中的按钮的改名和删除了。
     2、第1题的条件是不是“>=120"
     3、第2题忘记每个人只有2只手,2只脚,呵呵
以上成果不知是否正确,再次感谢FF7老师!!!
【VBA初级201201班】练习5 B03再次上传答案.rar (12.52 KB, 下载次数: 18)

点评

FF7
呵呵,总算发现错误了。趣味数学嘛,哈哈!!  发表于 2012-5-1 14:20
FF7
代码格式不规范,-1分。  发表于 2012-5-1 13:00
FF7
第一题:结果正确。但代码的思路不够严谨。不过对于本题应该算正确。得2分。第二题代码简练,但结果不对,不得分。第三题结果正确。得8分。总计10分。  发表于 2012-5-1 12:59
FF7
已经修改作业许多次。很认真,值得嘉奖。+2分  发表于 2012-5-1 12:57

评分

参与人数 1 +15 金币 +15 收起 理由
FF7 + 15 + 15 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2012-4-27 20:22 | 显示全部楼层
B05:貌似小孩 提交作业

【VBA初级201201班】练习5(趣味数学题,26日下午修订版)-B05-貌似小孩.rar

10.11 KB, 下载次数: 17

点评

FF7
代码格式赏心悦目,可作为范例,+2分。VBA功底扎实,可惜的是没有动足脑筋,第二和第三题全错。总计得分4分。  发表于 2012-5-1 13:04

评分

参与人数 1 +4 金币 +4 收起 理由
FF7 + 4 + 4 神马都是浮云

查看全部评分

回复

使用道具 举报

发表于 2012-4-28 09:29 | 显示全部楼层
上交练习题5,请老师查检下

A25【VBA初级201201班】练习5.xls

28 KB, 下载次数: 13

点评

FF7
代码格式比较规范,但可以改进一些,让代码更整齐。所有代码最好不要和Function这些关键字平齐。所有题目思路清晰,答案正确。可得满分14分。  发表于 2012-5-1 13:16

评分

参与人数 1 +14 金币 +14 收起 理由
FF7 + 14 + 14 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2012-5-1 13:18 | 显示全部楼层
MARK.
本帖周四开贴,请做完练习的学员赶紧跟帖送分咯。
回复

使用道具 举报

发表于 2012-5-1 23:55 | 显示全部楼层
本帖最后由 cyh888 于 2012-5-2 17:41 编辑

A01:cyh888提交练习题
【VBA初级201201班】练习5(趣味数学题,26日下午修订版).rar (12.48 KB, 下载次数: 6)

点评

FF7
VBA基本功扎实。代码格式比较规范。代码思路清晰,结构简练,非常不错。满分14分!  发表于 2012-5-2 22:49

评分

参与人数 1 +14 金币 +14 收起 理由
FF7 + 14 + 14 赞一个!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2012-5-3 10:32 | 显示全部楼层
Mark,以下回帖不再送分!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 15:25 , Processed in 0.385207 second(s), 19 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表