大家帮我看看这Pascal的程序为什么会输出负数的?

[复制链接]
查看11 | 回复3 | 2010-12-16 21:45:18 | 显示全部楼层 |阅读模式
program a13;
vara,b,c,d:integer;

e:real;
begin

readln(a,b,c);

d:=a;

while not((a mod d=0)and(b mod d=0)and(c mod d=0))do d:=d-1;

e:=a*b*c/d/d;

writeln(d,' ',e:0:2)
readln;
end.
我输入82 46 98,输出2-5890.00我想知道为什么不是92414呢。大家帮我看看,谢谢。
那个分号是刚刚写漏了,可我的电脑显示的是负数啊,我输入4 6 8 就输出2 96.00,但这就输出负数了。还有一些会输出负数的如:146 680 460输出2 -2448.00为什么会这样呢,为什么有的是正数有的是负数呢?

回复

使用道具 举报

千问 | 2010-12-16 21:45:18 | 显示全部楼层
因为您是在16位编译器下,Integer是两个字节的,最大能表示的数是32767:)
回复

使用道具 举报

千问 | 2010-12-16 21:45:18 | 显示全部楼层
首先,你有一句没分号·····然后,我的电脑是正数 ‘2 92414.00’提醒一下,d是最小公倍数,a*b*c/d/d必定有整数解
回复

使用道具 举报

千问 | 2010-12-16 21:45:18 | 显示全部楼层
应该用var a,b,c,d:longint;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行