vb第九章部分习题解答记录,求指正

1、设a为一整数,如果能使a2=xxa成立,则称a为“守形数”。例如52=25,252=625,则5和25都是守形数。试编写一个Function过程Automorphic,其形参为一正整数,判断其是否为守形数,然后用该过程查找1-1000内的所有守形数。

Private Sub Form_click()
Dim n As Single    'n不可使用integer,如使用integer则会产生数据溢出
For n = 1 To 1000  '测试1~1000的数字
 If automorphic(n) = True Then '调用函数
  Print "n*n="; n * n, n; "是一个守形数"
 End If
Next n
End Sub
Function automorphic(n As Single) As Boolean '这个function有很多写法,用布尔型应该是比较简便的一种
Dim squ As Single
squ = n * n
If squ Mod 10 = n Or squ Mod 100 = n Or squ Mod 1000 = n Then '验证是否满足n*n=xxn
 automorphic = True
Else
 automorphic = False
End If
End Function

某人抱怨朕不会写注释。。。好吧我承认。

蛮简单的题,但是我一开始用了一个循环来确定n的位数然后才用mod,没有想到or连接多个条件。以及有些不习惯布尔型的使用

出了个小插曲数据溢出,习惯用integer来定义变量/捂脸。更改了squ还是数据溢出。就是说这里只要n是整型n*n就会产生数据溢出

因为数据是先进行整型数n*n的计算并把结果存为整型然后尝试赋值给single的squ并尝试改变它的单精度为整型数据。(不同数据之间的相互赋值在c好像是不被允许的?)也就是说被赋值后的变量类型也会被强制赋值。

那么问题来了,为什么inputbox赋给的变量依旧可以保持原来的类型?

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值