zzyymxt 发表于 2008-6-11 23:50

回文数问题改错。。知道的大师请进!!!

题目:输入一个正整数,判别是否回文数。
(回文数:从左至右与从右至左读起来都是一样的数字,如:121是一个回文数。)
要求:用for循环实现,循环变量用i,如果是回文数,结果为.T.;不是,结果为.F.。将判断结果存放在变量S中,且红字部分不能改。


我的答案(有误):
[color=Red]set talk off
input "数字:" to m[/color]
n=str(m)
L=len(n)
for i=1 to L
if subs(n,i,1)=subs(n,L-i+1,1)
   s=".T."
else
   s=".F."
endif
endfor
?s
[color=Red]set talk on[/color]

答案做出来都是.F.!
各位大师!!拜托帮我看看哪里不对需要改下!!!小女子这厢谢过先!!!!

[[it] 本帖最后由 zzyymxt 于 2008-6-11 23:53 编辑 [/it]]

Tiger5392 发表于 2008-6-12 00:07

set talk off
input "数字:" to m
if type('m')='N' and int(m)=m and m>=0
  n=alltrim(str(m))
  L=len(n)
  s=.T.
  for i=1 to L
    if subs(n,i,1)#subs(n,L-i+1,1)
      s=.F.
      exit
    endif
  endfor
else
  s=.F.
endif
?s
set talk on

zzyymxt 发表于 2008-6-12 19:31

谢大师!貌似给动大手术拉!呵呵~~
我自己试了下
发现其实只要把[color=Red]n=str(m)[/color]改成[color=Red]n=alltrim(str(m))[/color]就可以了
不过还是非常感谢那!!!
[tk11] [tk11] [tk11] [tk11] [tk11]

Tiger5392 发表于 2008-6-12 20:28

“貌似给动大手术拉!呵呵~~”就是要给你的程序动手术,你还别不服气,你的程序是有问题的。
你自己测试一下,你输入1221和1231看看结果

Tiger5392 发表于 2008-6-12 20:34

还有,你还可以自己测试一下,你输入 "abc" 【引号、a、b、c、引号】,看看结果

zzyymxt 发表于 2008-6-13 19:52

嗯嗯。。有道理!
果然有问题!
但是它显示的提示信息很明确的说是“输入数字”了呀,所以我想字符问题应该不用考虑了吧。。。
但前面一个问题,即1221,1231的问题出在哪里呢?
还有那个#是什么意思?
望解答!谢谢!


还有,补充一下,我可米有不服气的意思。。我是很虚心滴向大师求教哒!

zzyymxt 发表于 2008-6-13 22:30

我知道怎么做了。。谢谢!

页: [1]

编程论坛