回 帖 发 新 帖 刷新版面

主题:[讨论]这道简单的题我做错了吗?

编写程序求出下式中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个回复)

沙发

你的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.

板凳

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 楼


inc和dec是什么意思?

4 楼

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 楼

你这程序………………无话可说!!
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 楼

没得说了...

7 楼


你要看N=???

8 楼

楼上:?

9 楼


给我分拉!![em7][em7]

10 楼

人渣呀

我来回复

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