主题:两道课本上的题目,请高手帮忙编程!
pcmagic
[专家分:20] 发布于 2009-08-18 20:49:00
如标题所示,具体题目如下:
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]
最后更新于:2009-08-24 19:43:00
回复列表 (共10个回复)
沙发
1054122 [专家分:750] 发布于 2009-08-18 21:04:00
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
板凳
pcmagic [专家分:20] 发布于 2009-08-18 21:17:00
刚从网上学习了\(整除)和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 楼
moz [专家分:37620] 发布于 2009-08-19 00:38:00
使用乘方 ^ 符号进行运算,
所得结果是一个精度值(浮点数,是有小数点的,并不是精确的整数值)
有小量误差,它们的和也是一个浮点数,虽然误差极小,但也是存在的。
所以等式并不成立。
而整值之间使用乘号,所进行的运算是整值运算,所得值也是整数。
这个时候不存在误差,所以结果是成立的。
4 楼
phile [专家分:2310] 发布于 2009-08-19 12:56:00
同意
5 楼
pcmagic [专家分:20] 发布于 2009-08-20 21:08:00
回复3楼:
按照您的说法,这里^和*应该能通用,对不?
6 楼
gewenbo [专家分:450] 发布于 2009-08-20 21:32:00
moz说的对,pcmagic说错了。
QBasic并不能进行一些高精度的计算,比如10^600
7 楼
pcmagic [专家分:20] 发布于 2009-08-21 09:17:00
回复6楼:
这里的乘方运算并不大,最大的计算是9^3=729,而不是你形容的那么大!此时,为何不能用呢!?
8 楼
phile [专家分:2310] 发布于 2009-08-23 14:19:00
哈哈,就是小的数用^计算,也会出错!
9 楼
天天和和 [专家分:1420] 发布于 2009-08-23 18:09:00
是吗?
我怎么不知道
10 楼
phile [专家分:2310] 发布于 2009-08-24 13:29:00
比如
IF 3^3+1^3=28 THEN ?"Y" ELSE ?"N"
运行结果是N
理论上是Y
我来回复