Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: mxg825

有奖题:带三个MM开车去兜风-循环法练习

[复制链接]
发表于 2008-5-26 16:45 | 显示全部楼层
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

发表于 2008-5-26 17:27 | 显示全部楼层
回复

使用道具 举报

发表于 2008-5-26 17:27 | 显示全部楼层
回复

使用道具 举报

发表于 2008-5-26 23:03 | 显示全部楼层

我的解法(我是菜鸟,不会隐藏帖子,见谅)

<p>'运行前请将工作表清空<br/>Sub 求解()<br/>Dim n As Long<br/>n = InputBox("请输入三个MM的年龄乘积")<br/>Dim i, j, k, m, u, row As Long<br/>row = 1<br/>m = 0<br/>'先将乘积数值因式分解(这一步并不是必要的)<br/>Dim xarry(10000) As Long<br/>For u = 1 To n / 2<br/>&nbsp;&nbsp;&nbsp; If n Mod u = 0 Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m = m + 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xarry(m) = u<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp; Next u<br/>&nbsp;&nbsp;&nbsp; <br/>'通过循环找到满足条件的解,并假设老教授年龄不超过一百岁<br/>For i = 1 To m<br/>&nbsp;&nbsp;&nbsp; For j = i To m<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For k = j To m<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If xarry(i) * xarry(j) * xarry(k) = n And 2 * (xarry(i) + xarry(j) + xarry(k)) &lt;= 100 Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cells(row, 1).Value = xarry(i)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cells(row, 2).Value = xarry(j)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cells(row, 3).Value = xarry(k)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; row = row + 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next k<br/>&nbsp;&nbsp;&nbsp; Next j<br/>Next i<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; If Cells(1, 1).Value = "" Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim err As String<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; err = MsgBox("题设条件下无解")<br/>&nbsp;&nbsp;&nbsp; End If</p><p>End Sub<br/></p>
回复

使用道具 举报

发表于 2008-5-27 09:49 | 显示全部楼层

辛苦了
回复

使用道具 举报

发表于 2008-5-27 10:35 | 显示全部楼层

<p>纯学习一下,msgbox应放在最后,不然窗口要显示30次,这个问题楼主应该考虑到的</p><p>如下:Sub 年龄()<br/>Dim m1 As Integer<br/>Dim m2 As Integer<br/>Dim m3 As Integer<br/>Dim x As Integer<br/>For m1 = 1 To 30<br/>For m2 = m1 To 30<br/>For m3 = m2 To 30<br/>For x = (m1 + m2 + m3) * 2 To 120<br/>If m1 * m2 * m3 = 2450 And (m1 + m2 + m3) * 2 = x &lt; 120 Then<br/>End If<br/>Next<br/>Next<br/>Next<br/>Next<br/>MsgBox "年龄=:小雪=" &amp; m1 &amp; ",小月=" &amp; m2 &amp; ",小丽=" &amp; m3 &amp; ",老教授=" &amp; (m1 + m2 + m3) * 2 &amp; ""</p><p>End Sub</p><p>这样就OK了<br/></p>
回复

使用道具 举报

发表于 2008-5-29 13:43 | 显示全部楼层

学习
回复

使用道具 举报

发表于 2008-5-29 14:46 | 显示全部楼层

<p>只有学习!</p>
回复

使用道具 举报

发表于 2008-5-29 16:19 | 显示全部楼层

<p>得看教授最大有多少,所以方案是有几个的!</p><p>
游客,如果您要查看本帖隐藏内容请回复
</p>
回复

使用道具 举报

 楼主| 发表于 2008-6-3 11:51 | 显示全部楼层

<p>雨版,我带三个是女孩哦,有可能是60岁的女孩吗?</p>[em01][em01][em01]
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 08:56 , Processed in 0.270814 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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