主题:[讨论]这道简单的题我做错了吗?
lierenpascal
[专家分:0] 发布于 2007-07-24 17:51:00
编写程序求出下式中n的最大值:
2*2+4*4+6*6+8*8+……n*n<1500。
对于这道题我是运用循环和条件语句解答的。可是每次结果都显示为0,万分郁闷啊
下面是我的程序:
program thousand;
var
sum,i,n:integer;
begin
sum:=0;
for i:= 2 to n do
if i mod 2 = 0
then
sum:=sum+Sqr(i);
if sum<1500
then
write(n:6);
readln
end.
请大家给我纠正一下错误:
1.纠正错误者+10分。
2.给出新程序者+20分。
2.纠正错误者又给出新程序者+30分。
谢谢~!!
回复列表 (共13个回复)
沙发
Matodied [专家分:7560] 发布于 2007-07-24 19:04:00
你的n没赋值,值为0,所以:
FOR i:=2 TO n就等于FOR i:=2 TO 0,
所以循环根本没执行一次。
新程序:
VAR
sum, i, n: INTEGER;
BEGIN
sum := 0; i := 0;
REPEAT
i := i + 2;
sum := sum + SQR(i);
UNTIL sum >= 1500;
WRITELN(i - 2);
END.
板凳
bigchen [专家分:1940] 发布于 2007-07-24 19:13:00
var
n,s:integer;
begin
n:=0;s:=0;
while s<1500 do
begin
inc(n,2);
s:=s+n*n;
end;
dec(n,2);
writeln(n);
end.
3 楼
lierenpascal [专家分:0] 发布于 2007-07-24 19:49:00
inc和dec是什么意思?
4 楼
Matodied [专家分:7560] 发布于 2007-07-24 20:39:00
INC(x,y)表示x的值增加y,也就是x := x + y,INC(x)表示x := x + 1.
DEC(x,y)表示x的值减少y,也就是x := x - y,DEC(x)表示x := x - 1.
5 楼
cmy28 [专家分:380] 发布于 2007-07-30 16:23:00
你这程序………………无话可说!!
n还不知道你怎么就for i:=1 to n do 了??
应该是:n依次增加,每算一次,就判断是不是[color=FF0000]大于等于[/color]1500了
如果是,那就把[color=FF0000]n-2[/color](因为现在已经大于等于了,你要的是小于)打印出来,不是,就继续算下一个
还有,你不应该把n每次加一,在判断是不是偶数,这样太浪费时间,直接n加二不就行了??
程序:
var
n,sum:integer;
begin
n:=0;sum:=0;
repeat
begin
n:=n+2;
sum:=sum+sqr(n);
until sum>=1500;
writeln(n-2);
end.
6 楼
abcwuhang [专家分:1840] 发布于 2007-07-30 22:06:00
没得说了...
7 楼
jack.B [专家分:0] 发布于 2007-07-30 22:24:00
你要看N=???
8 楼
abcwuhang [专家分:1840] 发布于 2007-07-31 13:14:00
楼上:?
9 楼
cmy28 [专家分:380] 发布于 2007-08-01 11:01:00
给我分拉!![em7][em7]
10 楼
wtx412 [专家分:0] 发布于 2007-08-01 22:23:00
人渣呀
我来回复