回 帖 发 新 帖 刷新版面

主题:[讨论]新手问题,十转二进制

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个回复)

沙发


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 可以省略了
你写的这个改改 可以是 模运算 是怎么算的 代码

我想你 知道你要的东西了.

板凳

谢谢楼上的回复,但我想你误解了,我想求的是整个二进制数(十进制转二进制),如:输入100,输出1100100.不是单单求余数,我就是不明白"let k=k+ki*10i"这一句为什么会有错误!请指教!

3 楼

我问你"ki"和"10i"是什么东西?"10i"有这样命名变量的吗?数字是不能在前的。你不是用代数的表示方法用在编程语言上吧?

4 楼


原来是这样,我明啦!有没有人可以写个十转二进制的QB来参考一下?拜托!

5 楼


终于明白怎么改了!
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 楼

CLS
INPUT N
DO
Y=Y MOD 2
N=N\2
X$=X$+LTRIM$(STR$(Y))
LOOP UNTIL N=0
PRINT X$
END

7 楼

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 楼


楼上两位的程序好有问题,输入100,输出的是0000000:正常应该输入100,输出1100100.有问题,请修改!互相学习!

9 楼

把X$的累加改成"X$=LTRIM$(STR$(Y))+X$",
这样就对了!
加分!

10 楼

多谢楼上的指教

我来回复

您尚未登录,请登录后再回复。点此登录或注册