设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 1911|回复: 16
打印 上一主题 下一主题

[模块/函数] 一道数学题,请大家帮助看看,,谢谢

[复制链接]
跳转到指定楼层
1#
发表于 2015-9-24 21:30:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问: 一个三位数,个位上的数字比十位上的数字大1,个位上的数字比百位上的数字大3,把百位上的数字与个位上的数字交换位置后得到一个新数,新数与原数的和为787,原数是多少?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2015-9-24 21:31:22 | 只看该作者
如何使用VBA进行编程计算

点击这里给我发消息

3#
发表于 2015-9-24 22:02:15 | 只看该作者
245,口算10秒出答案,不用编程{:soso_e120:}

点评

牛  发表于 2015-9-26 10:03
4#
 楼主| 发表于 2015-9-24 22:06:51 | 只看该作者
谢谢,我想编程如何使用呀
5#
发表于 2015-9-25 00:19:47 | 只看该作者
我还是个高三学生,学的是计算机,但是到现在考老师没教更深的语句。。。
你的问个问题,我应该是没问题,只是我旁边没电脑!!!

我就说下我的思路。。。。
用一个产量控制循环
sub  
for a=100 to 999
b=a mod 10
c=(a fix 10)mod 10
d=fix (a/100)
e=b+c+d
if  b-c=1 and  b-d=3 then
msgbox    e+b*10+c+d*100
end  if
next a
end  sub

初浅见解

点评

继续努力  发表于 2015-9-26 10:04

点击这里给我发消息

6#
发表于 2015-9-25 09:13:28 | 只看该作者

  1. Public Function CheckNumber()
  2.     Dim i0 As Long  '个位数
  3.     Dim i1 As Long  '十位数
  4.     Dim i2 As Long  '百位数

  5.     '百位最小,个位最大
  6.     '百位的有效范围是 1~(9-3),也就是1~6
  7.     For i2 = 1 To 6
  8.         i0 = i2 + 3 '得到个位数
  9.         i1 = i0 - 1 '得到十位数

  10.         '判断是否符合条件
  11.         If CInt(i2 & i1 & i0) + CInt(i0 & i1 & i2) = 787 Then
  12.             Debug.Print i2 & i1 & i0    '输出结果
  13.         End If
  14.     Next

  15.     Debug.Print "End!"
  16. End Function
复制代码

这里3个数字组合成一个3位数直接用个& 连接了,也可以用数学方法计算得到:i2*100+i1*10+i0

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点评

赞  发表于 2015-9-26 10:05

点击这里给我发消息

7#
发表于 2015-9-25 09:14:26 | 只看该作者
jnne 发表于 2015-9-25 00:19
我还是个高三学生,学的是计算机,但是到现在考老师没教更深的语句。。。
你的问个问题,我应该是没问题, ...

你这个循环次数太多了
8#
发表于 2015-9-25 10:21:53 | 只看该作者
本帖最后由 roych 于 2015-9-25 10:29 编辑
jnne 发表于 2015-9-25 00:19
我还是个高三学生,学的是计算机,但是到现在考老师没教更深的语句。。。
你的问个问题,我应该是没问题, ...

不错不错。不过还可以优化下语句【调用:call test(787)】:
  1. Function test(ByVal lngResult As Long) As Long
  2. Dim i As Long
  3. 'lngResult=调换后的结果
  4. '一下是计算简化过程:

  5. '假定a,b,c分别为百位、十位、个位,个位数跟百位数对调后则:
  6. '
  7. '(a*100+10*b+c)+(c*100+10*b+a)               ——————————→                101*(a+c)+20*b
  8. '(lngResult\101)                             ——————————→                a+c
  9. '(lngResult Mod 101)/20                      ——————————→                b

  10. '令a=i,则:
  11. '
  12. '100*a                                       ——————————→                100*i
  13. '10*b                                        ——————————→               (lngResult Mod 101)/2
  14. 'c                                           ——————————→               (lngResult \ 101)-i

  15. For i = 1 To (lngResult \ 101)
  16.     If (lngResult \ 101 - 2 * i) = 3 Then
  17.         test = 100 * i + (lngResult Mod 101) / 2 + (lngResult \ 101 - i)
  18.     End If
  19. Next
  20. End Function
复制代码
9#
 楼主| 发表于 2015-9-25 13:30:28 | 只看该作者
谢谢大家帮助!1
10#
发表于 2015-9-26 10:06:12 | 只看该作者
好题
回复

使用道具 举报

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

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-5 22:00 , Processed in 0.105698 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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