主题:[讨论]新手问题,十转二进制
iyan1982
[专家分:0] 发布于 2007-09-19 14:20:00
input "m=";m
let k=0:let i=0
do
let ki=m mod 2
let k=k+ki*10i
let i=i+1
let m=m\2
loop until m=0
print "k=" ;k
end
错误出在第五行"10i"处,显示end-of-statement"错误,为什么,刚学QB,什么都不懂,例子是书上的,运行不了.求高手指点指点
回复列表 (共11个回复)
沙发
pengbin [专家分:0] 发布于 2007-09-19 20:00:00
input "m=";m
let k=0:let i=0
do
let ki=m mod 2
let k=k+ki*10i
let i=i+1
let m=m\2
loop until m=0
print "k=" ;k
end
我、认为可以这样
首先是你的目的:求一个数 除以2 后的余数 ,对吗?
这个都用不着其他的 只是一个 模运算
input "m=",m 注意“”后是个“,” 输入这个数
k=m MOD 2
print "k=" ,k
end
结果
m=8
k=0
m=3
k=1
等等
LET 可以省略了
你写的这个改改 可以是 模运算 是怎么算的 代码
我想你 知道你要的东西了.
板凳
iyan1982 [专家分:0] 发布于 2007-09-20 00:08:00
谢谢楼上的回复,但我想你误解了,我想求的是整个二进制数(十进制转二进制),如:输入100,输出1100100.不是单单求余数,我就是不明白"let k=k+ki*10i"这一句为什么会有错误!请指教!
3 楼
我是大喊三 [专家分:3010] 发布于 2007-09-20 14:31:00
我问你"ki"和"10i"是什么东西?"10i"有这样命名变量的吗?数字是不能在前的。你不是用代数的表示方法用在编程语言上吧?
4 楼
iyan1982 [专家分:0] 发布于 2007-09-20 16:48:00
原来是这样,我明啦!有没有人可以写个十转二进制的QB来参考一下?拜托!
5 楼
iyan1982 [专家分:0] 发布于 2007-09-20 17:00:00
终于明白怎么改了!
input "m=";m
let k=0:let i=0
do
let ki=m mod 2
let k=k+ki*10^i
let i=i+1
let m=m\2
loop until m=0
print "k=" ;k
end
就是少了一个符号"^"
多谢各位
6 楼
我的电脑 [专家分:990] 发布于 2007-09-20 17:47:00
CLS
INPUT N
DO
Y=Y MOD 2
N=N\2
X$=X$+LTRIM$(STR$(Y))
LOOP UNTIL N=0
PRINT X$
END
7 楼
QB小猪 [专家分:1200] 发布于 2007-09-20 17:53:00
cls
input m
do
y=y mod 2:m=m\2
w$=w$+ltrim$(str$(y))
loop until m=0
?w$
end
以上是十转二进制,下面是二转十进制:
cls
input m$:l=len(m$)
for i=1 to l
b=val(mid$(m$,i,1))
w=w+b*2^(i-1)
next i
?w
end
是对的哦!!!
8 楼
iyan1982 [专家分:0] 发布于 2007-09-21 09:50:00
楼上两位的程序好有问题,输入100,输出的是0000000:正常应该输入100,输出1100100.有问题,请修改!互相学习!
9 楼
我的电脑 [专家分:990] 发布于 2007-09-21 13:30:00
把X$的累加改成"X$=LTRIM$(STR$(Y))+X$",
这样就对了!
加分!
10 楼
QB小猪 [专家分:1200] 发布于 2007-09-21 13:53:00
多谢楼上的指教
我来回复