回 帖 发 新 帖 刷新版面

主题:两道课本上的题目,请高手帮忙编程!

如标题所示,具体题目如下:

1、编程求所有满足下面条件的3位自然数X:
X=百位数字^3+十位数字^3+个位数字^3             '^3表示立方

我的编程是:
cls
for I=1 to 9
for A=1 to I
for B=0 to I
for C=0 to I
X=A*100+B*10+C
If X=A^3+B^3+C^3 then print "X=";X             [color=FF0000]'把这句改为If X=A*A*A+B*B*B+C*C*C then print "X=";X就OK了!只是不理解为什么不能直接用乘方的计算方式来完成!?[/color]
next C
next B
next A
next I
end

可惜,运行后,无结果,不知道错在哪儿![color=FF0000]修改后,程序执行后结果与2楼的结果一致![/color][em12]

2、求这样一个四位自然数,它是一个完全平方数,且前两位相同,后两位也相同

这题的思路,我还在寻找中——刚学qbasic,彷徨![em11]

[color=FF0000]我已经完成了,编程代码如下:
cls
for A=1 to 9
for B=0 to 9
X=A*1000+A*100+B*10+B
if sqr(X)=fix(sqr(X)) then print "X=";X
next B
next A
end
运行后,也与二楼的结果相同!谢谢二楼的热心,你给了我莫大的帮助![/color][em2]
[color=0000FF][size=4]只是还有一点不明白——题1中为什么不能直接用乘方的计算方式来完成!?敬请高手解释,先行谢过了![/size][/color]

[size=4][color=FF00FF]见者有份,能加分的全都加分了![/color][/size]

回复列表 (共10个回复)

沙发

1.
CLS
FOR i = 100 TO 999
  g = i MOD 10
  s = i \ 10 MOD 10
  b = i \ 100
  IF i = g * g * g + s * s * s + b * b * b THEN PRINT "X ="; i
NEXT i
END
2.
CLS
FOR i = 1000 TO 9999
  g = i MOD 10
  s = i \ 10 MOD 10
  b = i \ 100 MOD 10
  q = i \ 1000
  IF SQR(i) = FIX(SQR(i)) AND q = s AND g = b THEN PRINT "X ="; i
NEXT i
END

板凳

刚从网上学习了\(整除)和mod(余数),明白2楼的编程过程了!只是不知道还有没有利用循环或分支语句完成它?[em8]刚学,囧!

2题中,有笔误吧!  IF SQR(i) = FIX(SQR(i)) AND q = s AND g = b THEN PRINT "X ="; i
应该是AND q = b AND s = g ,呵呵!

3 楼

使用乘方 ^ 符号进行运算,
所得结果是一个精度值(浮点数,是有小数点的,并不是精确的整数值)
有小量误差,它们的和也是一个浮点数,虽然误差极小,但也是存在的。
所以等式并不成立。

而整值之间使用乘号,所进行的运算是整值运算,所得值也是整数。
这个时候不存在误差,所以结果是成立的。

4 楼

同意

5 楼

回复3楼:

按照您的说法,这里^和*应该能通用,对不?

6 楼

moz说的对,pcmagic说错了。
QBasic并不能进行一些高精度的计算,比如10^600

7 楼


回复6楼:

这里的乘方运算并不大,最大的计算是9^3=729,而不是你形容的那么大!此时,为何不能用呢!?

8 楼

哈哈,就是小的数用^计算,也会出错!

9 楼

是吗?
我怎么不知道

10 楼

比如
IF 3^3+1^3=28 THEN ?"Y" ELSE ?"N"
运行结果是N
理论上是Y

我来回复

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