VB 十进制转二进制 代码问题 急!!

PrivateSubCommand1_Click()DimnAsInteger,numAsLongDimchAsString,Bin()AsString,rAsInteg... Private Sub Command1_Click()
Dim n As Integer, num As Long
Dim ch As String, Bin() As String, r As Integer, i As Integer
num = Val(Text1)
n = 0
Do
r = num Mod 2
n = n + 1
ReDim Bin(n)
Loop Until r = 0
For i = UBound(Bin) To 1 Step -1
ch = ch & Bin(i)
Next i
Text2 = ch
End Sub

哪里出了错?跪求高手帮忙修改!
展开
 我来答
大野瘦子
高粉答主

2019-10-24 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:34.5万
展开全部

这样:

Private Sub Command1_Click()

 Dim n As Integer, num As Long

 Dim ch As String, Bin() As String, r As Integer, i As Integer

 num = Val(Text1.Text)

 n = 0

 r = num

 Do

   n = n + 1

   ReDim Preserve Bin(n)

   Bin(n) = r Mod 2

   r = r \ 2

 Loop Until r < 1

 For i = UBound(Bin) To 1 Step -1

   ch = ch & Bin(i)

 Next i

 Text2.Text = ch

End Sub

redim数组变量没有给其赋值。

扩展资料:

注意事项

一个十进制转二进制的函数:

Public Function D2B(D As Integer) As String

    D2B = ""

    Do While D > 0

        D2B = D Mod 2 & D2B

        D = D \ 2

    Loop

End Function 

Private Sub Form_Load()

    Me.Caption = D2B(8)

End Sub

另外的办法:

Function dToTwo(n As Integer) As String

Dim S As String

S = ""

Do While n <> 0 

    a = n Mod 2 

    n = n \ 2 

    S = Chr(48 + a) & S

Loop

dToTwo= S

End Function

tianqing20wen

2011-04-22 · TA获得超过2.4万个赞
知道大有可为答主
回答量:8226
采纳率:88%
帮助的人:5135万
展开全部
Private Sub Command1_Click()
r = Val(Text1)
n = 0
Do
ch = r Mod 2 & ch
r = r \ 2
Loop Until r = 0
Text2 = ch
End Sub

你redim 数组变量 却不给其赋值 不是白搭么
再者你若是要 动态REDIM 也要加Preserve 这样才可保留住之前的数据
redim Preserve bin(n)

再者 r = num Mod 2 永远都是初始值NUM 去求余 那R值不都永远一样么
要是Num是奇数 不就死循环了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友bdb9803
推荐于2017-11-24 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:53%
帮助的人:1亿
展开全部
首先你要明白十进制转二进制的方法
如 100 转成2进制
用辗转相除法
100
除2 50 余数0
除2 25 余数0
除2 12 余数1
除2 6 余数0
除2 3 余数0
除2 1 余数1
除2 0 余数1
把相除过程中产生的余数倒序看 1100100 这就是100变成2进制的值
再看程序
Public Function DECtoBIN(Dec As Long) As String
DECtoBIN = ""
Do While Dec > 0 //这个循环就是辗转相除法的循环
DECtoBIN = Dec Mod 2 & DECtoBIN //DECtoBIN 是每次产生的余数连成的字符串
Dec = Dec \ 2 //dec为下次要进行除法的被除数。
Loop //注意这里字符串连接是倒序连接
End Function
同理看下面程序
Dim a%(10),m%,i%
M=val(inputbox(""))
i=0
do while m<>0 //这个也是辗转相除法的循环
a(i)=m mod 2 //用数组保留除得的余数
m=m\2 //m为下次要进行除法的被除数
i=i+1
loop
for k=i-1 to 0 step-1 //倒序输出余数
print a(k);
next
追问
额,我不要其他方法。。。就想知道自己的方法哪里出错了
追答
Private Sub Command1_Click()
Dim n As Integer, num As Long
Dim ch As String, Bin() As String, r As Integer, i As Integer
num = Val(Text1.Text)
n = 0
r = num
Do
n = n + 1
ReDim Preserve Bin(n)
Bin(n) = r Mod 2
r = r \ 2
Loop Until r < 1
For i = UBound(Bin) To 1 Step -1
ch = ch & Bin(i)
Next i
Text2.Text = ch
End Sub
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-04-22
展开全部
n=12345
do while(n>2)
s=s & (n and 1)
n=n\2
loop
s=strreverse(s)
msgbox s
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式