pascal题目我是菜鸟,各位大侠救我啊,我哪里写错了,关键是哪错了,重点不是答案

来源:百度知道 编辑:UC知道 时间:2024/06/20 23:31:06
某机关组织游泳比赛。将一堆西瓜分给前三名,把该堆西瓜中的一半又半个西瓜奖给第一名;剩下的一半又半个西瓜给第二名;把最后剩下的一半又半个西瓜给第三名,但每次分时并没切开任何一个西瓜,且刚好西瓜分完。问前三名各分到多少个西瓜。
prgram ex1
var
a,b,c:real;
d:integer;
begin
a:=d/2+1/2;
b:=(d-a)/2+1/2;
c:=(d-b)/2+1/2;
d:=a+b+c;
writeln('d='d);
end.
关键是哪错了,重点不是答案

你在计算a,b,c的时候d还没有赋值过,此时d还是等于0。因此你这样做是没有意义的。
可以这样改:
prgram ex1
var
a,b,c:real;
d:integer;
begin
for d:=1 to 1000 do
begin
a:=d/2+1/2;
b:=(d-a)/2+1/2;
c:=(d-b)/2+1/2;
if (a=trunc(a))and(b=trunc(b))and(c=trunc(c)) then break;
end;
writeln('d=',d);
end.

我也是这个观点,但是楼上的程序带有中文字符,而且程序一闪就没有了,于是我修改了字符,再加上了一个readln。程序如下:
program ex1;
var
a,b,c:real;
d:integer;
begin
for d:=1 to 1000 do
begin
a:=d/2+1/2;
b:=(d-a)/2+1/2;
c:=(d-b)/2+1/2;
if (a=trunc(a))and(b=trunc(b))and(c=trunc(c)) then break;
end;
writeln('d=',d);
readln;
end.

都不对吧 1/2的1哪来的???我也不知道!!!!但我运行了一下 错了!!!!!!!