回 帖 发 新 帖 刷新版面

主题:[em]10 老问题再求!

有一个不多于5位的正整数,要求:(1)求出它是几位数;(2)分别输出每一位数字:(3)按逆序打印出各位数字。
我在百度搜了一下,全是C的。。。我想要QB的,没办法,没有人教,只有求各位前辈了!

回复列表 (共17个回复)

沙发

忘了说一声,一定要把思路说一下,我才能学会啊,拜托各位!

板凳

。。。唉,米办法,自己解决了。。。是不是我提的问题太没有技术含量了!

3 楼

同意二楼说法.
但你的"解决了"相信还不够,
不信?

   print len(str$( N ))-1
   print 1+int(log( N )/log(10))

4 楼

看不懂,还没学到哪,今天才看到DO loop 循环

5 楼

有一个不多于5位的正整数,要求求出它是几位数;(2)分别输出每一位数字:(3)按逆序打印出各位数字。

答:(1)思路是:任何正整数的位数都可以使用数学的方法获得lgN+1再取整就可以了。具体实现大概可以用int(ln(n)/ln(10)+1);(2)既然你看到了do循环,用数学方法直观点(就是麻烦)例如你要十位数,对原数字整除以10,十位就成了个位,然后再取对10的余数,就是原来的十位数了。用以个循环就解决了。(但我还是推荐三楼的字符串方法。):(3)既然可以取出各位数字,那么逆序就不时什么问题了。

6 楼

长度
print len(str$( n ))-1
全部(不使用函数的直观做法):
dim a(5)
rem i是用来计算n 的位数
i=0
rem 这个循环用来求出n 的各个位数 每次 n对 10 求余为最低位然后n除10求整将次rem 底位转为最低位
do
a(i)=n\10
n=int(n/10)
i=i+1
loop until n=0
rem 上面 n =0  退出是因为 如果n 是一位数的时候除10求整为0,最后一位计算完毕
rem 倒输出
for j = i to 1 step -1
? a(i);
next j
end.




这个是新手应该掌握的 
新手不推荐使用 len()  str$ () instr$等函数    主要培养 思路

7 楼

INPUT x
SELECT CASE x
CASE 1 TO 99999
a = x \ 10000
x = x MOD 10000
b = x \ 1000
x = x MOD 1000
c = x \ 100
x = x MOD 100
d = x \ 10
x = x MOD 10
e = x
PRINT a; b; c; d; e
PRINT e; d; c; b; a
CASE ELSE
PRINT "shu ru cuo wu"
END SELECT
END

这个问题19号就解决了,这是程序,没什么错吧!

8 楼

....错了    x  是 4位数呢?
这个就适合5位   而且 求出来 的 带小数

9 楼

不对啊,不多于就是小于等于吧。。。10000也算啊。。。

10 楼

我也遇到同样的问题呀,是六位

我来回复

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